http://www.bsdfreak.org/modules/news/article.php?storyid=1
Перевод: Сгибнев Михаил
В этой статье приводится краткое(но детальное) обьяснение, как использовать
утилиту pkg_comp для сборки пакетов NetBSD в песочнице chroot не затрагивая уже
установленные пакеты. Другими словами, вы можете собрать искомое, не удаляя
зависимости в процессе сборки.
Совсем недавно, изучая список рассылки NetBSD, я видел упоминание о формировании
пакетов в chroot и заинтересовался этим вопросом. Я уважаю pkgsrc, но всегда
терпел неудобство от "make update", так как удаляются все зависимости
модифицируемого пакета, что недопустимо в промышленных условиях.
С помощью общественности я установил pkg_comp и теперь могу собирать пакеты, не
затрагивая уже установленные. pkg_comp устанавливает chroot среду с полной
инсталляцией NetBSD, именно туда помещаются пакеты и собираются бинарные файлы.
Вот что необходимо, для того, чтобы использовать pkg_comp:
- Система с установленной NetBSD. Возможно, есть способ
кросс-платформенной сборки пакетов, но я не пробовал.
- Поддержка ядром файловой системы NULLFS. Она необходима для
монтирования "реального" каталога пакетов внутрь chroot.
- Актуальный pkgsrc
- Релиз NetBSD или текущий снапшот, если вы не собираетесь собирать пакеты
для X, то наличие X11 не обязательно.
- Установленный pkg_comp(обнаружить его можно в pkgsrc/pkgtools/pkg_comp)
- Файл конфигурации pkg_comp.
Так, теперь вкратце опишем, что необходимо сделать для приведения pkg_comp
в рабочее состояние. Обратите внимание, что это работало у меня, возможно вы
столкнетесь с проблемами.
Если вы устанавливаете пакеты, используя su, то создайте каталог pkg_comp в ~root
и поместите в него файл default.conf. Если Вы используете sudo, помещаете файл в
~/pkg_comp, вместо ~root/pkg_comp. Этот файл будет содержать пути, такие как
адрес песочницы.
Мой ~dive/pkg_comp/default.conf выглядит следующим образом:
DESTDIR=/var/chroot/pkgcomp
DISTRIBDIR=/nb/releasedir/i386
REAL_PKGSRC=/nb/pkgcomp_stuff/pkgsrc
Если вы не будете собирать пакеты, требующие X, то в этом же
файле можно указать параметр "SETS_X11=no", если же вы используете X 4.x,
то укажите следующую строку:
SETS_X11="xbase.tgz xcomp.tgz xetc.tgz xfont.tgz xserver.tgz"
В противном случае pkg_comp будет падать, ища старую версию X
(xcontrib.tgz).
DESTDIR указывает на местоположение chroot песочницы,
DISTRIBDIR указывает на местоположение релиза NetBSD(там можно
найти binary/sets/base.tgz и др.) и REAL_PKGSRC указывает на
местоположение дерева pkgsrc, которое Вы хотите использовать вместе с pkg_comp.
Начиная с этого момента я предполагаю, что вы используете sudo, как и я.
Команды достаточно просты для адаптации под su или непосредственный вход как root.
Вам необходимо выполнить следующие команды:
Это гарантирует, что пакеты, собранные с помощью pkg_comp, будут добавлены как бинарные
в /usr/pkgsrc/packages.
В принципе, это все, что касается сборки пакетов с pkg_comp - хотя Вы могли бы, конечно, захотеть использовать
кое-что типа pkg_chk, чтобы формировать тонны пакетов сразу в chroot.
Сделать это можно войдя в chroot (sudo pkg_comp chroot), установив pkgtools/pkg_chk, отредактировав
файл конфигурации (также в chroot), с указанием путей pkgsrc по одному в строке и затем выполнить
pkg_chk -a -k -C /path/to/packagelist.
Вы можете теперь собирать индивидуальные пакеты (или мета пакеты) с помощью команды sudo pkg_comp build category/package.
Например, sudo pkg_comp build shells/tcsh соберет бинарный пакет tcsh, находящийся в /usr/pkgsrc/packages/shells.
Для того, чтобы добавить бинарный пакет в систему, используюте pkg_add /path/to/package.tar.gz
-- Sean Davis (dive at bsdfreak dot org)