Краткое руководство по диспетчеру пакетов DNF
Опубликовано: 2020-06-06DNF теперь является системой управления пакетами по умолчанию в большинстве дистрибутивов Linux на основе RPM.
DNF загружает пакеты из репозиториев, устанавливает, удаляет и обновляет пакеты. Он выполняет автоматическое разрешение зависимостей для пакетов, которые вы устанавливаете, обновляете или удаляете, и устанавливает все пакеты, необходимые для выполнения требований к зависимостям.
В Fedora он был менеджером пакетов по умолчанию, начиная с Fedora 22. В RHEL 8.x теперь он является менеджером пакетов по умолчанию.
DNF обеспечивает безопасное управление пакетами, включая проверку подписи GPG для пакетов, подписанных GPG. DNF не будет устанавливать пакеты, не подписанные правильным ключом для этого репозитория.
Для обратной совместимости в RHEL 8.x также есть команда 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>
Например, чтобы узнать, какой пакет предоставляет named, двоичный файл для 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>
Например, для просмотра пакетов в группе Security Tools:
$ 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.