DNF — это инструмент Linux, используемый для управления программными пакетами RPM. DNF может запрашивать информацию о программном пакете, получать программные пакеты из указанной библиотеки программного обеспечения, автоматически обрабатывать зависимости для установки или удаления программных пакетов, а также обновлять систему до последней доступной версии.
ПРИМЕЧАНИЕ.
— DNF полностью совместим с YUM и предоставляет совместимые с YUM командные строки и API для расширений и подключаемых модулей.
— Для использования DNF вам нужны права администратора. Все команды в этой главе должны выполняться администратором.
- Использование 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
Создание локального репозитория программного обеспечения#
Чтобы создать локальный репозиторий источников программного обеспечения, выполните следующие действия.
-
Установите программный пакет createrepo. Выполните следующую команду от имени пользователя root:
dnf install createrepo
-
Скопируйте необходимые программные пакеты в каталог, например /mnt/local_repo/.
-
Выполните следующую команду, чтобы создать источник программного обеспечения:
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