Jump to content

Dnf

Введение

В дистрибутиве ROSA платформы 2021.1 и новее используется пакетный менеджер dnf. В этой статье даётся краткое описание его основных функций.

Приведённые команды запускать от root или через sudo:

sudo dnf <...>

DNF и RPM

Управление программными пакетами осуществляется с помощью утилит командной строки rpm и dnf. RPM является "низкоуровневым" пакетным менеджером, производящим установку, удаление и обновление пакетов, DNF "высокоуровневым" пакетным менеджером, в задачи которого входит разрешение зависимостей между пакетами, их скачивание и установка с использованием "низкоуровневого" RPM.

DNF

Основные операции с пакетами

Синтаксис консольной утилиты dnf имеет следующий вид:

dnf <опции> <команда> <пакет>
Команда Описание
install Установка пакета
reinstall Переустановка пакета
check-update Проверка наличия обновлений
update Обновление пакета
remove Удаление пакета
list Вывод имен всех доступных и установленных пакетов
search Поиск пакета
info Вывод информации о пакете
groupinstall Установка группы пакетов
groupupdate Обновление группы пакетов
groupremove Удаление группы пакетов
grouplist Вывод информации о группах
repolist Вывод списка включённых репозиториев
repolist all Вывод списка всех подключённых репозиториев
history Дает информацию о выполненных командах, о датах и времени их выполнения, о числе затронутых пакетов, о том, были ли эти транзакции успешными или же были прерваны, и была ли изменена база данных RPM в промежуток между транзакциями.
distro-sync По мере необходимости обновляет, понижает версию или сохраняет выбранные установленные пакеты в соответствии с последней версией, доступной в любом включенном репозитории. Если пакет не указан, учитываются все установленные пакеты.

Пример установки пакета mc:

sudo dnf install mc

Подробнее о работе dnf можно узнать во встроенной справке:

dnf --help

И в расширенной документации:

man dnf

Регулярные выражения

Регулярные выражения (regexp или regex) — это механизм поиска и замены с помощью шаблонов-символов. Все команды DNF предоставляют возможность поиска и фильтрации результата с помощью добавления одного или нескольких шаблонов выражений в качестве аргумента. Шаблоны выражений содержат один или несколько символов подстановки — символ « * » расширяет поиск до соответствия любому поднабору знаков, а « ? » до соответствия любому одиночному символу. Чтобы команда всегда отрабатывала корректно, искомое выражение должно быть в прямых одинарных или двойных кавычках.

dnf repoquery 'gea*'        

Покажет все доступные в репозитории пакеты имена которых начинаются на "gea":

geany-0:1.38-1.x86_64
...............................

geany-plugins-0:1.38-4.x86_64
dnf repoquery "gea??"

Покажет все пакеты имена которых начинаются на "gea" плюс ещё любых два символа:

geany-0:1.38-1.x86_64
geary-0:40.0-10.x86_64

Найти пакет по имени файла

dnf rq --whatprovides /usr/bin/gzip
...
gzip-0:1.12-1.x86_64
dnf provides /usr/bin/gzip
...
gzip-1.12-1.x86_64 : The GNU data compression program
Репозиторий        : mirror-rosa-x86_64-main
Совпадения с:
Имя файла   : /usr/bin/gzip
</per>

 dnf rq --whatprovides libfontconfig.so.1
<pre>
libfontconfig1-0:2.13.94-3.i686
dnf provides libfontconfig.so.1
libfontconfig1-2.13.94-3.i686 : Font configuration and customization library
Репозиторий        : @System
Совпадения с:
Предоставьте    : libfontconfig.so.1
...

Обновить метаданные репозитория и поставить обновления

dnf --refresh update

Обновить только метаданные репозитория

dnf makecache

Удалить все кешированные данные dnf

dnf clean all

Показать список файлов в пакете

dnf rq -l zip

Подключить тестовые репозитории

sudo dnf install rosa-repos-testing

Подключить контейнер и обновить пакет из него

sudo dnf --repofrompath name,url update pkg

Показать зависимости пакета

dnf repoquery --requires --resolve pkg