DNF 패키지 관리자에 대한 빠른 가이드
게시 됨: 2020-06-06DNF는 현재 대부분의 RPM 기반 Linux 배포판에서 기본 패키지 관리 시스템입니다.
DNF는 리포지토리에서 패키지를 다운로드하고 패키지를 설치, 제거 및 업데이트합니다. 설치, 업데이트 또는 제거 중인 패키지에 대해 자동 종속성 해결을 수행하고 종속성 요구 사항을 충족하는 데 필요한 모든 패키지를 설치합니다.
Fedora에서는 Fedora 22 이후 기본 패키지 관리자였습니다. RHEL 8.x에서는 이제 기본 패키지 관리자입니다.
DNF는 GPG 서명 패키지에서 GPG 서명 확인을 활성화하여 안전한 패키지 관리를 제공합니다. DNF는 해당 리포지토리의 올바른 키로 서명되지 않은 패키지를 설치하지 않습니다.
이전 버전과의 호환성을 위해 RHEL 8.x에는 DNF에 대한 링크이지만 YUM 명령도 있습니다.
왜 DNF인가?
DNF 또는 Dandified YUM은 차세대 YUM입니다. YUM과 비교하여 DNF는 메모리 활용도가 더 높고 종속성 관리가 개선되었으며 Python 2 및 Python 3을 모두 사용하여 실행할 수 있습니다.
DNF를 사용한 패키지 관리
DNF 명령을 사용하여 패키지를 설치, 업데이트 또는 제거하려면 수퍼유저 권한이 있어야 합니다. 다음은 시스템 관리자가 자주 사용하는 DNF 명령 세트입니다.
패키지 검색
모든 리포지토리에서 설치되었거나 사용 가능한 패키지를 검색하려면 다음을 사용 하십시오.
$ sudo dnf search <em>package_name</em>
예를 들어 패키지 Nmap을 검색하려면 다음을 수행하십시오.
$ sudo dnf search nmap
Last metadata expiration check: 0:05:14 ago on Tue 02 Jun 2020 08:38:09 PM UTC. ==================================== Name Exactly Matched: nmap ===================================== nmap.x86_64 : Network exploration tool and security scanner =================================== Name & Summary Matched: nmap ==================================== nmap-ncat.x86_64 : Nmap's Netcat replacement
패키지 나열
설치되고 사용 가능한 모든 패키지 목록을 보려면 다음을 수행하십시오.
$ sudo dnf list all
Installed Packages GConf2.x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-tui.x86_64 1:1.22.8-4.el8 ...
설치된 모든 패키지를 나열하려면:
$ sudo dnf list installed
Installed Packages NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-tui.x86_64 1:1.22.8-4.el8 @anaconda PackageKit.x86_64 1.1.12-4.el8 @AppStream PackageKit-glib.x86_64 1.1.12-4.el8 @AppStream WALinuxAgent.noarch 2.2.38-1.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms abattis-cantarell-fonts.noarch 0.0.25-4.el8 @AppStream acl.x86_64 2.2.53-1.el8 @anaconda ...
사용 가능한 모든 패키지를 나열하려면 다음을 수행하십시오.
$ sudo dnf list available
Last metadata expiration check: 1:15:10 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Available Packages CUnit.i686 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms CUnit.x86_64 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms CUnit-devel.i686 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms CUnit-devel.x86_64 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms ...
예를 들어 사용 가능한 모든 MySQL 패키지를 나열하려면 다음과 같이 하십시오.
$ sudo dnf list available "mysql*"
Last metadata expiration check: 1:17:04 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Available Packages mysql.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-common.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-devel.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-errmsg.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-libs.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-server.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-test.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
패키지 정보 표시
패키지에 대한 정보를 표시하려면:
$ sudo dnf info <em>package_name </em>
예를 들어, httpd 서버에 대한 정보를 표시하려면:
$ sudo dnf info httpd
Last metadata expiration check: 0:15:04 ago on Mon 01 Jun 2020 11:23:11 PM UTC. Available Packages Name : httpd Version : 2.4.37 Release : 21.module+el8.2.0+5008+cca404a3 Architecture : x86_64 Size : 1.4 M Source : httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.src.rpm Repository : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Summary : Apache HTTP Server URL : https://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server.
패키지 설치
단일 패키지 설치
단일 패키지와 설치되지 않은 모든 종속 항목을 설치하려면 다음을 수행하십시오.
$ sudo dnf install package_name
예를 들어 Nginx를 설치하려면 다음과 같이 하십시오.
$ sudo dnf install nginx
Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: nginx x86_64 1:1.14.1-9.module+el8.0.0+4108+af250afe rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k Installing dependencies: gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k jbigkit-libs x86_64 2.1-14.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 55 k ..
이렇게 하면 Nginx와 설치되지 않은 모든 종속성 요구 사항이 설치됩니다.
여러 패키지 설치
이 명령에 패키지 이름을 추가하여 여러 패키지를 설치할 수도 있습니다. 예를 들어 Nginx, PHP 및 MySQL 서버를 설치하려면 다음을 입력합니다.
$ sudo dnf install nginx php mysql-server
Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: mysql-server x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms 22 M nginx x86_64 1:1.14.1-9.module+el8.0.0+4108+af250afe rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k php x86_64 7.2.24-1.module+el8.2.0+4601+7c76a223 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.5 M Installing dependencies: apr x86_64 1.6.3-9.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 125 k apr-util x86_64 1.6.1-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 105 k gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k httpd x86_64 2.4.37-21.module+el8.2.0+5008+cca404a3 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.4 M httpd-filesystem noarch 2.4.37-21.module+el8.2.0+5008+cca404a3 ...
바이너리 파일 이름으로 패키지 설치
설치할 바이너리 파일의 이름은 알지만 패키지 이름은 모른다면 그것만으로도 해당 패키지를 설치할 수 있다.

