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

Одновременно можно отметить публикацию отчёта о развитии проекта FreeBSD за второй квартал 2014 года. К сожалению, в связи с отпуском подготовка обзора на русском языке остаётся под вопросом. Желающие помочь с переводом могут принять участие в подготовке материала через wiki или обратиться через форму связи с администрацией сайта.

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

  • Представлена новая реализация кода для разрешения зависимостей, поддерживающая решение задачи выполнимости булевых формул (SAT Solver) и способная автоматически обрабатывать конфликты и динамически выявлять их наличие. Например, при переходе на новую версию Perl или PHP можно автоматически разрешить все конфликты с пакетами, ссылающимися на прошлые выпуски, без необходимости ручной правки. Также появилась возможность более изящно справляться со сложными сценариями установки/обновления и определять общие зависимости, такие как "пакет требует для своей работы web-сервер" без конкретной привязки к apache или nginx;
  • В команду "pkg install" добавлена возможность установки пакетов из локальных файлов с разрешением связанных с ними зависимостей во внешних репозиториях;
  • Большая часть кода теперь выполняется в режиме изоляции. Все загруженные данные до выполнения проверки из подлинности по цифровой подписи обрабатываются в sandbox-окружении;
  • Проведена работа по улучшению переносимости;
  • Процесс установки пакетов переработан для обеспечения более высокой безопасности и корректной обработки флагов schg;
  • Внесены изменения в реализацию механизма блокировки для обеспечения более гранулированных локальных блокировок;
  • Упрощён API;
  • Задействована библиотека libucl;
  • Внесены изменения в интерфейс пользователя, направленные на обеспечение более комфортной работы;
  • Расширена поддержка работы одновременно с несколькими репозиториями;
  • В библиотеку вынесен код с реализацией команды "pkg audit";
  • Добавлена возможность переопределения параметров конфигурации для отдельной операции из командной строки через указание "pkg -o A=B".

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

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

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