Руководство FreeBSD по созданию портов
Пред. | Глава 12. Что делать нужно, и что делать нельзя | След.

# 12.14. Пометка неустанавливаемого порта как `BROKEN`, `FORBIDDEN` или `IGNORE`

В некоторых случаях пользователи не должны допускаться к установке порта. Для того, чтобы сообщить пользователю, что порт не следует устанавливать, имеется несколько `make`-переменных, которые могут быть использованы в файле `Makefile` порта. Значения следующих `make`-переменных будут причиной, возвращаемой пользователям, по которой порт отказывает в установке. Пожалуйста, используйте корректные `make`-переменные, так как каждая переменная make передает абсолютно различный смысл как для пользователей, так и для автоматизированных систем, которые полагаются на файлы `Makefile`, таких как кластер построения портов, FreshPorts и portsmon.

## 12.14.1. Переменные

- `BROKEN` предназначена для портов, которые в настоящее время не компилируются, не устанавливаются или не удаляются правильно. Следует использовать для портов, когда проблема считается временной.

  В особых случаях кластер построения будет продолжать попытки собрать их, чтобы показать, решена ли основная проблема. (Однако, как правило, кластер запускается без этой возможности.)

  В частности, используйте `BROKEN`, когда порт:

  - не компилируется

  - не выполняет процесс своей конфигурации или установки

  - устанавливает файлы вовне `${LOCALBASE}`

  - не удаляет полностью все свои файлы при деинсталляции (тем не менее, это может быть допустимо, и подходит для портов, оставляющих после себя файлы, измененные пользователем)

- `FORBIDDEN` используется для портов, которые содержат уязвимости в информационной безопасности или являются потенциально вредными в плане обеспечения информационной безопасности системы FreeBSD при установке данного порта (например: заведомо небезопасная программа или программа, которая предоставляет легко взламываемые сервисы). Порты должны помечаться как `FORBIDDEN`, как только в конкретном программном обеспечении обнаружилась уязвимость, но обновление выпущено не было. В идеальном случае порты должны обновляться максимально быстро после обнаружения уязвимости, чтобы уменьшить число уязвимых хостов FreeBSD (нам нравится иметь репутацию безопасной системы), однако иногда случается значительный временной разрыв между обнаружением уязвимости и выходом обновлённого релиза уязвимого программного обеспечения. Не помечайте порт как `FORBIDDEN`, если причина не вызвана соображениями информационной безопасности.

- `IGNORE` предназначена для портов, которые не должны строиться по какой-либо другой причине. Следует использовать для портов, в случае когда проблема считает конструктивной. Кластер построения ни при каких условиях не будет строить порты, помеченные как `IGNORE`. В частности, используйте `IGNORE`, когда порт:

  - компилируется, но работает неправильно

  - не работает на установленной версии FreeBSD

  - требует для построения исходные тексты ядра FreeBSD, но у пользователя в установленном виде они отсутствуют

  - имеет distfile, который не может быть автоматически извлечен из-за лицензионных ограничений

  - не работает с каким-либо другим портом, установленным в настоящее время (например, порт зависит от `www/apache20`, но установлен `www/apache22`)

  > Замечание: Если порт будет конфликтовать с уже установленным портом, (например, если они устанавливают файл в то же место, но с иным функциональным назначением), то используйте вместо этого `CONFLICTS`. `CONFLICTS` сам установит значение `IGNORE`.

- Если порт нужно пометить как `IGNORE` только на некоторых архитектурах, для этого есть две другие удобные переменные, которые автоматически установят для вас значения: `ONLY_FOR_ARCHS` и `NOT_FOR_ARCHS`. Примеры:

      ONLY_FOR_ARCHS= i386 amd64

      NOT_FOR_ARCHS= ia64 sparc64

  Собственное сообщение `IGNORE` можно задать с использованием `ONLY_FOR_ARCHS_REASON` и `NOT_FOR_ARCHS_REASON`. Отдельно для каждой архитектуры это возможно с использованием `ONLY_FOR_ARCHS_REASON_`ARCH`` и `NOT_FOR_ARCHS_REASON_`ARCH``.

- Если порт загружает и устанавливает исполняемые файлы i386, то следует установить `IA32_BINARY_PORT`. Если эта переменная установлена, будет выполнена проверка доступности каталога `/usr/lib32` для библиотек версии IA32 и поддержки IA32 в ядре. При невыполнении любого из этих условий будет автоматически установлена переменная `IGNORE`.

## 12.14.2. Замечания по реализации

Строки не следует брать в кавычки. Также построение строки должно несколько различаться из-за способа отображения информации пользователю. Примеры:

    BROKEN= this port is unsupported on FreeBSD 5.x

    IGNORE= is unsupported on FreeBSD 5.x

получаемые в результате следующего вывода `make describe`:

    ===>  foobar-0.1 is marked as broken: this port is unsupported on FreeBSD 5.x.

    ===>  foobar-0.1 is unsupported on FreeBSD 5.x.

Пред. | Начало | След.
`README.html` | Уровень выше | Пометка порта на удаление с `DEPRECATED` или `EXPIRATION_DATE`

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