Краткое руководство по диспетчеру пакетов DNF

DNF — это система управления пакетами по умолчанию в большинстве дистрибутивов Linux на основе RPM.

DNF загружает пакеты из репозиториев, устанавливает, удаляет и обновляет пакеты. Он выполняет автоматическое разрешение зависимостей для пакетов, которые вы устанавливаете, обновляете или удаляете, и устанавливает все пакеты, необходимые для выполнения требований зависимостей.

В Fedora это менеджер пакетов по умолчанию, начиная с Fedora 22. В RHEL 8.x теперь это менеджер пакетов по умолчанию.

DNF  обеспечивает безопасное управление пакетами, включая проверку подписи GPG для пакетов, подписанных GPG. DNF не будет устанавливать пакеты, не подписанные правильным ключом для этого репозитория.

Для обратной совместимости в RHEL 8.x также есть команда YUM, хотя это ссылка на DNF.

Почему DNF?

DNF или Dandified YUM — это YUM следующего поколения. По сравнению с YUM, DNF имеет лучшее использование памяти, улучшенное управление зависимостями и возможность запуска с использованием как Python 2, так и Python 3.

Управление пакетами с DNF

У вас должны быть права суперпользователя, чтобы использовать команду DNF для установки, обновления или удаления пакета. Ниже приводится набор команд DNF, часто используемых системными администраторами.

Поиск пакета

Чтобы найти пакет, установленный или доступный во всех репозиториях,  используйте

$ sudo dnf search package_name

Например, чтобы найти пакет 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 package_name

Например, чтобы отобразить информацию о 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/named, и предлагает вам установить его.

Определение того, какому пакету принадлежит файл

Если вы знаете имя файла и хотите узнать, какой пакет предоставляет его (установлен или нет), используйте:

$ sudo dnf provides file_name

Например, чтобы найти, какой пакет предоставляет имя, двоичный файл для 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 package_name

Но будьте осторожны, 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 package_name

Например, чтобы просмотреть пакеты в группе «Средства безопасности»:

$ 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 package_group_name

Например, чтобы установить группу «Сетевые серверы»:

$ 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 package_name

Итак, чтобы удалить группу пакетов «Средства безопасности»:

$ 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 upgrade и dnf update имеют одинаковый эффект, но dnf upgrade рекомендуется к использованию.

Обновление одного пакета

Чтобы обновить один пакет, запустите:

$ sudo dnf upgrade package_name

Например, чтобы обновить пакет python:

$ sudo dnf upgrade python

Заключение

Изучение DNF может быть полезным, поскольку зачастую это самый быстрый способ выполнения задач системного администрирования.

Добавить комментарий