[관련 게시물]
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
패키지 버전 관리
[패키지 업그레이드]
패키지 일반 업그레이드 : Upgrade / Update Update-To Upgrade-To
패키지 최소 업그레이드 : Upgrade-Minimal / Update-Minimal
[패키지 다운그레이드]
패키지 다운그레이드 : Downgrade
[패키지 업데이트 정보]
업데이트 권고 정보 : Updateinfo
비대화식 업데이트 확인 : Check-Update
Upgrade
시스템 내 모든 패키지 업그레이드
sudo dnf upgrade
사용 가능하고 종속성 문제를 해결할 수 있는 패키지를 최신 버전으로 업그레이드합니다.
단 보통의 경우, 종속성 문제를 패키지 교체나 업그레이드로 해결할 수 없다면 해당 패키지는 건너뛰게 됩니다.
[study@localhost ~]$ sudo dnf upgrade [sudo] study의 암호: CentOS-8 - AppStream 1.6 kB/s | 4.3 kB 00:02 CentOS-8 - AppStream 1.4 MB/s | 5.9 MB 00:04 CentOS-8 - Base 1.6 kB/s | 3.8 kB 00:02 CentOS-8 - Base 1.3 MB/s | 4.0 MB 00:03 CentOS-8 - Extras 579 B/s | 1.5 kB 00:02 CentOS-8 - Extras 1.2 kB/s | 2.1 kB 00:01 종속성이 해결되었습니다. ================================================================================ 꾸러미 아키텍처 버전 리포지토리 크기 ================================================================================ Installing: kernel x86_64 4.18.0-147.3.1.el8_1 BaseOS 1.5 M kernel-core x86_64 4.18.0-147.3.1.el8_1 BaseOS 25 M kernel-devel x86_64 4.18.0-147.3.1.el8_1 BaseOS 13 M kernel-modules x86_64 4.18.0-147.3.1.el8_1 BaseOS 22 M Upgrading: PackageKit x86_64 1.1.12-3.el8 AppStream 601 k PackageKit-command-not-found x86_64 1.1.12-3.el8 AppStream 27 k PackageKit-glib x86_64 1.1.12-3.el8 AppStream 141 k - 중략 - 종속성 설치: gnome-shell-extension-horizontal-workspaces noarch 3.32.1-10.el8 AppStream 25 k oddjob x86_64 0.34.4-7.el8 AppStream 83 k centos-gpg-keys noarch 8.1-1.1911.0.8.el8 BaseOS 11 k centos-repos x86_64 8.1-1.1911.0.8.el8 BaseOS 12 k libssh-config noarch 0.9.0-4.el8 BaseOS 18 k mozjs60 x86_64 60.9.0-3.el8 BaseOS 6.7 M python3-pip-wheel noarch 9.0.3-15.el8 BaseOS 1.2 M python3-setuptools-wheel noarch 39.2.0-5.el8 BaseOS 289 k 약한 의존성 설치하기: oddjob-mkhomedir x86_64 0.34.4-7.el8 AppStream 52 k 거래 요약 ================================================================================ 설치 13 꾸러미 업그레이드 592 꾸러미 총 다운로드 크기 : 890 M 이게 괜찮습니까 [y / N] : y - 중력 - 업그레이드 됨: PackageKit-1.1.12-3.el8.x86_64 PackageKit-command-not-found-1.1.12-3.el8.x86_64 PackageKit-glib-1.1.12-3.el8.x86_64 - 중력 - 설치됨: kernel-4.18.0-147.3.1.el8_1.x86_64 kernel-core-4.18.0-147.3.1.el8_1.x86_64 kernel-devel-4.18.0-147.3.1.el8_1.x86_64 - 중력 - 완료되었습니다! [study@localhost ~]$
특정 패키지 업그레이드
sudo dnf upgrade [패키지명]
지정한 각 패키지를 사용 가능한 최신 버전으로 업그레이드합니다.
필요한 경우, 종속성 패키지도 설치하거나 업그레이드합니다.
[study@localhost ~]$ sudo dnf upgrade git git-core [sudo] study의 암호: CentOS-8 - AppStream 1.8 kB/s | 4.3 kB 00:02 CentOS-8 - AppStream 1.7 MB/s | 5.9 MB 00:03 CentOS-8 - Base 1.4 kB/s | 3.8 kB 00:02 CentOS-8 - Base 965 kB/s | 4.0 MB 00:04 CentOS-8 - Extras 580 B/s | 1.5 kB 00:02 CentOS-8 - Extras 1.2 kB/s | 2.1 kB 00:01 종속성이 해결되었습니다. ================================================================================ 꾸러미 아키텍처 버전 리포지토리 크기 ================================================================================ Upgrading: git x86_64 2.18.2-1.el8_1 AppStream 186 k git-core x86_64 2.18.2-1.el8_1 AppStream 4.8 M git-core-doc noarch 2.18.2-1.el8_1 AppStream 2.3 M perl-Git noarch 2.18.2-1.el8_1 AppStream 77 k 거래 요약 ================================================================================ 업그레이드 4 꾸러미 총 다운로드 크기 : 7.3 M 이게 괜찮습니까 [y / N] : y 패키지 다운로드중: (1/4): git-2.18.2-1.el8_1.x86_64.rpm 168 kB/s | 186 kB 00:01 (2/4): perl-Git-2.18.2-1.el8_1.noarch.rpm 1.0 MB/s | 77 kB 00:00 (3/4): git-core-2.18.2-1.el8_1.x86_64.rpm 3.0 MB/s | 4.8 MB 00:01 (4/4): git-core-doc-2.18.2-1.el8_1.noarch.rpm 1.2 MB/s | 2.3 MB 00:01 -------------------------------------------------------------------------------- 합계 2.2 MB/s | 7.3 MB 00:03 경고: rpmdb: BDB2053 Freeing read locks for locker 0x3a: 6964/140627231388160 경고: rpmdb: BDB2053 Freeing read locks for locker 0x3c: 6964/140627231388160 트랜잭션 점검 실행 중 트랜잭션 검사가 성공했습니다. 트랜잭션 테스트 실행 중 트랜잭션 테스트가 완료되었습니다. 거래 실행 중 준비 중입니다 : 1/1 Upgrading : git-core-2.18.2-1.el8_1.x86_64 1/8 Upgrading : git-core-doc-2.18.2-1.el8_1.noarch 2/8 Upgrading : perl-Git-2.18.2-1.el8_1.noarch 3/8 Upgrading : git-2.18.2-1.el8_1.x86_64 4/8 정리 : git-2.18.1-3.el8.x86_64 5/8 정리 : git-core-doc-2.18.1-3.el8.noarch 6/8 정리 : perl-Git-2.18.1-3.el8.noarch 7/8 정리 : git-core-2.18.1-3.el8.x86_64 8/8 스크립틀릿 실행: git-core-2.18.1-3.el8.x86_64 8/8 확인 중 : git-2.18.2-1.el8_1.x86_64 1/8 확인 중 : git-2.18.1-3.el8.x86_64 2/8 확인 중 : git-core-2.18.2-1.el8_1.x86_64 3/8 확인 중 : git-core-2.18.1-3.el8.x86_64 4/8 확인 중 : git-core-doc-2.18.2-1.el8_1.noarch 5/8 확인 중 : git-core-doc-2.18.1-3.el8.noarch 6/8 확인 중 : perl-Git-2.18.2-1.el8_1.noarch 7/8 확인 중 : perl-Git-2.18.1-3.el8.noarch 8/8 업그레이드 됨: git-2.18.2-1.el8_1.x86_64 git-core-2.18.2-1.el8_1.x86_64 git-core-doc-2.18.2-1.el8_1.noarch perl-Git-2.18.2-1.el8_1.noarch 완료되었습니다! [study@localhost ~]$
특정 패키지를 지정한 버전으로 업그레이드
sudo dnf upgrade <package-nevr-specs>
패키지를 지정된 버전으로 업그레이드합니다.
[study@localhost ~]$ dnf info git CentOS-8 - AppStream 1.8 MB/s | 5.9 MB 00:03 CentOS-8 - Base 876 kB/s | 4.0 MB 00:04 CentOS-8 - Extras 571 B/s | 2.1 kB 00:03 설치된 패키지 이름 : git 버전 : 2.18.1 릴리즈 : 3.el8 아키텍처 : x86_64 크기 : 391 k 소스 : git-2.18.1-3.el8.src.rpm 리포지터리 : @System 레포에서 : AppStream 요약 : Fast Version Control System URL : https://git-scm.com/ 라이선스 : GPLv2 설명 : Git is a fast, scalable, distributed revision control system with : an unusually rich command set that provides both high-level : operations and full access to internals. : : The git rpm installs common set of tools which are usually using : with small amount of dependencies. To install all git packages, : including tools for integrating with other SCMs, install the : git-all meta-package. 사용 가능한 패키지 이름 : git 버전 : 2.18.2 릴리즈 : 1.el8_1 아키텍처 : x86_64 크기 : 186 k 소스 : git-2.18.2-1.el8_1.src.rpm 리포지터리 : AppStream 요약 : Fast Version Control System URL : https://git-scm.com/ 라이선스 : GPLv2 설명 : Git is a fast, scalable, distributed revision control system with : an unusually rich command set that provides both high-level : operations and full access to internals. : : The git rpm installs common set of tools which are usually using : with small amount of dependencies. To install all git packages, : including tools for integrating with other SCMs, install the : git-all meta-package. [study@localhost ~]$
위와 같이 git의 패키지 정보를 확인해봅시다. 시스템에는 버전 2.18.1이 설치되어 있고 저장소에는 버전 버전 2.18.2가 올라가 있어 업그레이드가 가능합니다.
[study@localhost ~]$ sudo dnf upgrade git-2.18.2 [sudo] study의 암호: 마지막 메타 데이터 만료 확인 : 0:02:53 전에 2020년 01월 21일 (화) 오후 04시 00분 26초. 종속성이 해결되었습니다. ================================================================================ 꾸러미 아키텍처 버전 리포지토리 크기 ================================================================================ Upgrading: git x86_64 2.18.2-1.el8_1 AppStream 186 k git-core x86_64 2.18.2-1.el8_1 AppStream 4.8 M git-core-doc noarch 2.18.2-1.el8_1 AppStream 2.3 M perl-Git noarch 2.18.2-1.el8_1 AppStream 77 k 거래 요약 ================================================================================ 업그레이드 4 꾸러미 총 다운로드 크기 : 7.3 M 이게 괜찮습니까 [y / N] :
[study@localhost ~]$ sudo dnf upgrade git-2.18.2-1.el8_1 마지막 메타 데이터 만료 확인 : 0:04:17 전에 2020년 01월 21일 (화) 오후 04시 00분 26초. 종속성이 해결되었습니다. ================================================================================ 꾸러미 아키텍처 버전 리포지토리 크기 ================================================================================ Upgrading: git x86_64 2.18.2-1.el8_1 AppStream 186 k git-core x86_64 2.18.2-1.el8_1 AppStream 4.8 M git-core-doc noarch 2.18.2-1.el8_1 AppStream 2.3 M perl-Git noarch 2.18.2-1.el8_1 AppStream 77 k 거래 요약 ================================================================================ 업그레이드 4 꾸러미 총 다운로드 크기 : 7.3 M 이게 괜찮습니까 [y / N] :
특정 버전을 지정할 때 위처럼 릴리즈 정보를 포함한 전체 버전 정보를 지정하여 업그레이드할 수도 있습니다.
sudo dnf upgrade [@모듈명]
dnf 모듈 업데이트 명령의 별명입니다.
Upgrade-Minimal
sudo dnf upgrade-minimal
각 패키지를 버그 수정 및 보안 문제 해결하는 수준에서 업그레이드합니다. 필요에 따라 종속성을 업그레이드합니다.
[study@localhost ~]$ sudo dnf upgrade-minimal [sudo] study의 암호: CentOS-8 - AppStream 1.6 kB/s | 4.3 kB 00:02 CentOS-8 - AppStream 1.3 MB/s | 5.9 MB 00:04 CentOS-8 - Base 1.4 kB/s | 3.8 kB 00:02 CentOS-8 - Base 879 kB/s | 4.0 MB 00:04 CentOS-8 - Extras 1.0 kB/s | 1.5 kB 00:01 CentOS-8 - Extras 727 B/s | 2.1 kB 00:02 보안 업데이트는 필요하지 않지만 596 업데이트가 제공됩니다. 종속성이 해결되었습니다. 할 것이 없음. 완료되었습니다! [study@localhost ~]$
sudo dnf upgrade-minimal [패키지명]
지정한 패키지를 버그 수정 및 보안 문제 해결하는 수준에서 업그레이드합니다. 필요에 따라 종속성을 업그레이드합니다.
Downgrade
sudo dnf downgrade [패키지명]
지정한 패키지를 사용 가능한 하위 버전들 중 가장 높은 버전으로 다운그레이드하는 명령입니다. 즉 활성화된 저장소들에서 지정한 패키지의 하위 버전이 제공되는 경우, 제공 버전 패키지들 중 가장 높은 하위 버전 패키지로 다운 그레이드됩니다.
참고
이 명령은 아직 불완전한 것으로 보고되고 있습니다. 따라서 가능하면 쓰지 않는 것을 권장합니다.
Updateinfo
dnf updateinfo [--summary | --list | --info] [availability 옵션] [패키지명]
업데이트 권고에 대한 정보를 출력하는 명령입니다.
출력 유형에 따라 DNF는 권고 사항 유형(--summary), 권고 사항 목록(--list) 또는 세부 정보(--info)의 개수만 표시합니다.
참고로 권고 사항 유형은 기본적으로 --summary 옵션을 사용하여 출력하지만 굳이 이 --summary 옵션을 적지 않고 생략하더라도 출력됩니다. 즉 dnf updateinfo [패키지명]만 적더라도 권고 사항 유형 정보가 출력됩니다.
availability 옵션은 --available, --installed, --updates, --all 같은 것들이 있습니다.
--available 옵션
설치된 패키지의 최신 버전에 대한 권고 사항
--installed 옵션
설치된 버전과 동등하거나 보다 낮은 버전에 대한 권고 사항
--updates 옵션
새 버전을 사용할 수 있는 설치된 패키지의 최신 버전에 대한 권고 사항
--all 옵션
설치된 패키지의 모든 버전에 대한 권고 사항
dnf updateinfo의 [availability 옵션]은 지정이 없는 경우, 기본값으로 --available 옵션이 적용됩니다.
대부분의 경우 --available 옵션과 --update 옵션은 동일한 결과를 출력하지만, 패키지와 저장소의 환경에 따라 달라질 수도 있습니다.
--available 옵션은 설치된 최신 버전의 패키지만을 고려합니다. 커널 패키지의 경우 (여러 버전을 동시에 설치할 수있는 경우) 현재 실행중인 커널 버전의 패키지도 추가됩니다.
참고
제가 위 updateinfo 명령을 실제로 테스트해 본 결과 그 어떤 정보도 확인할 수 없었습니다.
Check-Update
dnf check-update [패키지명]
지정된 패키지의 업데이트가 사용 가능한지 비대화식으로 확인합니다.
만약 패키지명 등 주어진 인수가 없다면 시스템에서 사용가능한 패키지가 있는지 확인합니다.
check-update 명령에 대한 출력 내용이 설치된 패키지에 대해 특정 최신 버전을 사용할 수 있다고 사용자에게 보고한다고 해서 dnf 패키지 관리자가 자동으로 해당 패키지를 업그레이드하지는 않습니다.
[study@localhost ~]$ dnf check-update git 마지막 메타 데이터 만료 확인 : 0:01:20 전에 2020년 01월 21일 (화) 오후 04시 39분 26초. git.x86_64 2.18.2-1.el8_1 AppStream [study@localhost ~]$