Переменная 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>.