Использование 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

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

Описание параметров раздела main:

cachedir

Каталог кеша для хранения пакетов RPM и файлов базы данных.

keepcache

Возможные значения 1 и 0 указывают, следует ли кешировать пакеты RPM и файлы заголовков, которые были успешно установлены. По умолчанию используется значение 0, указывающее, что пакеты RPM и файлы заголовков не кешируются.

debuglevel

Задает отладочную информацию, генерируемую инструментом DNF. Значение варьируется от 0 до 10. Чем больше значение, тем подробнее отладочная информация.

Значение по умолчанию — 2.

Значение 0 означает, что отладочная информация не отображается.

clean_requirements_on_remove

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

Значение по умолчанию — True.

best

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

Значение по умолчанию — True.

obsoletes

Возможными значениями являются 1 и 0, указывающие, разрешено ли обновлять устаревшие пакеты RPM.

Значение по умолчанию 1 указывает, что обновление разрешено.

gpgcheck

Возможными значениями являются 1 и 0, указывающие, требуется выполнять проверку GPG.

Значение по умолчанию 1 означает, что требуется проверка.

plugins

Возможными значениями являются 1 и 0, указывающие, что подключаемый модуль DNF включен или отключен.

Значение по умолчанию 1 указывает, что подключаемый модуль DNF включен.

installonly_limit

Задает количество пакетов, которые можно установить одновременно, выполнив команду installonlypkgs.

Значение по умолчанию — 3.

Уменьшать это значение не рекомендуется.

Настройка раздела 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 предоставляет онлайн-источник образов по адресу repo.openeuler.org. Например, если версия openEuler 21.03 — aarch64, для baseurl можно указать:

    https://repo.openeuler.org/openEuler-21.03/OS/aarch64/

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

    • name — строка с названием репозитория программного обеспечения.

    • baseurl — адрес репозитория программного обеспечения:

      • сетевое расположение с использованием протокола HTTP, например:

        baseurl=https://example.com/repo/
      • сетевое расположение с использованием протокола FTP, например:

        baseurl=ftp://example.com/repo/
      • локальный путь, например:

        baseurl=/var/data/repository/
  • Настройка файла REPO в каталоге /etc/yum.repos.d

    Система openEuler предоставляет несколько источников репозитория для пользователей в сети. Подробности о репозиториях см. в разделе Настройка сервера репозитория.

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

    vi /etc/yum.repos.d/openEuler.repo
    /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 обозначает адрес источника репозитория.

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
Пример вывода при поиске пакета 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...
Пример вывода для пакета httpd
Available Packages
httpd.aarch64              2.4.34-8.h5.oe1           Local

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

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

dnf info package_name...

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

Пример вывода для пакета 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

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

Чтобы загрузить программный пакет с помощью 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
Пример вывода
Last metadata expiration check: 0:11:56 ago on Sat 17 Aug 2019 07:45:14 PM CST.
Available Groups: 8

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

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
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
Пример вывода
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