[관련 게시물]
2020/01/13 - [리눅스/CentOS] - DNF 명령 - DNF 명령 연재 목록
2020/01/27 - [리눅스/CentOS] - DNF 명령 관리 - 명령 별명(Alias), 대화식 쉘(Shell), 도움말(Help)
2020/01/30 - [리눅스/CentOS] - DNF 트랜잭션 관리 - 트랜잭션 이력(History)
2020/02/03 - [리눅스/CentOS] - DNF 배포판 동기화 - 배포판 동기화(Distro-Sync)
2020/02/05 - [리눅스/CentOS] - DNF 모듈 관리 - 모듈 관리(Module)
안내
앞으로 상당 기간에 걸쳐 RPM 기반 리눅스 배포판을 위한 패키지 관리도구 DNF에 대해 연재하게 되었습니다.
이 연재는 레드햇 계열 리눅스를 처음 접하는 분들을 위해 위 사이트의 내용 중 초심자가 꼭 알야야 하거나 또는 알면 유용한 것들을 선별하여 내용을 작성하였습니다.
잘못된 정보가 있다면 댓글로 제보해주시면 감사하겠습니다.
연재 항목은 다음과 같습니다.
2020/01/13 - [리눅스/CentOS] - DNF 명령 - DNF 명령 연재 목록
2020/01/27 - [리눅스/CentOS] - DNF 명령 관리 - 명령 별명(Alias), 대화식 쉘(Shell), 도움말(Help)
2020/01/30 - [리눅스/CentOS] - DNF 트랜잭션 관리 - 트랜잭션 이력(History)
2020/02/03 - [리눅스/CentOS] - DNF 배포판 동기화 - 배포판 동기화(Distro-Sync)
2020/02/05 - [리눅스/CentOS] - DNF 모듈 관리 - 모듈 관리(Module)
2020/02/09 - [리눅스/CentOS] - DNF 명령줄 옵션 연재 목록
2020/02/11 - [리눅스/CentOS] - DNF 명령줄 분류별 옵션 - [01] 패키지 관리
2020/02/13 - [리눅스/CentOS] - DNF 분류별 명령줄 옵션 - [02] 환경 설정
2020/02/15 - [리눅스/CentOS] - DNF 분류별 명령줄 옵션 - [03] 부가 기능
2020/02/17 - [리눅스/CentOS] - DNF 분류별 명령줄 옵션 - [04] 정보 확인
2020/02/20 - [리눅스/CentOS] - DNF 환경 설정[구성] 파일(dnf.conf) [main] 섹션 옵션
2020/02/22 - [리눅스/CentOS] - DNF 저장소 옵션(Repo Options)과 저장소 변수(Repo Variables)
dnf 명령 목록
Alias
Auto Remove
Check
Check-Update
Clean
Deplist
Distro-Sync
Distribution-Syncronization
Downgrade
Erase
Group
Groups
Help
History
Info
Install
List
Localinstall
Makecache
Mark
Module
Provides
Reinstall
Remove
Repoinfo
Repolist
Repoquery
Repo-Pkgs
Repository-Packages
Search
Shell
Swap
Update
Updateinfo
Update-Minimal
Upgrade-Minimal
Update-To
Upgrade-To
DNF 명령 관리
[DNF 명령 관리]
명령 별칭 정의 : Alias
대화식 쉘 명령 : Shell
명령 도움말 : Help
Alias
alias 명령으로 작성된 모든 새로운 별명은 /etc/dnf/aliases.d/ 디렉터리 안의 설정 파일인 USER.conf 파일 안의 [aliases] 섹션에 정의됩니다.
만약 기존 명령과 충돌이 있을 경우 USER.conf 안의 값이 높은 우선 순위를 가지며 구성 파일의 나머지 부분은 알파벳 순서대로 우선 순위를 가집니다.
USER.conf 파일 예시
[main]
enabled = True
[aliases]
in = install
rm = remove
upgrade = \upgrade --skip-broken --disableexcludes=all --obsoletes
DNF 명령 별명 설정 파일에는 위처럼 [main] 섹션이 있는데 여기에 별명 제어 활성화 여부를 설정하는 구문이 있습니다. 기본적으로 True(활성화)가 적용됩니다.
각 설정 파일에 대해 개별적으로 설정하거나 ALIASES.conf 파일을 생성하여 모든 별칭에 대해 전역적으로 설정할 수 있습니다.
dnf 명령의 별명 목록 확인
dnf alias list
[study@localhost ~]$ dnf alias list Alias in='in' Alias rm='rm' [study@localhost ~]$
dnf 명령의 새 별명 등록
sudo dnf alias add [명령의 새 별명]=[dnf 명령어]
study@localhost ~]$ sudo dnf alias add in=install [sudo] study의 암호: Aliases added: in [study@localhost ~]$
study@localhost ~]$ sudo dnf alias add rm=remove Aliases added: rm [study@localhost ~]$
추가된 새 별명 확인
[study@localhost ~]$ sudo dnf alias list Alias in='in' Alias rm='rm' [study@localhost ~]$
새 별명 명령 작동 여부 확인
[study@localhost ~]$ sudo dnf in synaptic CentOS-8 - AppStream 1.7 kB/s | 4.3 kB 00:02 CentOS-8 - Base 1.4 kB/s | 3.9 kB 00:02 CentOS-8 - Extras 640 B/s | 1.5 kB 00:02 인수와 일치하는 항목 없음 : synaptic 오류: 경기를 찾을 수 없습니다. [study@localhost ~]$ sudo dnf in mc 마지막 메타 데이터 만료 확인 : 0:00:18 전에 2020년 01월 08일 (수) 오전 11시 29분 07초. 종속성이 해결되었습니다. ================================================================================ 꾸러미 아키텍처 버전 리포지토리 크기 ================================================================================ Installing: mc x86_64 1:4.8.19-9.el8 AppStream 1.9 M 거래 요약 ================================================================================ 설치 1 꾸러미 총 다운로드 크기 : 1.9 M 설치 크기 : 6.8 M 이게 괜찮습니까 [y / N] :
dnf 명령의 등록된 별명 삭제
sudo dnf alias delete [삭제할 새 별명]
[study@localhost ~]$ sudo dnf alias delete in Aliases deleted: in [study@localhost ~]$
옵션을 추가한 명령어 추가
sudo dnf alias add [새 별명 명령]="\[명령] [--옵션 1] [--옵션 2] [--옵션 2]"
[study@localhost ~]$ sudo dnf alias add update="\update --skip-broken --disableexcludes=all --obsoletes" [sudo] study의 암호: Aliases added: upgrade [study@localhost ~]$
위 새 별명 명령은 기존의 단순한 upgrade 명령을 세가지 옵션을 추가한 명령으로 바꾼 것입니다.
--skip-broken
트랜잭션에서 문제를 일으키는 패키지를 제거하여 문제를 해결
--disableexcludes=all
모든 구성 파일 제외 비활성화
--obsoletes
지정된 패키지의 종속성이 더 이상 필요하지 않은지 확인하고 제거
Alias 명령에 대해 처음 설명할 때 만약 기존 명령과 충돌이 있을 경우 USER.conf 안의 값이 높은 우선 순위를 가진다고 설명했습니다. 따라서 위의 경우 같은 upgrade 명령을 사용하더라도 옵션이 추가된 명령이 실행됩니다.
Shell
sudo dnf [options] shell [filename]
DNF를 한 번 실행하는 동안 여러 명령을 수행 할 수있는 대화식 쉘을 여는 명령입니다.
>config [conf-option] [value]
구성 옵션을 요청된 값으로 설정하십시오. 값이 없으면 현재 값을 인쇄합니다.
>repo [list|enable|disable] [repo-id]
list : 목록 리포지토리 및 상태
enable : 저장소 사용
disable : 저장소 비활성화
>transaction [list|reset|solve|run]
목록 : 거래 내용 확인 및 나열
재설정 : 거래를 재설정
실행 : 트랜잭션 해결 및 실행
구성 설정
[study@localhost ~]$ sudo dnf shell [sudo] study의 암호: 마지막 메타 데이터 만료 확인 : 0:17:03 전에 2020년 01월 10일 (금) 오후 06시 20분 22초. > config config arg [값] arg : debuglevel, errorlevel, obsoletes, gpgcheck, assumeyes, exclude, repo_id.gpgcheck, repo_id.exclude 값이 지정되지 않으면 현재 값을 인쇄합니다. 값이 주어지면 값을 설정합니다. > config gpgcheck gpgcheck: True > config gpgcheck false > config gpgcheck gpgcheck: False > exit 쉘을 떠나기 [study@localhost ~]$
위 과정을 풀어서 설명하면 다음과 같습니다.
$ sudo dnf shell : 대화식 쉘 실행
> config : 확인할 수 있는 설정 인수 확인
> config gpgcheck : gpgcheck 설정값 확인
> config gpgcheck false : gpgcheck 설정값을 false로 변경
> exit : 대화식 쉘 나가기
저장소 설정
[study@localhost ~]$ sudo dnf shell [sudo] study의 암호: CentOS-8 - AppStream 1.6 kB/s | 4.3 kB 00:02 CentOS-8 - AppStream 1.4 MB/s | 6.0 MB 00:04 CentOS-8 - Base 1.4 kB/s | 3.8 kB 00:02 CentOS-8 - Base 841 kB/s | 4.0 MB 00:04 CentOS-8 - Extras 607 B/s | 1.5 kB 00:02 CentOS-8 - Extras 557 B/s | 2.1 kB 00:03 > repo list Repo ID 레포 이름 상태 AppStream CentOS-8 - AppStream 5,001 BaseOS CentOS-8 - Base 1,784 extras CentOS-8 - Extras 3 > repo list --all Repo ID 레포 이름 상태 AppStream CentOS-8 - AppStream 사용: 5,001 AppStream-source CentOS-8 - AppStream Sources 사용 않음 BaseOS CentOS-8 - Base 사용: 1,784 BaseOS-source CentOS-8 - BaseOS Sources 사용 않음 PowerTools CentOS-8 - PowerTools 사용 않음 base-debuginfo CentOS-8 - Debuginfo 사용 않음 c8-media-AppStream CentOS-AppStream-8 - Media 사용 않음 c8-media-BaseOS CentOS-BaseOS-8 - Media 사용 않음 centosplus CentOS-8 - Plus 사용 않음 centosplus-source CentOS-8 - Plus Sources 사용 않음 cr CentOS-8 - cr 사용 않음 extras CentOS-8 - Extras 사용: 3 extras-source CentOS-8 - Extras Sources 사용 않음 fasttrack CentOS-8 - fasttrack 사용 않음 > repo enable PowerTools centosplus CentOS-8 - PowerTools 754 kB/s | 2.0 MB 00:02 CentOS-8 - Plus 36 kB/s | 570 kB 00:15 마지막 메타 데이터 만료 확인 : 0:00:01 전에 2020년 01월 27일 (월) 오후 03시 57분 22초. > repo list Repo ID 레포 이름 상태 AppStream CentOS-8 - AppStream 5,001 BaseOS CentOS-8 - Base 1,784 PowerTools CentOS-8 - PowerTools 1,499 centosplus CentOS-8 - Plus 18 extras CentOS-8 - Extras 3 > repo disable centosplus 마지막 메타 데이터 만료 확인 : 0:01:27 전에 2020년 01월 27일 (월) 오후 03시 57분 06초. > repo list Repo ID 레포 이름 상태 AppStream CentOS-8 - AppStream 5,001 BaseOS CentOS-8 - Base 1,784 PowerTools CentOS-8 - PowerTools 1,499 extras CentOS-8 - Extras 3 > exit 쉘을 떠나기 [study@localhost ~]$
$ sudo dnf shell : 대화식 쉘 실행
> repo list : 활성화된 저장소 확인
> repo list --all : 모든 저장소 확인
> repo enable PowerTools centosplus : PowerTools와 centosplus 저장소 활성화
> repo disable centosplus : centosplus 저장소 비활성화
> exit : 대화식 쉘 나가기
Help
dnf help [명령어]
모든 명령에 대한 도움말 텍스트를 표시합니다.
명령 이름이 제공되면 해당 특정 명령에 대한 도움말 만 표시합니다.
[study@localhost ~]$ dnf help usage: dnf [options] COMMAND 주요 명령 목록 : alias List or create command aliases autoremove 원래 종속물로 설치된 모든 불필요한 패키지 제거 check packagedb에서 문제가 있는지 확인하십시오. check-update 사용 가능한 패키지 업그레이드 확인 clean 캐시 된 데이터 제거 deplist 패키지의 의존성을 나열하고 패키지를 제공하는 패키지 distro-sync 설치된 패키지를 최신 버전과 동기화한다. downgrade 패키지 다운 그레이드 group 표시하거나 사용하십시오. help 유용한 메시지 표시 history 표시 또는 사용, 거래 내역 info 패키지 또는 패키지 그룹에 대한 세부 정보 표시 install 시스템에 패키지를 설치하십시오. list 패키지 또는 패키지 그룹 나열 makecache 메타 데이터 캐시를 생성한다. mark 설치된 패키지를 사용자가 설치 한 것으로 표시하거나 해제하십시오. module 모듈과 상호 작용하십시오. provides 주어진 값을 제공하는 패키지 찾기 reinstall 패키지 다시 설치 remove 시스템에서 패키지를 제거합니다. repolist 구성된 소프트웨어 리포지토리를 표시합니다. repoquery 키워드와 일치하는 패키지 검색 repository-packages 지정된 저장소의 모든 패키지 위에 명령을 실행합니다. search 주어진 문자열에 대한 패키지 세부 사항 검색 shell 대화 형 DNF 셸 실행 swap 하나의 스펙을 제거하고 설치하기위한 대화 형 dnf mod 실행 updateinfo 패키지에 관한 권고 표시 upgrade 시스템에서 패키지를 업그레이드하십시오. upgrade-minimal 업그레이드하지만 시스템에 영향을 미치는 문제를 수정하는 '최신'패키지 일치 만 플러그인 명령리스트 : builddep Install build dependencies for package or spec file changelog Show changelog data of packages config-manager dnf 구성 옵션 및 저장소 관리 copr Copr 저장소와 상호 작용하십시오. debug-dump 설치된 rpm 패키지에 대한 정보를 파일에 덤프하십시오. debug-restore 디버그 덤프 파일에 기록 된 패키지 복원 debuginfo-install debuginfo 패키지 설치 download 현재 디렉토리에 패키지 다운로드 needs-restarting 다시 시작해야하는 업데이트 된 바이너리 결정 playground 놀이터 저장소와 상호 작용하십시오. repoclosure 저장소에 대한 확인되지 않은 종속성 목록 표시 repodiff List differences between two sets of repositories repograph 도트 형식의 전체 패키지 종속성 그래프 출력 repomanage rpm 패키지 디렉토리 관리 reposync 원격 저장소에서 모든 패키지를 다운로드하십시오. 선택적 인수: -c [config file], --config [config file] 구성 파일 위치 -q, --quiet 조용한 작동 -v, --verbose 자세한 동작 --version DNF 버전 표시 및 종료 --installroot [path] 설치 루트 설정 --nodocs 문서를 설치하지 않는다. --noplugins 모든 플러그인 사용 중지 --enableplugin [plugin] 플러그인을 이름으로 활성화 --disableplugin [plugin] 이름별로 플러그인 사용 중지 --releasever RELEASEVER 가치를 무시하다 $releasever 설정 및 repo 파일에서 --setopt SETOPTS 임의의 구성 및 저장소 옵션 설정 --skip-broken 패키지를 건너 뛰어 디플 솔 문제 해결 -h, --help, --help-cmd show 명령 도움말 --allowerasing 종속성을 해결하기 위해 설치된 패키지 지우기 허용 -b, --best 트랜잭션에서 사용 가능한 최상의 패키지 버전을 사용해보십시오. --nobest do not limit the transaction to the best candidate -C, --cacheonly 시스템 캐시에서 완전히 실행하고, 캐시를 업데이트하지 않습니다. -R [minutes], --randomwait [minutes] 최대 명령 대기 시간 -d [debug level], --debuglevel [debug level] 디버깅 출력 레벨 --debugsolver 자세한 해결 결과를 파일로 덤프합니다. --showduplicates repos에있는 중복 목록을 목록 / 검색 명령에 표시합니다. -e ERRORLEVEL, --errorlevel ERRORLEVEL 오류 출력 레벨 --obsoletes 패키지가 정보, 목록 및 리포 눅스에 대해 사용하지 않는 업그레이드 또는 표시 기능을 위해 dnf의 처리 논리를 사용하지 못하게합니다. --rpmverbosity [debug level name] rpm 용 디버깅 출력 레벨 -y, --assumeyes 모든 질문에 대해 자동으로 대답하십시오. --assumeno 모든 질문에 대해 자동으로 대답합니다. --enablerepo [repo] --disablerepo [repo] --repo [repo], --repoid [repo] id 나 glob로 특정 리포지토리를 활성화 할 수 있습니다. 여러 번 지정할 수 있습니다. --enable, --set-enabled enable repos with config-manager command (automatically saves) --disable, --set-disabled disable repos with config-manager command (automatically saves) -x [package], --exclude [package], --excludepkgs [package] 패키지를 이름이나 glob로 제외합니다. --disableexcludes [repo], --disableexcludepkgs [repo] excludepkgs 사용 중지 --repofrompath [repo,path] 레이블 및 추가 저장소의 경로는 여러 번 지정할 수 있습니다. --noautoremove 더 이상 사용되지 않는 종속성 제거 사용 안 함 --nogpgcheck disable gpg signature checking (if RPM policy allows) --color COLOR 색상 사용 여부 제어 --refresh 명령을 실행하기 전에 만료 된 메타 데이터 설정 -4 IPv4 주소로만 해결 -6 IPv6 주소로만 해결 --destdir DESTDIR, --downloaddir DESTDIR 패키지를 복사 할 디렉토리를 설정하십시오. --downloadonly 다운로드 패키지 만 --comment COMMENT 거래에 의견을 추가하십시오. --bugfix 버그 수정 관련 패키지를 업데이트에 포함 시키십시오. --enhancement 업데이트 관련 향상 패키지 포함 --newpackage 새 패키지 관련 패키지를 업데이트에 포함하십시오. --security 업데이트에 보안 관련 패키지 포함 --advisory ADVISORY, --advisories ADVISORY 업데이트에서 주어진 권고를 수정하는 데 필요한 패키지를 포함하십시오. --bzs BUGZILLA 업데이트에서 주어진 BZ를 수정하는 데 필요한 패키지를 포함하십시오. --cves CVES 업데이트에서 주어진 CVE를 수정하는 데 필요한 패키지를 포함하십시오 --sec-severity {Critical,Important,Moderate,Low}, --secseverity {Critical,Important,Moderate,Low} 업데이트에서 심각도와 일치하는 보안 관련 패키지를 포함합니다. --forcearch ARCH 아키텍처의 사용을 강요하십시오 [study@localhost ~]$
[study@localhost ~]$ dnf help install usage: dnf install [-c [config file]] [-q] [-v] [--version] [--installroot [path]] [--nodocs] [--noplugins] [--enableplugin [plugin]] [--disableplugin [plugin]] [--releasever RELEASEVER] [--setopt SETOPTS] [--skip-broken] [-h] [--allowerasing] [-b | --nobest] [-C] [-R [minutes]] [-d [debug level]] [--debugsolver] [--showduplicates] [-e ERRORLEVEL] [--obsoletes] [--rpmverbosity [debug level name]] [-y] [--assumeno] [--enablerepo [repo]] [--disablerepo [repo] | --repo [repo]] [--enable | --disable] [-x [package]] [--disableexcludes [repo]] [--repofrompath [repo,path]] [--noautoremove] [--nogpgcheck] [--color COLOR] [--refresh] [-4] [-6] [--destdir DESTDIR] [--downloadonly] [--comment COMMENT] [--bugfix] [--enhancement] [--newpackage] [--security] [--advisory ADVISORY] [--bzs BUGZILLA] [--cves CVES] [--sec-severity {Critical,Important,Moderate,Low}] [--forcearch ARCH] 꾸러미 [꾸러미 ...] 시스템에 패키지를 설치하십시오. optional arguments: -b, --best 트랜잭션에서 사용 가능한 최상의 패키지 버전을 사용해보십시오. --nobest do not limit the transaction to the best candidate --disablerepo [repo] --repo [repo], --repoid [repo] id 나 glob로 특정 리포지토리를 활성화 할 수 있습니다. 여러 번 지정할 수 있습니다. --enable, --set-enabled enable repos with config-manager command (automatically saves) --disable, --set-disabled disable repos with config-manager command (automatically saves) 선택적 인수: -c [config file], --config [config file] 구성 파일 위치 -q, --quiet 조용한 작동 -v, --verbose 자세한 동작 --version DNF 버전 표시 및 종료 --installroot [path] 설치 루트 설정 --nodocs 문서를 설치하지 않는다. --noplugins 모든 플러그인 사용 중지 --enableplugin [plugin] 플러그인을 이름으로 활성화 --disableplugin [plugin] 이름별로 플러그인 사용 중지 --releasever RELEASEVER 가치를 무시하다 $releasever 설정 및 repo 파일에서 --setopt SETOPTS 임의의 구성 및 저장소 옵션 설정 --skip-broken 패키지를 건너 뛰어 디플 솔 문제 해결 -h, --help, --help-cmd show 명령 도움말 --allowerasing 종속성을 해결하기 위해 설치된 패키지 지우기 허용 -C, --cacheonly 시스템 캐시에서 완전히 실행하고, 캐시를 업데이트하지 않습니다. -R [minutes], --randomwait [minutes] 최대 명령 대기 시간 -d [debug level], --debuglevel [debug level] 디버깅 출력 레벨 --debugsolver 자세한 해결 결과를 파일로 덤프합니다. --showduplicates repos에있는 중복 목록을 목록 / 검색 명령에 표시합니다. -e ERRORLEVEL, --errorlevel ERRORLEVEL 오류 출력 레벨 --obsoletes 패키지가 정보, 목록 및 리포 눅스에 대해 사용하지 않는 업그레이드 또는 표시 기능을 위해 dnf의 처리 논리를 사용하지 못하게합니다. --rpmverbosity [debug level name] rpm 용 디버깅 출력 레벨 -y, --assumeyes 모든 질문에 대해 자동으로 대답하십시오. --assumeno 모든 질문에 대해 자동으로 대답합니다. --enablerepo [repo] -x [package], --exclude [package], --excludepkgs [package] 패키지를 이름이나 glob로 제외합니다. --disableexcludes [repo], --disableexcludepkgs [repo] excludepkgs 사용 중지 --repofrompath [repo,path] 레이블 및 추가 저장소의 경로는 여러 번 지정할 수 있습니다. --noautoremove 더 이상 사용되지 않는 종속성 제거 사용 안 함 --nogpgcheck disable gpg signature checking (if RPM policy allows) --color COLOR 색상 사용 여부 제어 --refresh 명령을 실행하기 전에 만료 된 메타 데이터 설정 -4 IPv4 주소로만 해결 -6 IPv6 주소로만 해결 --destdir DESTDIR, --downloaddir DESTDIR 패키지를 복사 할 디렉토리를 설정하십시오. --downloadonly 다운로드 패키지 만 --comment COMMENT 거래에 의견을 추가하십시오. --bugfix 버그 수정 관련 패키지를 업데이트에 포함 시키십시오. --enhancement 업데이트 관련 향상 패키지 포함 --newpackage 새 패키지 관련 패키지를 업데이트에 포함하십시오. --security 업데이트에 보안 관련 패키지 포함 --advisory ADVISORY, --advisories ADVISORY 업데이트에서 주어진 권고를 수정하는 데 필요한 패키지를 포함하십시오. --bzs BUGZILLA 업데이트에서 주어진 BZ를 수정하는 데 필요한 패키지를 포함하십시오. --cves CVES 업데이트에서 주어진 CVE를 수정하는 데 필요한 패키지를 포함하십시오 --sec-severity {Critical,Important,Moderate,Low}, --secseverity {Critical,Important,Moderate,Low} 업데이트에서 심각도와 일치하는 보안 관련 패키지를 포함합니다. --forcearch ARCH 아키텍처의 사용을 강요하십시오 [study@localhost ~]$