17.04.2024

В Fedora 41 намечен переход на пакетный менеджер DNF5

В выпуске Fedora 41 предложено перевести дистрибутив по умолчанию на пакетный менеджер DNF5. Изначально, переход на DNF5 планировалось произвести в выпуске Fedora 39, но миграция была отложена из-за неготовности инструментария. Несмотря на то, что полный паритет в функциональности со старым инструментарием всё ещё не достигнут, разработчики считают, что дистрибутив готов к миграции, а недостающие возможности можно реализовать позднее. Предложение пока не рассмотрено комитетом FESCo (Fedora Engineering Steering Committee), отвечающим за техническую часть разработки дистрибутива Fedora. В случае принятия предложения пакеты dnf, libdnf и dnf-cutomatic будут заменены на инструментарий DNF5 и новую библиотеку libdnf5, а символическая ссылка /usr/bin/dnf начнёт указывать на исполняемый файл dnf5.

В своё время DNF пришёл в дистрибутиве на смену пакетному менеджеру Yum, который был написан целиком на языке Python. В DNF требовательные к производительности низкоуровневые функции были переписаны и вынесены в отдельные Си-библиотеки hawkey, librepo, libsolv и libcomps, но каркас и высокоуровневые компонеты остались на языке Python. Проект DNF5 нацелен на унификацию имеющихся низкоуровневых библиотек, переписывание на языке С++ остающихся на Python компонентов управления пакетами и вынос базовой функциональности в отдельную библиотеку libdnf5 с созданием вокруг этой библиотеки обвязки для сохранения Python API.

Использование языка С++ вместо Python позволило избавиться от большого числа зависимостей, сократить размер инструментария и повысить производительность. Более высокая производительность достигается не только благодаря применению компиляции в машинный код, но и за счёт улучшенной реализации таблицы транзакций, оптимизации загрузки из репозиториев и реструктуризации БД (разделены базы с состоянием системы и историей операций). Инструментарий DNF5 избавлен от привязки к PackageKit, вместо которого задействован новый фоновый процесс DNF Daemon, заменяющий функциональность PackageKit и предоставляющий интерфейс для управления пакетами и обновлениями в графических окружениях.

Переработка также дала возможность реализовать некоторые улучшения, повышающие удобство работы с пакетным менеджером. Например, в новом DNF реализована более наглядная индикация прогресса выполнения операций; добавлена поддержка использования локальных RPM-пакетов для транзакций; добавлена возможность показа в отчётах о выполненных транзакциях информации, выдаваемой встроенными в пакеты скриптами (scriplets); предложена более продвинутая система автодополнения ввода для bash.

Источник: https://www.opennet.ru/opennews/art.shtml?num=60849 Источник.