DNF (Dandified YUM) — диспетчер пакетов следующего поколения в дистрибутивах на основе RPM. Впервые он был представлен в Fedora 18 и заменил утилиту YUM в выпуске Fedora 22.
DNF нацелен на устранение узких мест YUM, а именно:
- проблем с производительностью,
- проблем с использованием памяти,
- проблем с разрешениями зависимостей,
- проблем со скоростью работы и многими другими факторами.
DNF осуществляет управление пакетами, используя библиотеки RPM, libsolv и hawkey. Хотя он не входит в состав CentOS и RHEL 7, вы можете использовать как yum,так и dnf.
Последняя стабильная версия DNF — 4.2.11 (на момент написания статьи). Она (и все предыдущие версии DNF) в основном написаны на Python и выпущены под лицензией GPL v2.
Установка DNF
DNF недоступен в репозитории по умолчанию RHEL/CentOS 7. Однако Fedora 22 поставляется с DNF, предустановленным официально.
Чтобы установить DNF в системах RHEL/CentOS, вам необходимо сначала установить и включить репозиторий epel-release:
# yum install epel-release
Или же:
# yum install epel-release -y
Хотя использование ‘-y‘ с yum неэтично, так как рекомендуется смотреть, что устанавливается в вашей системе. Однако, если это для вас не столь важно, вы можете использовать «-y» с yum для автоматической установки всех зависимостей без вмешательства пользователя.
Затем установите пакет DNF с помощью команды yum из репозитория epel-release:
# yum install dnf
После успешной установки dnf пришло время показать вам «27 практических примеров использования команд dnf с примерами», которые помогут вам легко и эффективно управлять пакетами в дистрибутиве на основе RPM.
1. Проверка версии DNF
Проверьте версию DNF, установленную в вашей Системе:
# dnf --version
2. Вывод списка включенных репозиториев DNF
Опция «repolist» с командой dnf отобразит все включенные репозитории в вашей системе:
# dnf repolist
3. Просмотр всех включенных и отключенных репозиториев DNF
Опция «repolist all» выведет все включенные/отключенные репозитории в вашей системе:
# dnf repolist all
4. Вывод списка всех доступных и установленных пакетов, используя DNF
Команда «dnf list» выведет список всех доступных пакетов из всех репозиториев и установленных пакетов в вашей системе Linux:
# dnf list
5. Вывод списка всех установленных пакетов
В то время как команда «dnf list» показывает все доступные/установленные пакеты из всех репозиториев. Однако у вас есть возможность перечислить только установленные пакеты, используя опцию «list installed», как показано ниже:
# dnf list installed
6. Вывод списка всех доступных пакетов
Аналогичным образом, опция «list available» выводит список всех пакетов, доступных для установки из всех включенных репозиториев:
# dnf list available
7. Поиск пакета с использованием DNF
Если вы не знаете, какой пакет вы хотите установить, в такой ситуации вы можете использовать опцию «search» вместе с командой dnf для поиска пакета, который соответствует слову или строке поиска (к примеру — nano):
# dnf search nano
8. Просмотр описание файл/субпакет, к какому пакету принадлежит файл, что он делает?
Опция dnf provides ищет имя пакета, к которому принадлежит определенный файл/подпакет. Например, если вы хотите найти к какому пакету принадлежит ‘/bin/bash‘ в вашей системе, выполните:
# dnf provides /bin/bash
9. Просмотр деталей пакета
Предположим, что вы хотите узнать информацию о пакете до его установки в системе, вы можете использовать опцию «info» для получения подробной информации о пакете, как показано ниже:
# dnf info nano
10. Установка пакета с DNF
Чтобы установить пакет с именем nano, просто запустите приведенную ниже команду, она автоматически разрешит и установит все необходимые зависимости для пакета nano:
# dnf install nano
11. Обновление пакета с использованием DNF
Вы можете обновить только определенный пакет (скажем, systemd) и оставить все остальные пакеты в системе без изменений:
# dnf update systemd
12. Проверка наличия обновлений системы с помощью DNF.
Проверьте обновления для всех системных пакетов, установленных в системе:
# dnf check-update
13. Обновление всех системных пакетов
Вы можете обновить всю систему, включая все установленные пакеты, с помощью следующих команд:
# dnf update
Или же:
# dnf upgrade
14. Удаление пакета
Чтобы удалить любой нежелательный пакет (например, nano), вы можете использовать опцию «remove» или «erase» вместе с командой dnf:
# dnf remove nano
Или же:
# dnf erase nano
15. Удаление «осиротевших» пакетов
Те пакеты, которые были установлены исключительно для удовлетворения зависимостей, могут быть бесполезными, если они не используются другими приложениями. Чтобы удалить эти «осиротевшие» пакеты, выполните следующую команду:
# dnf autoremove
16. Удаление кэшированных пакетов
Много раз мы сталкивались с устаревшими заголовками и незавершенными транзакциями, что приводит к ошибке при выполнении dnf. Мы можем очистить все кэшированные пакеты и заголовки, содержащие информацию об удаленных пакетах, просто выполнив:
# dnf clean all
17. Получение справки по определенной команде DNF
Вы можете получить помощь по любой конкретной команде dnf (скажем, clean), просто выполнив приведенную ниже команду:
# dnf help clean
18. Вывод всех команд и опции DNF
Чтобы получить справку по всем доступным командам и опциям dnf, просто введите:
# dnf help
19. Просмотр истории DNF
Вы можете вызвать dnf history, чтобы посмотреть список уже выполненных команд dnf. Таким образом, вы можете быть в курсе того, что было установлено/удалено и также узнать в какой именно промежуток времени это было выполнено:
# dnf history
20. Вывод всех групповых пакетов
Команда «dnf grouplist» выведет все доступные или установленные пакеты, если не упомянуто никаких опций, она выведет список всех известных групп:
# dnf grouplist
21. Установка группы пакетов
Чтобы установить группу пакетов, связанных вместе, как групповой пакет (скажем, образовательное программное обеспечение) выполните следующую команду:
# dnf groupinstall 'Educational Software'
22. Обновление групповых пакетов
Давайте обновим групповой пакет, выполнив приведенную ниже команду:
# dnf groupupdate 'Educational Software'
23. Удаление групповых пакетов
Мы можем удалить групповой пакет:
# dnf groupremove 'Educational Software'
24. Установка пакетов из определенного репозитория
DNF позволяет установить любой конкретный пакет (скажем, phpmyadmin) из определённого репозитория (к примеру, epel) так же просто, как:
# dnf --enablerepo=epel install phpmyadmin
25. Синхронизация установленных пакетов со стабильной версией
Команда «dnf distro-sync» предоставит необходимые параметры для синхронизации всех установленных пакетов с самой последней стабильной версией, доступной из любого включенного репозитория. Если не выбран какой-то конкретный пакет, то синхронизируются все установленные пакеты:
# dnf distro-sync
26. Переустановка пакета
Команда «dnf reinstall nano» переустанавливает уже установленный пакет:
# dnf reinstall nano
27. Откат версии пакета
Опция «downgrade» откатывает версию указанного пакета до предыдущей версии, если это возможно:
# dnf downgrade acpid
Пример вывода
Using metadata from Wed May 20 12:44:59 2015
No match for available package: acpid-2.0.19-5.el7.x86_64
Error: Nothing to do.
Важное наблюдение: DNF не откатил версию пакета, как это должно было быть. Также сообщается об ошибке.
Итоги
DNF является хорошим заменителем диспетчера пакетов YUM. Он имеет тенденцию выполнять большую часть обработки автоматически, что, как я полагаю, не приветствуется многими опытными системными администраторами Linux. В качестве примера:
- —skip-broken не распознается DNF и альтернативы нет.
- Нет ничего похожего на команду «resoldep», однако вы можете запустить dnf provides.
- Не существует команды «deplist» для поиска зависимости пакета.
- Вы исключаете репо, то есть исключение применяется ко всем операциям, в отличие от yum, которое исключает эти репо только во время установки, обновлений и т.д.
Статья представлена, как есть. Без правок.