"Создаем порт для FreeBSD своими руками" - читать интересную книгу автора (Ачилов Рашид)


В RUN_DEPENDS перечисляются все порты, от которых зависит данный
скрипт, а именно GNU AWK, sudo и Samba, из которой на самом деле нужна
только программа findsmb. "USE_BZIP2=yes" указывает на то, что дистрибутив
упакован программой bzip2. "NO_BUILD=yes" указывает на то, что программа не
требует сборки. Если этого не указать, то система будет пытаться выполнить
команду make в каталоге порта, не найдет Makefile и аварийно завершится.
Инсталляцией порт управляет самостоятельно - в Makefile присутствует
заменяющая подмишень do-install. Здесь хорошо видно, как можно организовать
цикл, который установит несколько файлов, перечисленных в списке, в
указанное место. После первого цикла, который устанавливает собственно
скрипты идет команда создания каталога для документации - система сама не
будет делать ничего, все необходимые каталоги должны быть созданы портом.
Такая странная форма записи команды означает что:
∙ если команда завершается неудачно, например, такой каталог уже
существует, то make не прекращает работу (минус перед командой);
∙ команда не отображается на терминале (знак @ перед командой).

Потом идет второй цикл, который устанавливает файлы примеров в каталог,
который для этого предварительно создается, создается каталог документации и
в него копируется файл README.FreeBSD.
Команда sed подготавливает файл pkg-message к отображению. В файле,
который распространяется вместе с портом присутствует макроподстановка
%%EXAMPLESDIR%%, которая, перед тем как это сообщение будет показано
пользователю, заменяется на значение переменной ${EXAMPLESDIR}. Чтобы не
изменять оригинальный файл pkg-message (возможно, в следующий раз установка
будет проходить с другим значением ${EXAMPLESDIR}), старый файл сохраняется,
измененный файл удаляется, старый файл переименовывается в оригинальное имя.
Порт несложный, но он демонстрирует, как можно использовать заменяющие
подмишени. При создании таких портов следует быть предельно внимательными -
помните, что любой каталог, не входящий в стандартное дерево каталогов,
описанное в bsd.local.mk, имеет право не существовать и должен быть
предварительно создан.

Модификация порта OpenOffice 1.1.4

С моей точки зрения, порт для сборки OpenOffice editors/openoffice имел
множество недостатков, но эти изменения я никогда не пробовал отправить во
FreeBSD Team для помещения их в дерево портов. Какие изменения были внесены
мной:
∙ возможность отказаться от сборки Mozilla Suite, нужной только для
работы с адресной книгой формата Mozilla;
∙ возможность загрузить и применить последний (на тот момент) файл
локализации интерфейса;
∙ возможность загрузить и применить внешние патчи, созданные в
"Инфра-Ресурс" для версии для Linux.
Порт на самом деле состоит из двух файлов - editors/openoffice-1.1 и
russian/openoffice. Makefile порта russian/openoffice-1.1 достаточно прост:

CATEGORIES= russian