Использование DNF для управления программными пакетами

DNF — это инструмент Linux, используемый для управления программными пакетами RPM. DNF может запрашивать информацию о программном пакете, получать программные пакеты из указанной библиотеки программного обеспечения, автоматически обрабатывать зависимости для установки или удаления программных пакетов, а также обновлять систему до последней доступной версии.

ПРИМЕЧАНИЕ.
— DNF полностью совместим с YUM и предоставляет совместимые с YUM командные строки и API для расширений и подключаемых модулей.
— Для использования DNF вам нужны права администратора. Все команды в этой главе должны выполняться администратором.

Настройка DNF#

Файл конфигурации DNF#

Основной файл конфигурации DNF — /etc/dnf/dnf.conf — состоит из двух частей:

  • В основном разделе main файла хранятся глобальные настройки DNF.

  • В разделе репозитория repository этого файла хранятся настройки источника программного обеспечения. Вы можете добавить в файл один или несколько разделов repository.

Кроме того, в каталоге /etc/yum.repos.d хранится один или несколько файлов источника репозитория, определяющих разные репозитории.

Вы можете настроить источник программного обеспечения, либо настроив файл /etc/dnf/dnf.conf напрямую, либо настроив файл REPO в каталоге /etc/yum.repos.d.

Настройка раздела main#

Файл /etc/dnf/dnf.conf содержит раздел main. Ниже приведен пример файла конфигурации.

