패키지 관리하기

패키지 관리하기

dnf 사용법

기본 사용법

dnf 는 yum을 대체하는 패키지 매니저로 성능과 플러그인, 의존성 검사등 에서 해결 못한 비효율적인 부분을 해결한 1:1 대체품입니다.

설치

dnf install myPackage

삭제

$ dnf remove myPackage

검색 및 쿼리

패키지 검색

dnf search  myPackage

패키지 리스트

dnf list all
$ dnf list xorg\*
Last metadata expiration check: 2:46:06 ago on Tue 06 Aug 2024 01:17:36 PM KST.
Installed Packages
xorg-x11-drv-evdev.x86_64                                         2.10.6-12.el9                           @AppStream
xorg-x11-drv-fbdev.x86_64                                         0.5.0-11.el9                            @AppStream
xorg-x11-drv-libinput.x86_64                                      1.0.1-3.el9                             @AppStream
xorg-x11-drv-vmware.x86_64                                        13.2.1-18.el9                           @AppStream
xorg-x11-drv-wacom.x86_64                                         1.0.0-1.el9                             @AppStream
xorg-x11-drv-wacom-serial-support.x86_64                          1.0.0-1.el9                             @AppStream
xorg-x11-fonts-ISO8859-1-100dpi.noarch                            7.5-33.el9                              @appstream
xorg-x11-fonts-Type1.noarch                                       7.5-33.el9                              @appstream
xorg-x11-server-Xorg.x86_64                                       1.20.11-19.el9                          @appstream
xorg-x11-server-Xwayland.x86_64                                   22.1.9-2.el9                            @appstream
xorg-x11-server-common.x86_64                                     1.20.11-19.el9                          @appstream
xorg-x11-server-utils.x86_64                                      7.7-44.el9                              @AppStream
xorg-x11-utils.x86_64                                             7.5-40.el9                              @AppStream
.........

시스템에 설치된 패키지 리스트를 검색하는 방법

$ dnf list installed kernel*
Installed Packages
kernel.x86_64                                            5.14.0-162.6.1.el9_1                             @baseos  
kernel.x86_64                                            5.14.0-284.25.1.el9_2                            @updates 
kernel.x86_64                                            5.14.0-362.8.1.el9_3                             @baseos  
kernel-abi-stablelists.noarch                            5.14.0-362.8.1.el9_3                             @baseos  
kernel-core.x86_64                                       5.14.0-162.6.1.el9_1                             @baseos  
kernel-core.x86_64                                       5.14.0-284.25.1.el9_2                            @updates 
kernel-core.x86_64                                       5.14.0-362.8.1.el9_3                             @baseos  
kernel-devel.x86_64                                      5.14.0-362.8.1.el9_3                             @appstream
kernel-headers.x86_64                                    5.14.0-362.8.1.el9_3                             @appstream
kernel-modules.x86_64                                    5.14.0-162.6.1.el9_1                             @baseos  
kernel-modules.x86_64                                    5.14.0-284.25.1.el9_2                            @updates 
kernel-modules.x86_64                                    5.14.0-362.8.1.el9_3                             @baseos  
kernel-modules-core.x86_64                               5.14.0-284.25.1.el9_2                            @updates 
kernel-modules-core.x86_64                               5.14.0-362.8.1.el9_3                             @baseos  
kernel-rpm-macros.noarch                                 185-13.el9                                       @appstream
kernel-srpm-macros.noarch                                1.0-13.el9                                       @appstream
kernel-tools.x86_64                                      5.14.0-362.8.1.el9_3                             @baseos  
kernel-tools-libs.x86_64                                 5.14.0-362.8.1.el9_3                             @baseos
$ dnf list available kernel*

그룹 관리

$ dnf grouplist

업데이트 확인

$ dnf check-update

rpm 사용법

기본 기능

rpm query

$ rpm -qi myPackage
$ rpm -qp myPackage
$ rpm -qf myPackage
$ rpm -q --queryformat  "%{name}\t%{version}\n"

validation

rpm 기능 중 rpm db 내용을 기준으로 시스템의 파일을 검사하는 기능이 있습니다. 특정 패키지 명을 지정하여 해당 패키지가 원본 rpm 설치될 당시와 변경된 파일을 간단히 검사 할 수도 있습니다.