예를 들어 다음을 입력하는 경우:
$ sudo dnf install /usr/sbin/named
Last metadata expiration check: 1:21:25 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Dependencies resolved. ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Installing: bind x86_64 32:9.11.13-5.el8_2 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 2.1 M Transaction Summary ===================================================================================================== Install 1 Package Total download size: 2.1 M Installed size: 4.5 M Is this ok [y/N]:
DNF는 이름이 지정된 /usr/sbin/
을 제공하는 패키지를 검색하고 찾아 설치하라는 메시지를 표시합니다.
파일을 소유한 패키지 찾기
파일 이름을 알고 있고 이를 제공하는 패키지(설치 여부)를 찾으려면 다음을 사용하십시오.
$ sudo dnf provides <em>file_name</em>
예를 들어 어떤 패키지가 이름을 제공하는지 찾으려면 DNS 서버용 바이너리를 사용합니다.
$ sudo dnf provides named
Last metadata expiration check: 1:27:30 ago on Mon 01 Jun 2020 11:23:11 PM UTC. bind-32:9.11.4-16.P2.el8.x86_64 : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) : server Repo : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Matched from: Filename : /usr/sbin/named
패키지 제거
패키지를 제거하려면:
sudo dnf remove <em>package_name</em>
그러나 조심하십시오. DNF는 패키지에 의존하는 패키지도 제거하지 않고는 패키지를 제거할 수 없습니다. 패키지 nmap을 제거하려면 다음을 사용하십시오.
$ sudo dnf remove nmap Dependencies resolved. ===================================================================================================== Package Architecture Version Repository Size ===================================================================================================== Removing: nmap x86_64 2:7.70-5.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 24 M Transaction Summary ===================================================================================================== Remove 1 Package Freed space: 24 M Is this ok [y/N]:
패키지 그룹 관리
패키지 그룹은 밀접하게 관련되어 있고 공통 목적을 제공하는 패키지 모음입니다. 패키지 그룹을 설치하면 패키지 세트가 설치되어 많은 시간이 절약됩니다.
모든 패키지 그룹 나열
모든 패키지 그룹을 나열하려면 다음을 수행하십시오.
$ sudo dnf group list
Available Environment Groups: Server with GUI Server Workstation Custom Operating System Virtualization Host Installed Environment Groups: Minimal Install Installed Groups: Security Tools Container Management Available Groups: Legacy UNIX Compatibility Development Tools Scientific Support .NET Core Development Graphical Administration Tools Headless Management RPM Development Tools Network Servers System Tools Smart Card Support
그룹의 모든 패키지 나열
그룹의 모든 패키지를 나열하려면 다음을 수행하십시오.
$ sudo dnf group info <em>package_name</em>
예를 들어 보안 도구 그룹에서 패키지를 보려면 다음과 같이 하십시오.
$ sudo dnf group info “security tools”
Group: Security Tools Description: Security tools for integrity and trust verification. Default Packages: scap-security-guide Optional Packages: aide hmaccalc openscap openscap-engine-sce openscap-utils scap-security-guide-doc scap-workbench tpm-quote-tools tpm-tools tpm2-tools trousers
패키지 그룹 설치
그룹을 설치하면 그룹의 모든 패키지가 설치됩니다. 패키지 그룹을 설치하려면 다음을 사용하십시오.
sudo dnf group install <em>package_group_name</em>
예를 들어 "네트워크 서버" 그룹을 설치하려면:
$ sudo dnf group install “Network Servers”
Last metadata expiration check: 1:40:14 ago on Wed 03 Jun 2020 05:53:11 PM UTC. Dependencies resolved. =========================================================================================== Package Architecture Version Repository Size =========================================================================================== Installing Groups: Network Servers Transaction Summary =========================================================================================== Is this ok [y/N]:
패키지 그룹 제거
패키지 그룹을 제거하려면:
sudo dnf remove <em>package_name</em>
따라서 "보안 도구" 패키지 그룹을 제거하려면:
$ sudo dnf group remove "security tools"
Dependencies resolved. ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Removing: scap-security-guide noarch 0.1.48-7.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 182 M Removing unused dependencies: GConf2 x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 6.3 M libxslt x86_64 1.1.32-4.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 734 k openscap x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 58 M openscap-scanner x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 137 k xml-common noarch 0.6.3-50.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 78 k Removing Groups: Security Tools Transaction Summary ===================================================================================================== Remove 6 Packages Freed space: 247 M Is this ok [y/N]:
패키지 업데이트
모든 패키지 업데이트
모든 패키지와 해당 종속성을 업데이트하려면 다음을 사용할 수 있습니다.
$ sudo dnf upgrade
Last metadata expiration check: 1:09:31 ago on Tue 02 Jun 2020 08:38:09 PM UTC. Dependencies resolved. Nothing to do. Complete!
이렇게 하면 설치할 수 있는 모든 업데이트가 설치됩니다. dnf 업그레이드 와 dnf 업데이트는 모두 동일한 효과가 있지만 dnf 업그레이드가 선호됩니다.
단일 패키지 업데이트
단일 패키지를 업데이트하려면 다음을 실행하십시오.
$ sudo dnf upgrade package_name
예를 들어 Python 패키지를 업데이트하려면 다음을 수행하십시오.
$ sudo dnf upgrade python
결론
DNF를 배우는 것은 시스템 관리 작업을 수행하는 가장 빠른 방법인 경우가 많기 때문에 보람을 느낄 수 있습니다. RHEL 8 학습에 관심이 있는 경우 이 Udemy 과정을 확인할 수 있습니다.