9.4. `PREFIX` и `DESTDIR`
Пред. | Глава 9. Тестирование вашего порта | След.

## 9.4. `PREFIX` и `DESTDIR`

Переменная `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` куда-то в другое место.

Пред. | Наверх | След.
9.3. Port Tools | Начало | 9.5. Tinderbox

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

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