Руководство FreeBSD по созданию портов
Пред. | Глава 14. Тестирование вашего порта | След.

# 14.3. `PREFIX`

Попытайтесь сделать так, чтобы установка вашего порта осуществлялась относительно каталога `PREFIX`. (Значение этой переменной будет установлено в `LOCALBASE` (по умолчанию `/usr/local`), если только не заданы переменные `USE_X_PREFIX` или `USE_IMAKE`, в случае чего он будет принят равным `X11BASE` (по умолчанию `/usr/X11R6`).

Избежание явного указания `/usr/local` или `/usr/X11R6` в исходном коде сделает порт гораздо более гибким и способным удовлетворить потребности других серверов. Для портов, которые используют X, это происходит автоматически; в противном случае зачастую это может быть сделано простой заменой строк `/usr/local` (или `/usr/X11R6` для портов X, не использующих imake) в различных файлах `scripts/Makefile` порта на использование `${PREFIX}`, так как эта переменная автоматически передаётся далее на каждом этапе построения и установки.

Проверьте, что ваше приложение не устанавливает чего-либо в каталог `/usr/local` вместо `PREFIX`. Это можно быстро проверить следующим образом:

    # make clean; make package PREFIX=/var/tmp/port-name

Если что-то было установлено за пределами `PREFIX`, то процесс создания пакета сообщит об отсутствии файлов.

Здесь не проверяется ни наличие внешних ссылок, ни корректность использования `LOCALBASE` в качестве ссылки на файлы из других портов. Проверка установки в каталог `/var/tmp/`port-name`` делает это.

Не задавайте переменную `USE_X_PREFIX` до тех пор, пока она на самом деле не понадобится для порта (то есть он будет скомпонован с библиотеками X или нужно будет обращаться к файлам из `X11BASE`).

Переменная `PREFIX` может быть переназначена в вашем файле `Makefile` или в окружении пользователя. Однако строго не рекомендуется отдельным портам устанавливать эту переменную явно в файлах `Makefile`.

Кроме того, обратитесь к программам/файлам из других портов с переменными, перечисленными выше, без указания явных маршрутов. Например, если ваш порт требует, чтобы макро `PAGER` являлся полным путем утилиты `less`, используйте флаг компилятора:

    -DPAGER=\"${PREFIX}/bin/less\"

или

    -DPAGER=\"${LOCALBASE}/bin/less\"

если это порт X, вместо того, чтобы задавать `-DPAGER=\"/usr/local/bin/less\"`. Этот способ имеет больше шансов на работу, если системный администратор переместил всё дерево `/usr/local` куда-то в другое место.

Пред. | Начало | След.
Portlint | Уровень выше | Обновление

По вопросам связанным с системой портов для FreeBSD, пишите по адресу <ports@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите по адресу <doc@FreeBSD.org>.