Переменная PREFIX
определяет, куда будет
установлен порт. По умолчанию это
/usr/local
, но может меняться
пользователем на собственный путь, такой как
/opt
. В вашем порту значение этой
переменной должно учитываться.
Если пользователь установил переменную
DESTDIR
, то она определяет полное
альтернативное окружение, обычно, это jail или установленная
система, смонтированная в месте, отличном от
/
. На самом деле порт устанавливается в
DESTDIR/PREFIX
и регистрируется в базе
данных пакетов в DESTDIR/var/db/pkg
.
Поскольку управление DESTDIR
производится
автоматически инфраструктурой портов с помощью 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
, то процесс создания пакета сообщит
об отсутствии файлов.
Это также стоит проверить с использованием поддержки
каталога сборки (смотрите Раздел 6.1, <
#
make stage && make check-orphans && make package
Эти проверки не найдут явно указанных путей внутри файлов
порта и не проверят корректность использования
LOCALBASE
в качестве ссылки на файлы из
других портов. Порт, временно установленный в
/var/tmp/`make -V PORTNAME`
, следует
проверять на работоспособность, чтобы убедиться в отсутствии
проблем с путями.
Переменная PREFIX
не должна задаваться
явно в файле Makefile
порта. Пользователи
при установке порта могут задать в PREFIX
свое собственное место, и порт должен учитывать это
значение.
Обратитесь к программам/файлам из других портов с
переменными, перечисленными выше, без указания явных маршрутов.
Например, если ваш порт требует, чтобы макрос
PAGER
являлся полным путем утилиты
less
, не используйте строковый путь
/usr/local/bin/less
. Вместо этого
используйте ${LOCALBASE}
:
-DPAGER=\"${LOCALBASE}/bin/less\"
Путь с использованием LOCALBASE
имеет
больше шансов оставаться работоспособным, если системный
администратор переместил всё дерево
/usr/local
куда-то в другое место.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.