Использование 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_urlopenEuler предоставляет онлайн-источник образов по адресу 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-openEulerenabledуказывает, включать ли репозиторий источника программного обеспечения. Значением может быть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 обозначает адрес источника репозитория.
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...
httpdAvailable Packages
httpd.aarch64 2.4.34-8.h5.oe1 Local
Отображение информации о пакете RPM
Чтобы просмотреть информацию об одном или нескольких пакетах RPM, выполните команду:
dnf info package_name...
Ниже приведен пример команды:
httpdAvailable 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
Управление группами программных пакетов
Набор программных пакетов — это группа программных пакетов, служащих общей цели, например набор системных инструментов. Вы можете использовать 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 ToolsLast 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