Главная » 2012 » Февраль » 4 » Представлена первая бета-версия pkgng, нового пакетного менеджера для FreeBSD
Представлена первая бета-версия pkgng, нового пакетного менеджера для FreeBSD
22:02
Разработчики проекта pkgng, в
рамках которого предпринята попытка создания полнофункционального пакетного
менеджера для FreeBSD, объявили
о переходе на стадию бета-тестирования. Pkgng позиционируется как отвечающая
современным реалиям замена инструментария pkg_install.
В настоящее время pkg_install не поддерживает ряд важных функций, связанных с
управлением бинарными пакетами, таких как возможность обновления пакетов,
поддержка работы с репозиториями, учёт зависимостей и полноценная поддержка
метаданных. Ограничения pkg_install во многом мешают развитию инфраструктуры
портов, которая вынуждена работать с оглядкой на устаревший инструментарий, что
приводит к появлению различных "хаков" в Mk/bsd.*.mk и метаданных, вносимых для
обхода ограничений pkg_install. Предпринимаемые ранее попытки создания более
современных утилит, например, portmaster и portupgrade, также в конечном счёте
упирались в ограничения pkg_install.
Для исправления сложившейся ситуации был основан проект pkgng, который
изначально не позиционировался для управления портами и рассматривался как
полная замена утилитам pkg_*, включая новый формат пакетов, работу только с
бинарными пакетами и использование репозитория для их распространения. В основе
проекта лежит библиотека libpkg с реализацией функций по работе с пакетами и
репозиторями, которую можно использовать для создания пользовательских утилит.
Поддерживаются типичные функции таких систем управления пакетами, как APT и YUM,
включая управление установленными пакетами, поиск пакетов и обновление из
удалённых репозиториев.
В качестве формата пакета предлагается использовать TAR-архив в который
помещены файлы, связанные с распространяемым приложением, а также набор
управляющих скриптов и метаданных. Метаданные оформлены в виде текстового файла
"+MANIFEST" в формате YAML и содержат всю
информацию о пакете и определение особенностей его обработки. Поддерживается
включение в пакет скриптов, которые будут вызываться на различных стадиях
установки/обновления/удаления. В системе информация об установленных пакетах и
пакетах, присутствующих в репозиториях, хранится в базе данных, на основе
SQLite. Информация о начинке репозиториев также экспортируется в формате SQLite.
Для гарантирования валидности источника пакетов поддерживается проверка по
RSA-сигнатурам. Для оценки наличия уязвимостей в установленных пакетах
подготовлена команда "pkg audit".
В pkgng также реализованы полноценные средства учета зависимостей между
пакетами, в том числе присутствует режим автоматического удаления пакетов,
которые были установлены как зависимости и в которых больше нет необходимости.
Новые пакеты могут быть созданы на основании портов или уже установленных в
произвольную директорию программ. Для регистрации в БД pkgng данных об уже
установленных из портов программ подготовлен скрипт ports/pkg2ng. С точки зрения
пользователя, формат работы с pkgng напоминает APT. Например, для обновления
данных о содержимом репозитория нужно выполнить "pkg update", для установки
программ "pkg install zsh cfengine3" и т.п. Информация об используемых
репозиториях размещается в секции "repos:" файла /etc/pkg.conf. Список уже
доступных репозиториев можно найти на сайте проекта.
Ожидается, что pkgng пробудет на стадии бета-тестирования достаточно долго,
но при этом в отличие от альфа-выпусков, будет обеспечена обратная совместимость
для форматов пакетов, внутренних баз и репозиториев, что позволит без опасения
переходить к более новым выпускам pkgng. В настоящее время вся базовая
функциональность, задуманная для релиза pkgng 1.0 уже реализована, если
возникнут какие-то новые глобальные идеи, то они будут реализованы только к
релизу pkgng 2.0. Финальный релиз pkgng 1.0 планируется выпустить до выхода
FreeBSD 10.0-RELEASE и 9.1-RELEASE, обеспечив полную готовность к использованию
в данных выпусках.
Революционных изменений от версии 1.0 ожидать не стоит, так как она ещё
предполагает совместимость с текущим деревом портов. В будущем поддержка
pkg_install будет прекращена, что позволит приступить к реализации более
кардинальных улучшений. Среди интересных планов на далёкое будущее можно
упомянуть средства для повышенной изоляции пакетов при помощи capsicum; учет
системной архитектуры при установке пакетов (amd64, i386, arm); поддержка
инкрементальных обновлений при которых будут загружаться только измененные части
пакета; поддержка абстрактных мета-пакетов; более сложная система учета
зависимостей.