Доступен пакетный менеджер DNF 2.0, пришедший на смену Yum
Опубликован второй значительный релиз пакетного менеджера DNF (2.0), который вобрал в себя улучшения, подготовленные после задействования DNF по умолчанию в Fedora Linux и сосредоточенный на улучшении совместимости с YUM.
В DNF 2.0 реализованы более понятные уведомления о проблемах с зависимостями, организован показ списка слабых зависимостей в суммарных параметрах транзакции, добавлена улучшенная система подсказки для доступных команд. В основной состав DNF перемещен плагин Repoquery. Добавлены новые unit-файлы дляw systemd: dnf-automatic-notifyonly, dnf-automatic-download и dnf-automatic-download.
Реализованы команды и опции:
- "dnf remove --duplicates" и "dnf remove --oldinstallonly" для удаления старых версий для дублирующих друг друга пакетов и старых пакетов категории installonly.
- "dnf repoquery" - для поиска пакетов во внешних репозиториях (аналог "rpm -q" для удаленного репозитория);
- Добавлена опция "--repo репозиторий" для ограничения операций только репозиторием, выбранным по идентификатору или маске.
- Новые команды "dnf check" и "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.