Доступен пакетный менеджер DNF 2.0, пришедший на смену Yum


Опубликован второй значительный релиз пакетного менеджера DNF (2.0), который вобрал в себя улучшения, подготовленные после задействования DNF по умолчанию в Fedora Linux и сосредоточенный на улучшении совместимости с YUM.

В DNF 2.0 реализованы более понятные уведомления о проблемах с зависимостями, организован показ списка слабых зависимостей в суммарных параметрах транзакции, добавлена улучшенная система подсказки для доступных команд. В основной состав DNF перемещён плагин Repoquery. Добавлены новые unit-файлы для systemd: dnf-automatic-notifyonly, dnf-automatic-download и dnf-automatic-download.

Реализованы команды и опции:

  • «dnf remove --duplicates» и «dnf remove --oldinstallonly» для удаления старых версий дублирующих друг друга пакетов и старых пакетов категории installonly.
  • Новая команда «dnf repoquery» (ранее данная функциональность развивалась как отдельный плагин) для поиска пакетов во внешних репозиториях (аналог «rpm -q» для удалённого репозитория);
  • Добавлена опция »--repo репозиторий» для ограничения операций только репозиторием, выбранным по идентификатору или маске.
  • Новая команда «dnf check» для выполнения проверки целостности локальной БД packagedb и вывода информации о возможных проблемах. Поддерживаются опции для ограничения проверки отдельными областями, например »--dependencies»,»--duplicates»,»--obsoleted и »--provides».
  • Новая команда «dnf upgrade-minimal», позволяющая обновить каждый пакет до самой свежей версии с улучшениями или исправлениями ошибок и уязвимостей.
  • Новые опции для выбора уровня безопасности: bugfix, enhancement, newpackage, security, advisory, bzs, cves, sec-severity и secseverity.

К сожалению, некоторые изменения в выпуске, связанные с поддержкой особенностей работы YUM, привели к нарушению полной совместимости с веткой DNF-1. В том числе возвращено свойственное для YUM поведение для настроек файла конфигурации, например опции «include» и «exclude» заменены на «includepkgs» и «excludepkgs», для установки опциональных зависимостей вместо команды «with-optional» теперь предлагается параметр »--with-optional», вместо «dnf search all» — «dnf search --all», вместо «dnf makecache timer» — «dnf makecache --timer», вместо «dnf list command» — «dnf list --command», вместо «dnf repolist [enabled|disabled|all]» — «dnf repolist [--enabled|--disabled|--all]» и т.д. Также изменены аргументы в некоторых вызовах Python API.

Напомним, что DNF является ответвлением от Yum 3.4, созданным для развития некоторых новых идей, таких как использование библиотеки hawkey в качестве бэкенда для разрешения зависимостей. В качестве основных проблем Yum, которые побудили к созданию DNF, называют некачественную документацию на API, проблемный алгоритм разрешения зависимостей и невозможность рефакторинга внутренних функций. По сравнению с Yum, DNF обладает заметно более высокой скоростью работы, низким потреблением памяти и более качественным управлением зависимостями. Кроме того, DNF может выполняться как при помощи Python 2, так и Python 3, что позволило реализовать план по поставке Python 3 в Fedora по умолчанию.

Для разрешения зависимостей в DNF задействован SAT solver, реализованный в библиотеке libsolv (hawkey выступает в роли надстройки над libsolv), созданной в рамках проекта openSUSE. Обработки метаданных и загрузка пакетов выполняется через librepo. Для расширения функциональности DNF предоставляет новый, не совместимый с Yum, API для плагинов и интеграции с другими приложениями, такими как инсталлятор Anaconda. На уровне опций командной строки и файлов конфигурации, DNF почти полностью совместим с YUM.

© OpenNet