아래와 같이 -Va 옵션을 주면 시스템 전체 패키지중 변경된 파일 리스트를 가져올 수 있습니다.

$ rpm -Va
.M....... g /var/lib/colord/mapping.db
.M....... g /var/lib/colord/storage.db
.M....... /var/lib/fprint
Unsatisfied dependencies for rhc-1:0.2.1-5.el9.x86_64:
insights-client is needed by (installed) rhc-1:0.2.1-5.el9.x86_64
missing /etc/pki/rpm-gpg/RPM-GPG-KEY-Nacel-9
missing /etc/pki/rpm-gpg/RPM-GPG-KEY-Nacel-9-Testing
missing c /etc/yum.repos.d/nacel.repo
.......T. /boot/efi/EFI/BOOT/BOOTX64.EFI
.......T. /boot/efi/EFI/BOOT/fbx64.efi
.......T. /boot/efi/EFI/redhat/BOOTX64.CSV
.......T. /boot/efi/EFI/redhat/mmx64.efi
.......T. /boot/efi/EFI/redhat/shim.efi
.......T. /boot/efi/EFI/redhat/shimx64-redhat.efi
.......T. /boot/efi/EFI/redhat/shimx64.efi
S.5....T. c /var/lib/unbound/root.key
.M....G.. /var/log/gdm
S.5....T. c /etc/chrony.conf
.......T. /opt/rh/gcc-toolset-12/root/usr/bin/ld.bfd
....L.... /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/plugin/annobin.so
....L.... /opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13/plugin/annobin.so.0.0.0
S.5....T. c /etc/texlive/web2c/updmap.cfg
.M....... g /usr/share/texlive/texmf-dist/web2c/fmtutil.cnf
S.5....T. /usr/share/locale/ko/LC_MESSAGES/rpm.mo
....L.... c /etc/pam.d/fingerprint-auth
....L.... c /etc/pam.d/password-auth
....L.... c /etc/pam.d/postlogin
....L.... c /etc/pam.d/smartcard-auth
....L.... c /etc/pam.d/system-auth
.M....... g /run/libvirt/common
.......T. c /etc/selinux/targeted/contexts/customizable_types
S.5....T. c /etc/selinux/targeted/contexts/files/file_contexts.subs
.M....... g /run/libvirt/interface
.M....... g /run/libvirt/nodedev
.M....... g /run/libvirt/secrets
.....UG.. g /var/run/avahi-daemon
.M...UG.. g /run/libvirt/qemu/dbus
.....UG.. g /run/libvirt/qemu/passt
.....UG.. g /run/libvirt/qemu/slirp
S.5....T. c /etc/cups/cups-browsed.conf
S.5....T. c /etc/tlog/tlog-rec-session.conf
S.5....T. c /var/lib/nfs/etab
.....UG.. g /var/lib/nfs/statd/state
.M....... g /etc/cni/net.d
.M....... g /var/lib/plymouth/boot-duration
S.5....T. c /etc/xrdp/xrdp.ini
.M....... g /var/log/xrdp-sesman.log
.M....... g /var/log/xrdp.log
S.5....T. c /etc/dhcp/dhcpd.conf

각 필드 항목이 뜻하는 바는 아래와 같습니다.

심볼 설명
S 파일 사이즈 변경
M 퍼미션등 모드 변경된경
5 md5 체크섬
D 디바이스 파일의 major/minor 넘버가 다른 경우
L readLink 패스 미스매치
U 파일 owner가 변경된경
G 파일 그룹이 변경된경우
t 파일의 시간이 다른경우
c config 파일

아래의 경우는 파일이 사라졌다는 뜻이며

missing /etc/pki/rpm-gpg/RPM-GPG-KEY-Nacel-9

파일사이즈, 파일 체크썸, 시간 이 변경되었으며, config 파일이라는 뜻입니다.

S.5....T. c /etc/tlog/tlog-rec-session.conf

다만 rpm 으로 설치된 파일이 아닌 경우 검사 대상이 아니고, 시스템의 rpmdb 파일 내용이 변조 되었을 경우 무결성 보장이 되지 않습니다.

보안 목적으로 파일 무결성을 보장 받으려면 다른 솔루션을 사용 하시는 것을 추천 드립니다.