[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True

Ниже указаны типовые параметры.

Таблица 1. Описание параметров раздела main

Настройка раздела repository#

Раздел repository позволяет настроить репозитории источника программного обеспечения openEuler. Имя каждого репозитория должно быть уникальным. В противном случае могут возникнуть конфликты. Вы можете настроить источник программного обеспечения, либо настроив файл /etc/dnf/dnf.conf напрямую, либо настроив файл REPO в каталоге /etc/yum.repos.d.

  • Настройка файла /etc/dnf/dnf.conf

    Ниже приведен пример минимальной конфигурации раздела [repository].

    [repository]
    name=repository_name
    baseurl=repository_url
    

    ПРИМЕЧАНИЕ.
    openEuler предоставляет онлайн-источник образов по адресу https://repo.openeuler.org/ . Например, если версия openEuler 21.03 — aarch64, для baseurl можно указать https://repo.openeuler.org/openEuler-21.03/OS/aarch64/ .

    Ниже указаны типовые параметры.

    Таблица 2. Описание параметров раздела repository

  • Настройка файла REPO в каталоге /etc/yum.repos.d Система openEuler предоставляет несколько источников репозитория для пользователей в сети. Подробнее об источниках репозитория см. в разделе installing-the-os.md.html.

    Например, выполните следующую команду от имени пользователя root, чтобы добавить источник репозитория openeuler в файл openEuler.repo.

    # vi /etc/yum.repos.d/openEuler.repo
    
    [OS]
    name=openEuler-$releasever - OS
    baseurl=https://repo.openeuler.org/openEuler-21.03/OS/$basearch/
    enabled=1
    gpgcheck=1
    gpgkey=https://repo.openeuler.org/openEuler-21.03/OS/$basearch/RPM-GPG-KEY-openEuler
    

    ПРИМЕЧАНИЕ.

    • enabled указывает, включать ли репозиторий источника программного обеспечения. Значением может быть 1 или 0. Значение по умолчанию 1 указывает, что репозиторий источника программного обеспечения включен. — gpgkey — открытый ключ, используемый для проверки подписи.

Отображение текущей конфигурации#

  • Чтобы отобразить сведения о текущей конфигурации, выполните следующую команду:

    dnf config-manager --dump
    
  • Чтобы отобразить конфигурацию источника программного обеспечения, запросите идентификатор репозитория:

    dnf repolist
    

    Выполните следующую команду, чтобы отобразить конфигурацию источника программного обеспечения с соответствующим идентификатором. В данной команде repository обозначает идентификатор репозитория.

    dnf config-manager --dump repository
    
  • Для отображения всех соответствующих конфигураций можно использовать глобальное регулярное выражение.

    dnf config-manager --dump glob_expression
    

Создание локального репозитория программного обеспечения#

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

  1. Установите программный пакет createrepo. Выполните следующую команду от имени пользователя root:

    dnf install createrepo
    
  2. Скопируйте необходимые программные пакеты в каталог, например /mnt/local_repo/.

  3. Выполните следующую команду, чтобы создать источник программного обеспечения:

    createrepo /mnt/local_repo
    

Добавление, включение и отключение источников программного обеспечения#

В этом разделе описано, как добавить, включить и отключить репозиторий источника программного обеспечения с помощью команды dnf config-manager.

Добавление источника программного обеспечения#

Чтобы определить новый репозиторий программного обеспечения, вы можете добавить раздел repository в файл /etc/dnf/dnf.conf или добавить файл REPO в каталог /etc/yum.repos.d/. Рекомендуется добавить файл REPO. Каждый источник программного обеспечения имеет свой собственный файл REPO. Ниже описано, как добавить файл REPO.

Чтобы добавить такой источник в систему, выполните следующую команду от имени пользователя root. После выполнения команды в каталоге /etc/yum.repos.d/ создается соответствующий файл REPO. В данной команде repository_url обозначает адрес источника репозитория. Дополнительные сведения см. в таблице 2 .

dnf config-manager --add-repo repository_url

Включение репозитория программного обеспечения#

Чтобы включить источник программного обеспечения, выполните следующую команду от имени пользователя root. В данной команде repository обозначает идентификатор репозитория в новом файле REPO. Можно выполнить команду dnf repolist, чтобы запросить идентификатор репозитория.

dnf config-manager --set-enable repository

Для включения всех соответствующих источников программного обеспечения можно также использовать глобальное регулярное выражение. В данной команде glob_expression обозначает регулярное выражение, используемое для сопоставления нескольких идентификаторов репозитория.

dnf config-manager --set-enable glob_expression

Отключение репозитория программного обеспечения#

Чтобы отключить источник программного обеспечения, выполните следующую команду от имени пользователя root:

dnf config-manager --set-disable repository

Для отключения всех соответствующих источников программного обеспечения можно также использовать глобальное регулярное выражение.

dnf config-manager --set-disable glob_expression

Управление программным пакетом#

DNF позволяет запрашивать, устанавливать и удалять программные пакеты.

Поиск программных пакетов#

Вы можете выполнить поиск нужного пакета RPM по его имени, сокращению или описанию. Команда выглядит следующим образом:

dnf search term

Ниже приведен пример.

$   dnf search httpd
========================================== N/S matched: httpd ==========================================
httpd.aarch64 : Apache HTTP Server
httpd-devel.aarch64 : Development interfaces for the Apache HTTP server
httpd-manual.noarch : Documentation for the Apache HTTP server
httpd-tools.aarch64  : Tools for use with the Apache HTTP Server
libmicrohttpd.aarch64  : Lightweight library for embedding a webserver in applications
mod_auth_mellon.aarch64  : A SAML 2.0 authentication module for the Apache Httpd Server
mod_dav_svn.aarch64  : Apache httpd module for Subversion server

Перечисление программных пакетов#

Чтобы вывести список всех установленных и доступных пакетов RPM в системе, выполните следующую команду:

dnf list all

Чтобы вывести определенный пакет RPM в системе, выполните следующую команду:

dnf list glob_expression...

Ниже приведен пример.

$ dnf list httpd
Available Packages
httpd.aarch64              2.4.34-8.h5.oe1           Local

Отображение информации о пакете RPM#

Чтобы просмотреть информацию об одном или нескольких пакетах RPM, выполните следующую команду:

dnf info package_name...

Ниже приведен пример команды:

$ dnf info httpd
Available Packages
Name        : httpd
Version     : 2.4.34
Release     : 8.h5.oe1
Arch        : aarch64
Size        : 1.2 M
Repo        : Local
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.

Установка пакета RPM#

Чтобы установить программный пакет и все его зависимости, которые не были установлены ранее, выполните следующую команду от имени пользователя root:

dnf install package_name

Вы также можете добавить имена программных пакетов для одновременной установки нескольких программных пакетов. Добавьте параметр strict=False в файл конфигурации /etc/dnf/dnf.conf и выполните команду dnf, чтобы добавить –setopt=strict=0. Выполните следующую команду от имени пользователя root:

dnf install package_name package_name... --setopt=strict=0

Ниже приведен пример.

# dnf install httpd

ПРИМЕЧАНИЕ.
Если установка пакета RPM завершается сбоем, см. раздел Сбой установки, вызванный конфликтом программных пакетов, конфликтом файлов или отсутствием программного пакета .

Загрузка программных пакетов#

Чтобы загрузить программный пакет с помощью DNF, выполните следующую команду от имени пользователя root:

dnf download package_name

Если вам нужно загрузить неустановленные пакеты зависимостей, добавьте –resolve. Команда выглядит следующим образом:

dnf download --resolve package_name

Ниже приведен пример.

# dnf download --resolve httpd

Удаление программного пакета#

Чтобы удалить программный пакет и связанные с ним зависимые программные пакеты, выполните следующую команду от имени пользователя root:

dnf remove package_name...

Ниже приведен пример.

# dnf remove totem

Управление группами программных пакетов#

Набор программных пакетов — это группа программных пакетов, служащих общей цели, например набор системных инструментов. Вы можете использовать DNF для установки или удаления групп программных пакетов, повышая эффективность работы.

Перечисление групп программных пакетов#

Для вывода количества всех установленных групп программных пакетов, доступных групп и доступных групп среды в системе можно использовать параметр summary. Команда выглядит следующим образом:

dnf groups summary

Ниже приведен пример.

# dnf groups summary
Last metadata expiration check: 0:11:56 ago on Sat 17 Aug 2019 07:45:14 PM CST.
Available Groups: 8

Чтобы вывести список всех групп программных пакетов и их идентификаторов, выполните следующую команду:

dnf group list

Ниже приведен пример.

# dnf group list
Last metadata expiration check: 0:10:32 ago on Sat 17 Aug 2019 07:45:14 PM CST.
Available Environment Groups:
   Minimal Install
   Custom Operating System
   Server
Available Groups:
   Development Tools
   Graphical Administration Tools
   Headless Management
   Legacy UNIX Compatibility
   Network Servers
   Scientific Support
   Security Tools
   System Tools

Отображение информации о группе программных пакетов#

Чтобы вывести список обязательных и необязательных пакетов, содержащихся в группе программных пакетов, выполните следующую команду:

dnf group info glob_expression...

Ниже приведен пример отображения информации о средствах разработки (Development Tools).

# dnf group info "Development Tools"
Last metadata expiration check: 0:14:54 ago on Wed 05 Jun 2019 08:38:02 PM CST.

Group: Development Tools
 Description: A basic development environment.
 Mandatory Packages:
   binutils
   glibc-devel
   make
   pkgconf
   pkgconf-m4
   pkgconf-pkg-config
   rpm-sign
 Optional Packages:
   expect

Установка группы программных пакетов#

Каждая группа программных пакетов имеет собственное имя и соответствующий идентификатор группы. Для установки программного пакета можно использовать имя или идентификатор группы программных пакетов.

Чтобы установить группу программных пакетов, выполните следующую команду от имени пользователя root:

dnf group install group_name
dnf group install groupid

Например, чтобы установить группу программных пакетов Development Tools, выполните следующую команду:

# dnf group install "Development Tools"
# dnf group install development

Удаление группы программных пакетов#

Чтобы удалить группу программных пакетов, можно использовать имя или идентификатор группы для выполнения следующей команды от имени пользователя root:

dnf group remove group_name
dnf group remove groupid

Например, чтобы удалить группу программных пакетов Development Tools, выполните следующую команду:

# dnf group remove "Development Tools"
# dnf group remove development

Проверка и обновление#

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

Проверка на наличие обновлений#

Чтобы вывести список всех доступных на данный момент обновлений, выполните следующую команду:

dnf check-update

Ниже приведен пример.

# dnf check-update
Last metadata expiration check: 0:02:10 ago on Sun 01 Sep 2019 11:28:07 PM  CST.

anaconda-core.aarch64       19.31.123-1.14             updates
anaconda-gui.aarch64        19.31.123-1.14             updates
anaconda-tui.aarch64        19.31.123-1.14             updates
anaconda-user-help.aarch64  19.31.123-1.14             updates
anaconda-widgets.aarch64    19.31.123-1.14             updates
bind-libs.aarch64           32:9.9.4-29.3              updates
bind-libs-lite.aarch64      32:9.9.4-29.3              updates
bind-license.noarch         32:9.9.4-29.3              updates
bind-utils.aarch64          32:9.9.4-29.3              updates
...

Обновление#

Чтобы обновить отдельный программный пакет, выполните следующую команду от имени пользователя root:

dnf update package_name

Например, чтобы обновить пакет RPM, выполните следующую команду:

# dnf update anaconda-gui.aarch64
Last metadata expiration check: 0:02:10 ago on Sun 01 Sep 2019 11:30:27 PM  CST.
Dependencies Resolved
================================================================================
 Package                  Arch         Version              Repository     Size
================================================================================
Updating:
 anaconda-gui             aarch64      19.31.123-1.14       updates       461 k
 anaconda-core            aarch64      19.31.123-1.14       updates       1.4 M
 anaconda-tui             aarch64      19.31.123-1.14       updates       274 k
 anaconda-user-help       aarch64      19.31.123-1.14       updates       315 k
 anaconda-widgets         aarch64      19.31.123-1.14       updates       748 k

Transaction Summary
================================================================================
Upgrade  5 Package

Total download size: 3.1 M
Is this ok [y/N]:

Аналогичным образом, чтобы обновить группу программных пакетов, выполните следующую команду от имени пользователя root:

dnf group update group_name

Обновление всех пакетов и их зависимостей#

Чтобы обновить все пакеты и их зависимости, выполните следующую команду от имени пользователя root:

dnf update