Переменная PREFIX
определяет, куда будет
установлен порт. По умолчанию это /usr/local
,
но может меняться пользователем на собственный путь, такой как
/opt
. В вашем порту значение этой переменной
должно учитываться.
Если пользователь установил переменную DESTDIR
,
то она определяет полное альтернативное окружение, обычно, это jail
или установленная система, смонтированная в месте, отличном от
/
. На самом деле порт устанавливается в
и регистрируется в базе данных пакетов в
DESTDIR
/PREFIX
.
Поскольку управление DESTDIR
/var/db/pkgDESTDIR
производится
автоматически инфраструктурой портов с помощью chroot(8), вам
не нужны никакие изменения или проявление особой осторожности
при написании DESTDIR
-совместимых портов.
Значение переменной PREFIX
будет установлено
в LOCALBASE
(по умолчанию
/usr/local
). Если
задана переменная USE_LINUX_PREFIX
, то
PREFIX
примет значение LINUXBASE
(по умолчанию /compat/linux
).
Избегание явно прописываемых путей /usr/local
в исходном коде сделает порт гораздо более гибким и способным
удовлетворить потребности других серверов. Часто этого можно
добиться простой заменой строк /usr/local
в различных файлах Makefile
внутри порта на
${PREFIX}
. Эта переменная
автоматически передаётся далее на каждом этапе построения и
установки.
Проверьте, что ваше приложение не устанавливает чего-либо в
каталог /usr/local
вместо
PREFIX
. Наличие явно указанных путей можно быстро
проверить следующим образом:
#
make clean; make package PREFIX=/var/tmp/`make -V PORTNAME`
Если что-то было установлено за пределами
PREFIX
, то процесс создания пакета сообщит об
отсутствии файлов.
Этот тест не найдет явно указанных путей внутри файлов порта
и не проверит корректность использования LOCALBASE
в качестве ссылки на файлы из других портов. Порт, временно
установленный в /var/tmp/`make -V PORTNAME`
,
следует проверять на работоспособность, чтобы убедиться в отсутствии
проблем с путями.
Переменная PREFIX
не должна задаваться явно в
файле Makefile
порта. Пользователи при установке
порта могут задать в PREFIX
свое собственное
место, и порт должен учитывать это значение.
Обратитесь к программам/файлам из других портов с
переменными, перечисленными выше, без указания явных маршрутов.
Например, если ваш порт требует, чтобы макрос PAGER
являлся полным путем утилиты less
, не используйте
строковый путь /usr/local/bin/less
. Вместо
этого используйте ${LOCALBASE}
:
Путь с использованием LOCALBASE
имеет больше
шансов оставаться работоспособным, если системный администратор
переместил всё дерево /usr/local
куда-то в другое
место.
Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.