Пакетный менеджер DNF будет переработан на языке Си

Ян Шилган (Jan Šilhan), лидер разработчиков пакетного менеджера DNF, который недавно пришёл на смену Yum в дистрибутиве Fedora, рассказал об инициативе по переработке DNF на языке Си. Изначально, Yum был написан целиком на языке Python, в то время как наиболее требовательные к производительности низкоуровневые функции DNF были вынесены в отдельные Си-библиотеки hawkey, librepo, libsolv и libcomps. В рамках новой инициативы планируется переписать на Си остающиеся на Python высокоуровневые компонеты DNF.

Версия на языке Си развивается в рамках проекта libhif, в котором постепенно создаётся библиотека, предоставляющая функции с базовой функциональностью типового пакетного менеджера. В libhif задействованы уже применяемые в DNF библиотеки librepo (работа с репозиториями) и hawkey (обвязка над libsolv для разрешения зависимостей). Начиная с выпуска 0.7.0 библиотека hawkey вольётся в состав libhif и станет неделимым целым. Слияние libhif и hawkey позволит скрыть некоторые нестабильные вызовы API системы разрешения зависимостей, предложив вместо них более универсальные высокоуровневые вызовы. Обвязки для языка Python будут сохранены в неизменном виде, что позволит сохранить возможность обращения к старым вызовам через биндинги python2-hawkey и python3-hawkey.

Предоставляемый в libhif высокоуровневый API для работы с пакетами будет учитывать такие особенности, как загрузка метаданных с зеркал, расчёт зависимостей, выполнение транзакций RPM, разбор конфигурации репозиториев, проверка цифровых подписей и другие типовые возможности, которые ранее реализовывались в каждом пакетном менеджере самостоятельно.

В будущем libhif сможет использоваться как фреймворк для построения пакетных менеджеров, например, кроме DNF новую библиотеку планируется задействовать в PackageKit, что позволит унифицировать разные реализации. Перевод DNF и PackageKit на единую основу даст возможность совместного использования данных систем, избавит от наблюдаемых несовместимостей и позволит использовать одни и те же метаданные. Ожидается, что libhif со встроенным hawkey будет поставляться в дистрибутиве начиная с выпуска Fedora 25.

©  OpenNet