Представлен релиз развиваемого проектом FreeBSD пакетного менеджера Pkg 1.5, который заменил собой утилиты из набора pkg_install (pkg_create, pkg_add и pkg_info) и используется по умолчанию начиная с FreeBSD 10 и Dragonfly BSD 3.6.

Pkg поддерживает типичные функции таких систем управления пакетами, как APT и YUM, включая управление установленными пакетами, поиск пакетов, обновление пакетов из внешних репозиториев, учёт зависимостей, средства для работы с метаданными, проверка подлинности по цифровой подписи. В качестве формата пакета используется обычный TAR-архив, сжатый при помощи xz, в который помещены файлы, связанные с распространяемым приложением, а также набор управляющих скриптов и метаданных. Метаданные оформлены в виде текстового файла "+MANIFEST" в формате YAML и содержат всю информацию о пакете и определение особенностей его обработки.

Поддерживается включение в пакет скриптов, которые вызываются на различных стадиях установки/обновления/удаления. В системе информация об установленных пакетах и пакетах, присутствующих в репозиториях, хранится в базе данных, на основе SQLite. Информация о начинке репозиториев также экспортируется в формате SQLite. Для оценки наличия уязвимостей в установленных пакетах подготовлена команда "pkg audit". Присутствует режим удаления пакетов, которые были установлены как зависимости и в которых больше нет необходимости.

Из изменений, добавленных в выпуске Pkg 1.5, можно отметить:

  • Начальная поддержка OS X, NetBSD и EdgeBSD;
  • Начальная поддержка опций provides/requires ("pkg shlib --provides/--requires"), позволяющих определить какой установленный пакет предоставляет указанную библиотеку и какие пакеты используют данную библиотеку;
  • Реализация большой порции новых регрессионных тестов;
  • Обновление до последних версий большинства встроенных сторонних программ;
  • Улучшение качества выводимых в процессе работы сообщений;
  • Корректная поддержка флагов доступа к файлам. Возможность установки флагов через plist;
  • Поддержка передачи аргументов для определённых пользователем ключевых слов;
  • В команды установки обновлений добавлена поддержка масок, нечуствительных к регистру символов;
  • В команду "pkg create" добавлен режим детализированного вывода (--verbose);
  • Добавлена опция для смены ответа по умолчанию (ранее по умолчанию всегда принимался ответ "No");
  • Проведена работа по сокращению потребления памяти и увеличению скорости работы;
  • Многочисленные улучшения в коде для разрешения зависимостей. Более явно указаны мотивы операций удаления, переустановки и обновления;
  • Поддержка команды "pkg create -M ./plop.ucl -p ./plop.plist";
  • Новая опция "pkg -r rootdir", позволяющая установить пакет в иную корневую директорию без использования chroot. Текущий корень передаётся в скрипты через переменную PKG_ROOTDIR;
  • В "pkg lock" добавлена опция "--has-locked-packages";
  • При возможности обеспечено возобновление прерванных загрузок;
  • По умолчанию активирован метод консервативного применения обновлений (CONSERVATIVE_UPGRADE).

В следующем выпуске планируется реализовать безопасный режим частичного обновления, добавить новые контекстно-зависимые уведомления, обеспечить поддержку гибко задаваемых зависимостей в provides/requires, создать бэкенд для пакетов Linux, добавить возможность размещения в репозитории нескольких версий одного пакета, улучшить документацию, расширить число регрессионных тестов.

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