4. Запуск сборки

Для сборки пакетов используются скрипты scripts/dopackages*. Наиболее полезными являются:

  • dopackages.4 - собирает пакеты для версии 4.X

  • dopackages.5 - собирает пакеты для версии 5.X

  • dopackages.5-exp - производит сборку ветви для версии 5.X с экспериментальными изменениями (ветвь 5-exp)

  • dopackages.6 - собирает пакеты для версии 6.X

  • dopackages.6-exp - производит сборку ветви для версии 6.X с экспериментальными изменениями (ветвь 6-exp)

  • dopackages.7 - собирает пакеты для версии 7.X

Все они вызывают универсальный скрипт dopackages, и являются символьными ссылками на dopackages.wrapper. Для создания скрипта для сборки пакетов новой ветви достаточно создать символическую ссылку dopackages.${branch}, указывающую на dopackages.wrapper. Могут быть указаны многочисленные параметры, например:

dopackages.6 ${arch} [-options]


[-options] может быть произвольным набором из следующих опций:

  • -nofinish - Не производить пост-обработку по завершении сборки. Полезно, если процесс сборки потребуется рестартовать. В обычных ситуациях эту опцию следует использовать всегда.

  • -finish - Произвести пост-обработку (и только: собственно сборку не производить).

  • -restart - Рестартовать прерванный (или незавершенный, т.е. запущенный без флага -finish) процесс сборки с самого начала. При этом порты, попытка сборки которых на предыдущем проходе завершилась неудачно, будут пересобраны.

  • -continue - Продолжить прерванный (или незавершенный) процесс сборки. Порты, не прошедшие сборку, не пересобираются.

  • -incremental - Сравнить необходимые поля в текущем файле INDEX с его предыдущим состоянием, удалить пакеты и журналы их сборки для обновившихся портов и пересобрать их. Этот ключ позволяет существенно сократить время сборки, поскольку нет необходимости пересобирать каждый раз не изменившиеся порты.

  • -cdrom - Текущая сборка предназначена для помещения на CD-ROM, поэтому исходные архивы и пакеты портов, помеченных NO_CDROM должны быть удалены при пост-обработке.

  • -nobuild - Произвести первоначальную подготовку, не запуская собственно процесс сборки пакетов.

  • -noindex - Не перестраивать файл INDEX в ходе препроцессинга.

  • -noduds - Не перестраивать файл duds (список портов, которые не будут строиться, например, помеченные признаками IGNORE, NO_PACKAGE и т.п.) перед процессом сборки.

  • -trybroken - Пытаться собрать порты, помеченные как BROKEN (по умолчанию выключено, поскольку кластер архитектуры i386™ довольно быстр, и при инкрементной сборке больше времени тратится на пересборку того, что все равно не сможет собраться. С другой стороны, кластеры других архитектур достаточно медленны, так что пытаться собирать на них порты с флагом BROKEN было бы напрасной тратой времени.

  • -nocvs - Не выполнять обновление (cvs update) дерева исходных текстов (src) на этапе препроцессинга.

  • -noportscvs - Не обновлять (cvs update) дерево портов (ports) на этапе препроцессинга.

  • -nodoccvs - Не обновлять (cvs update) дерево документации (doc) в ходе препроцессинга. (устаревшая опция)

  • -norestr - Не пытаться компилировать порты, помеченные как RESTRICTED.

  • -plistcheck - Считать ошибкой оставление лишних файлов после деинсталляции порта.

  • -distfiles - Собрать архивы исходных файлов (distfiles) для дальнейшего их переноса на ftp-master. Эту опцию следует использовать изредка, поскольку она требует очень много места. Исходные архивы следует удалить после загрузки их на ftp-master.

  • -fetch-original - Загружать исходные архивы с оригинальных сайтов, определенных переменными MASTER_SITES, а не с ftp-master.

Убедитесь, что процесс сборки пакетов для архитектуры ${arch} запускается от имени пользователя ports-${arch}; в противном случае ошибки неизбежны.

Замечание: Сборка пакетов производится в два идентичных прохода. Иногда временные проблемы, такие как ошибки NFS или недоступность FTP-сайтов, могут прервать сборку. Дублирование попыток позволяет обойти подобные проблемы.

Проверьте, чтобы ports/Makefile не ссылался на пустые подкаталоги. В особенности это важно для сборки ветви -exp. Если процесс сборки обнаруживает пустой каталог, обе фазы сборки вскоре остановятся. При этом в файлы ${arch}/${branch}/make.[0|1] будет записано сообщение об ошибке примерно такого вида:

don't know how to make dns-all(continuing)

Для исправления ситуации просто закомментируйте или удалите строчки SUBDIR, указывающие на пустые подкаталоги. После этого вы можете перезапустить сборку командой dopackages, добавив ей параметр -restart.

Замечание: Та же проблема возникает при создании файла Makefile для новой категории, не содержащего ни одной ссылки на подкаталоги (SUBDIR). Это, скорее всего, ошибка, подлежащая исправлению.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.

Обновлено: 12.03.2015