Для сборки пакетов используются скрипты
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>.