Для сборки пакетов используются скрипты
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 (по умолчанию выключено,
поскольку кластер архитектуры i386TM довольно быстр, и при
инкрементной сборке больше времени тратится на пересборку
того, что все равно не сможет собраться.
С другой стороны, кластеры других архитектур достаточно медленны,
так что пытаться собирать на них порты с флагом
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).
Это, скорее всего, ошибка, подлежащая исправлению.
Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.