gettext
iconv
rc
)Имеется ещё несколько вещей, которые вы должны иметь в виду при создании порта. Этот раздел описывает наиболее часто встречающиеся из них.
bsd.port.mk
ожидает от портов работу с
<<каталогом сборки>>. Это означает, что порт должен
устанавливать файлы не напрямую в назначенные каталоги (то
есть, например, под PREFIX
), а в отдельный
каталог, из которого затем собирается пакет. Во многих случаях
привилегии root для этого не требуются, что делает возможным
сборку пакетов из-под непривилегированного пользователя. В
режиме staging порт собирается и устанавливается в каталог
сборки STAGEDIR
. Пакет создается из
каталога сборки и затем устанавливается в систему. В
инструментарии automake такая концепция именуется
DESTDIR
; в прочем, в FreeBSD
DESTDIR
имеет собственное значение (смотрите
Раздел 9.4, <<PREFIX
и
DESTDIR
>>).
Если для порта всё ещё требуются системные привилегии при
выполнении цели package
, то в
Makefile
должна быть добавлена следующая
строка:
NEED_ROOT= yes
Метапорты, то есть порты, которые не устанавливают файлы непосредственно, а только зависят от других портов, должны по возможности избегать распаковки mtree(8) в каталог сборки. Это основная иерархия каталогов пакета, и эти пустые каталоги будут выглядеть лишними. Для предотвращения распаковки mtree(8) добавьте эту строку:
NO_MTREE= yes
Staging задействуется посредством добавления переменной
STAGEDIR
слева от путей, которые
используются в целях pre-install
,
do-install
и
post-install
(смотрите примеры в
книге). Обычно сюда относятся PREFIX
,
ETCDIR
, DATADIR
,
EXAMPLESDIR
, MANPREFIX
,
DOCSDIR
и так далее. Каталоги должны
создаваться при выполнении цели
post-install
. Избегайте
использования абсолютных путей, когда это возможно.
При создании символический ссылки
STAGEDIR
должен ставиться только для пути
назначения. Например:
${LN} -sf libfoo.so.42 ${STAGEDIR}${PREFIX}/lib/libfoo.so
Первоначальный путь
${PREFIX}/lib/libfoo.so.42
выглядит
нормально, но по факту может быть неправильным. Абсолютные
пути могут указывать на неподходящее место, например, когда
удалённая файловая система смонтирована по
NFS как непривилегированная точка
монтирования. Относительные пути реже подвержены проблемам и
часто намного короче.
Порты, устанавливающие модули ядра, должны предварять путь
установки (по умолчанию /boot/modules
)
переменной STAGEDIR
.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.