리눅스/CentOS

DNF 패키지 버전 관리 - 패키지 업그레이드(Upgrade), 최소 업그레이드(Upgrade-Minimal), 다운그레이드(Downgrade), 업데이트 정보(Updateinfo), 업데이트 확인(Check-Update)

씨실과 날실 2020. 1. 23. 09:00

[관련 게시물]

2020/01/13 - [리눅스/CentOS] - DNF 명령 - DNF 명령 연재 목록

2020/01/18 - [리눅스/CentOS] - DNF 패키지 기본 관리 명령 1 - 패키지 설치(install), 제거(remove), 재설치(reinstall), 자동 제거(autoremove), 패키지 제거와 설치 동시 수행(swap)

2020/01/19 - [리눅스/CentOS] - DNF 패키지 기본 관리 명령 2 - 패키지 정보(Info), 목록(List), 종속성 목록(Deplist), 문제점 검사(Check), 그룹 관련 명령(Group), 작업 표시(Mark), 검색(Search), 조건 검색(Provides)

2020/01/23 - [리눅스/CentOS] - DNF 패키지 버전 관리 - 패키지 업그레이드(Upgrade), 최소 업그레이드(Upgrade-Minimal), 다운그레이드(Downgrade), 업데이트 정보(Updateinfo), 업데이트 확인(Check-Update)

2020/01/27 - [리눅스/CentOS] - DNF 명령 관리 - 명령 별명(Alias), 대화식 쉘(Shell), 도움말(Help)

2020/01/30 - [리눅스/CentOS] - DNF 트랜잭션 관리 - 트랜잭션 이력(History)

2020/02/01 - [리눅스/CentOS] - DNF 저장소 관리 - 저장소 정보(Repolist), 저장소 내 임시 파일 정리(Clean), 저장소 메타 데이터 캐시 생성(Makecache), 저장소 쿼리 명령(Repoquery), 저장소 패키지 명령(Repository-Packages)

2020/02/03 - [리눅스/CentOS] - DNF 배포판 동기화 - 배포판 동기화(Distro-Sync)

2020/02/05 - [리눅스/CentOS] - DNF 모듈 관리 - 모듈 관리(Module)




안내

앞으로 상당 기간에 걸쳐 RPM 기반 리눅스 배포판을 위한 패키지 관리도구 DNF에 대해 연재하게 되었습니다.

이 연재는 레드햇 계열 리눅스를 처음 접하는 분들을 위해 위 사이트의 내용 중 초심자가 꼭 알야야 하거나 또는 알면 유용한 것들을 선별하여 내용을 작성하였습니다.

잘못된 정보가 있다면 댓글로 제보해주시면 감사하겠습니다.

연재 항목은 다음과 같습니다.

2020/01/13 - [리눅스/CentOS] - DNF 명령 - DNF 명령 연재 목록

2020/01/18 - [리눅스/CentOS] - DNF 패키지 기본 관리 명령 1 - 패키지 설치(install), 제거(remove), 재설치(reinstall), 자동 제거(autoremove), 패키지 제거와 설치 동시 수행(swap)

2020/01/19 - [리눅스/CentOS] - DNF 패키지 기본 관리 명령 2 - 패키지 정보(Info), 목록(List), 종속성 목록(Deplist), 문제점 검사(Check), 그룹 관련 명령(Group), 작업 표시(Mark), 검색(Search), 조건 검색(Provides)

2020/01/23 - [리눅스/CentOS] - DNF 패키지 버전 관리 - 패키지 업그레이드(Upgrade), 최소 업그레이드(Upgrade-Minimal), 다운그레이드(Downgrade), 업데이트 정보(Updateinfo), 업데이트 확인(Check-Update)

2020/01/27 - [리눅스/CentOS] - DNF 명령 관리 - 명령 별명(Alias), 대화식 쉘(Shell), 도움말(Help)

2020/01/30 - [리눅스/CentOS] - DNF 트랜잭션 관리 - 트랜잭션 이력(History)

2020/02/01 - [리눅스/CentOS] - DNF 저장소 관리 - 저장소 정보(Repolist), 저장소 내 임시 파일 정리(Clean), 저장소 메타 데이터 캐시 생성(Makecache), 저장소 쿼리 명령(Repoquery), 저장소 패키지 명령(Repository-Packages)

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)

2020/02/24 - [리눅스/CentOS] - 유용한 DNF 플러그인

2020/02/26 - [리눅스/CentOS] - DNF와 YUM의 차이점



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을 예로 들어 봅시다.

위와 같이 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 ~]$