FreeBSD долгое время была старшей сестрой Linux, использующей компиляцию программного обеспечения в своей легендарной системе портов. Но теперь появилась возможность устанавливать и обновлять софт из репозитория.
История.
Напомню, что создание ПО из портов - это создание программы на этапе компиляции из исходных файлов с исправлениями для FreeBSD с помощью строго регламентированной процедуры. То есть философия - Source Based дистрибутив.
Существует каталог /usr/ports/, который хранит в разветвлённой системе каталогов файлы сценариев и исправлений, что, собственно, и называется портом. К примеру, порт файлового менеджера Midnight Commander находится по адресу /usr/ports/misc/mc/
Если вы не знаете, где хранится та или иная программа, то стоит вам перейти в каталог /usr/ports/ и скомандовать make search name="что-то"
как вам укажут где хранится данный порт внутри /usr/ports/. Перейдя в нужный каталог (порт) и, командуя make install
, мы не явно запускаем команду make с целью install. Но до цели install автоматически вызываются следующие цели:
- fetch - загружается тарбол программы с URL из переменной MASTER_SITES, указанной в файле Makefile.
- checksum - проверка контрольных сумм.
- extract - распаковка тарбола.
- patch - применение исправлений из подкаталога files/ для ФриБСДизации программы.
- configure - запуск сценария конфигурирования.
- build - создание бинарных исполняемых файлов с помощью компиляции.
Что нужно знать?
- Цели (этапы) являются независимыми и вы можете сами вызывать любую цель. К примеру, make fetch.
- Система портов обеспечивает сборку программы, учитывая зависимости.
- После установки порта запись о нём вносится в базу данных /var/db/pkg, то есть порт ничем не отличается от бинарного пакета. Другими словами, можно поставить программу, компилируя, а удалить командой pkg_delete словно бинарный пакет. А те бинарные пакеты, установленные во время установки системы с CD, в будущем, можно заменить новыми версиями, используя порты. Этот момент, мало кто понимает, когда речь заходит о бинарных пакетах и об исходниках в /usr/ports/
Настоящее.
Разработчики FreeBSD предоставили первый, официальный, бинарный репозиторий pkg.FreeBSD.org для нового пакетного менеджера pkg.
Через несколько месяцев планируется выпустить релиз Pkg 1.2, в котором появится поддержка проверки подлинности пакетов по цифровым подписям. То есть сейчас вполне возможна компрометация бинарных пакетов (например, в результате атаки хакеров) и никто об этом не узнает.
Начиная с FreeBSD 10, пакетный менеджер pkg будет предлагаться по умолчанию и заменит собой утилиты из набора pkg_install (pkg_create, pkg_add и pkg_info). Поддержка pkg_install будет прекращена через 6 месяцев.
Поддержка установки программ из портов полностью сохранена. То есть можно по прежнему компилировать программы, используя систему портов, только теперь вместе с портами рука об руку будет идти новая система pkg.
Тестирование pkg в FreeBSD 9.2.
Свежеустановленная система FreeBSD обладает устаревшими портами, которые следует обновить:
cd /usr/ports/ && portsnap fetch extract, так как нам нужна версия pkg не моложе 1.1.4_8.
Пока нет WITH_PKGNG=yes в /etc/make.conf командуем
cd /usr/ports/ports-mgmt/pkg && make install clean
Добавляем
echo WITH_PKGNG=yes >> /etc/make.confи вызываем
pkg2ng
Нам нужно очистить файл системный конфигурационный файл /usr/local/etc/pkg.conf.
Создать директорию с репозиториями mkdir -p /usr/local/etc/pkg/repos
и сформировать файл конфигурации /usr/local/etc/pkg/repos/FreeBSD.conf с видом:
FreeBSD1: { url: "http://pkg.FreeBSD.org/${ABI}/latest", mirror_type: "srv", enabled: "yes" } FreeBSD2: { url: "http://pkg.us-east.FreeBSD.org/${ABI}/latest", mirror_type: "srv", enabled: "yes" } FreeBSD3: { url: "http://pkg.us-west.FreeBSD.org/${ABI}/latest", mirror_type: "srv", enabled: "yes" }
Pkg поддерживает типичные функции таких систем управления пакетами, как APT и YUM, включая управление установленными пакетами, поиск пакетов pkg search, обновление пакетов из внешних репозиториев pkg upgrade, учёт зависимостей, средства для работы с метаданными. Для оценки наличия уязвимостей в установленных пакетах подготовлена команда pkg audit. Присутствует режим удаления пакетов, которые были установлены как зависимости и в которых больше нет необходимости - pkg autoremove.
В качестве формата пакета используется обычный TAR-архив, сжатый при помощи xz, в который помещены файлы, связанные с распространяемым приложением, а также набор управляющих скриптов и метаданных. Метаданные оформлены в виде текстового файла "+MANIFEST" в формате YAML и содержат всю информацию о пакете и определение особенностей его обработки.
В системе информация об установленных пакетах и пакетах, присутствующих в репозиториях, хранится в базе данных SQLite. Информация о начинке репозиториев также экспортируется в формате SQLite.
Минусы.
С одной стороны, если оставить один репозиторий pkg.FreeBSD.org, то даже Midnight Commander не сразу смог скачаться по непонятной причине. С другой стороны, множество репозиториев-зеркал и вот уже частенько приходится скачивать увесистые списки перед каждым чихом.
Ещё одним минусом можно посчитать более сложное обновление важных компонент в системе, типа языков программирования. Позвольте провести параллель - в Ubuntu даже сердце системы ядро линукса и то проще меняется, чем во Фри версия языка программирования. Чтобы не быть голословным, вот реальный пример. Обновление всего установленного зацепило perl. Судя по документации, его следует отдельно обновить так:
pkg set -o lang/perl5.16:lang/perl5.18 pkg install perl5.18
Как сказано выше, пока нет криптографической подписи у пакетов и их, кстати, никогда не было! Если вспомнить раннюю систему, работающую с бинарными пакеджами (утилиты pkg_*), а система портов умеет проверять только контрольную сумму.
Мне ещё рано судить о новинке, которая с одной стороны радует одним своим появлением, но с другой стороны, привыкши к мощи и простоте apt, увижу ли от pkg что-то поразительное в его работе?
Дополнительные материалы:
Source Based FreeBSD против Package Based Linux.
Почему я не люблю Source Based?
FAQ FreeBSD.
Немає коментарів:
Дописати коментар