Опубликован (http://dnf.baseurl.org/2016/12/20/dnf-2-0-0-and-dnf-plugins-.../) второй значительный релиз пакетного менеджера DNF (http://dnf.readthedocs.org/en/latest/release_notes.html) (2.0), который вобрал в себя улучшения, подготовленные после задействования DNF по умолчанию в Fedora Linux и сосредоточенный на улучшении совместимости с YUM.
В DNF 2.0 реализованы более понятные уведомления о проблемах с зависимостями, организован показ списка слабых зависимостей в суммарных параметрах транзакции, добавлена улучшенная система подсказки для доступных команд. В основной состав DNF перемещён плагин Repoquery (https://dnf.readthedocs.io/en/latest/command_ref.html#repoqu...). Добавлены новые 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, привели к нарушению (http://dnf.readthedocs.io/en/latest/dnf-1_vs_dnf-2.html) полной совместимости с веткой 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 (https://github.com/rpm-software-management/hawkey) в качестве бэкенда для разрешения зависимостей. В качестве основных проблем Yum, которые побудили к созданию DNF, называют некачественную документацию на API, проблемный алгоритм разрешения зависимостей и невозможность рефакторинга внутренних функций. По сравнению с Yum, DNF обладает заметно более высокой скоростью работы, низким потреблением памяти и более качественным управлением зависимостями. Кроме того, DNF может выполняться как при помощи Python 2, так и Python 3, что позволило реализовать план по поставке Python 3 в Fedora по умолчанию.
Для разрешения зависимостей в DNF задействован SAT solver, реализованный в библиотеке libsolv (https://github.com/openSUSE/libsolv) (hawkey выступает в роли надстройки над libsolv), созданной в рамках проекта openSUSE. Обработки метаданных и загрузка пакетов выполняется через librepo (https://github.com/tojaj/librepo). Для расширения функциональности DNF предоставляет новый, не совместимый с Yum, API для плагинов и интеграции с другими приложениями, такими как инсталлятор Anaconda. На уровне опций командной строки и файлов конфигурации, DNF почти полностью совместим с YUM.
URL: http://dnf.baseurl.org/2016/12/20/dnf-2-0-0-and-dnf-plugins-.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=45730