Переменная 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, то процесс создания пакета сообщит об
отсутствии файлов.
Этот тест не найдет явно указанных путей внутри файлов порта
и не проверит корректность использования LOCALBASE
в качестве ссылки на файлы из других портов. Порт, временно
установленный в /var/tmp/`make -V PORTNAME`,
следует проверять на работоспособность, чтобы убедиться в отсутствии
проблем с путями.
Переменная PREFIX не должна задаваться явно в
файле Makefile порта. Пользователи при установке
порта могут задать в PREFIX свое собственное
место, и порт должен учитывать это значение.
Обратитесь к программам/файлам из других портов с
переменными, перечисленными выше, без указания явных маршрутов.
Например, если ваш порт требует, чтобы макрос PAGER
являлся полным путем утилиты less, не используйте
строковый путь /usr/local/bin/less. Вместо
этого используйте ${LOCALBASE}:
-DPAGER=\"${LOCALBASE}/bin/less\"Путь с использованием LOCALBASE имеет больше
шансов оставаться работоспособным, если системный администратор
переместил всё дерево /usr/local куда-то в другое
место.
Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.