[Linux]패키지를 업데이트할 수 있는 2가지 방법(제외/롤백 포함)

dnf updatednf upgrade는 둘 다 리눅스 시스템에서 패키지를 업데이트하는 명령어입니다. 그러나 두 명령어 간에는 약간의 차이가 있습니다:

  1. dnf update: 기존에 설치된 모든 패키지를 최신 버전으로 업그레이드하면서, 필요하다면 새로운 패키지도 설치합니다.
  2. dnf upgrade: 현재 설치된 패키지를 최신 버전으로 업그레이드하지만, update와 달리 새로운 패키지를 설치하지는 않습니다.

일반적으로는 dnf update를 사용하는 것이 권장되며, 이 명령을 실행하기 전에 cache를 재구성하는 것은 좋은 방법입니다.
 
앞서 말씀드린 것처럼 dnf update은 모든 패키지를 최신 버전으로 업그레이드합니다. 그런데 시스템을 운영하다보면 특정 패키지는 업그레이드를 하면 안되는 경우가 발생합니다. 불행히도 dnf updatednf upgrade는 특정 패키지를 업데이트에서 제외하는 직접적인 옵션이 없습니다. 이런 경우에는 dnf versionlock 옵션을 사용할 수 있습니다.


아래 예시는 openssl 관련 패키지들를 제외하고 dnf update 명령을 사용하는 절차입니다.

[root@centos8 ~]# dnf -y install 'dnf-command(versionlock)' [root@centos8 ~]# rpm -qa | grep "^openssl" | sort
openssl-1.1.1k-6.el8.x86_64 openssl-libs-1.1.1k-6.el8.x86_64 openssl-pkcs11-0.4.10-2.el8.x86_64
[root@centos8 ~]# dnf versionlock openssl [root@centos8 ~]# dnf versionlock openssl-pkcs11 [root@centos8 ~]# dnf versionlock openssl-libs [root@centos8 ~]# dnf versionlock list
Last metadata expiration check: 0:52:55 ago on Tue 31 Oct 2023 12:59:58 PM KST. openssl-pkcs11-0:0.4.10-2.el8.* openssl-libs-1:1.1.1k-6.el8.* openssl-1:1.1.1k-6.el8.*
[root@centos8 ~]# dnf update
....... Complete!
[root@centos8 ~]# rpm -qa | grep "^openssl" | sort
openssl-1.1.1k-6.el8.x86_64 openssl-libs-1.1.1k-6.el8.x86_64 openssl-pkcs11-0.4.10-2.el8.x86_64

openssl 관련 패키지들을 제외하지 않고 다시 dnf update 명령을 실행하고 업데이트된 결과를 확인해 보겠습니다.

[root@centos8 ~]# dnf versionlock clear
Last metadata expiration check: 0:53:10 ago on Tue 31 Oct 2023 12:59:58 PM KST.
[root@centos8 ~]# dnf versionlock list
Last metadata expiration check: 0:53:22 ago on Tue 31 Oct 2023 12:59:58 PM KST.
[root@centos8 ~]# dnf update
Last metadata expiration check: 0:55:05 ago on Tue 31 Oct 2023 12:59:58 PM KST. Dependencies resolved. ========================================================================== Package Architecture Version Repository Size ========================================================================== Upgrading: openssl x86_64 1:1.1.1k-9.el8 baseos 737 k openssl-libs x86_64 1:1.1.1k-9.el8 baseos 1.5 M openssl-pkcs11 x86_64 0.4.10-3.el8 baseos 66 k Transaction Summary ========================================================================== Upgrade 3 Packages Total download size: 2.3 M Is this ok [y/N]: Upgraded: openssl-1:1.1.1k-9.el8.x86_64 openssl-libs-1:1.1.1k-9.el8.x86_64 openssl-pkcs11-0.4.10-3.el8.x86_64 Complete!
[root@centos8 ~]# rpm -qa | grep "^openssl" | sort
openssl-1.1.1k-9.el8.x86_64 openssl-libs-1.1.1k-9.el8.x86_64 openssl-pkcs11-0.4.10-3.el8.x86_64

dnf update는 트랜잭션 기반으로 동작하며, yum update 명령과는 달리 업데이트된 이후에는도 롤백하는 기능이 내장되어 있습니다. dnf 패키지 매니저는 history 명령을 사용하여 이전 트랜잭션을 확인하고 rollback을 통해 특정 트랜잭션으로 시스템을 되돌릴 수 있습니다.

[root@centos8 ~]# dnf history list
ID | Command line | Date and time | Action(s) | Altered --------------------------------------------------------------------------------------------------- 8 | update | 2023-10-31 13:55 | Upgrade | 3 EE 7 | update | 2023-10-31 13:33 | I, U | 621 EE 6 | -y install dnf-command(versionlock) | 2023-10-31 13:24 | Install | 1 5 | -y remove dnf-command(versionlock) | 2023-10-31 13:10 | Removed | 1 4 | install dnf-command(versionlock) | 2023-10-31 10:12 | I, U | 3 3 | install iscsi-initiator-utils | 2023-10-23 15:17 | Upgrade | 2 2 | -y install nmap | 2023-10-19 11:15 | I, U | 2 1 | | 2023-10-19 09:21 | Install | 1379 EE
[root@centos8 ~]# dnf history undo 8
....... Downgraded: openssl-1:1.1.1k-6.el8.x86_64 openssl-libs-1:1.1.1k-6.el8.x86_64 openssl-pkcs11-0.4.10-2.el8.x86_64 Complete!
[root@centos8 ~]# rpm -qa | grep "^openssl" | sort
openssl-1.1.1k-6.el8.x86_64 openssl-libs-1.1.1k-6.el8.x86_64 openssl-pkcs11-0.4.10-2.el8.x86_64

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다