Сообщение ограничено двойными кавычками ", это используется для простых однострочных строк:
[
{ type: install
message: "Simple message"
}
]Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD.
Есть несколько приёмов работы с файлами pkg-*, которые мы ещё не описали, но они иногда могут быть очень кстати.
Если вам нужно вывести сообщение для человека, устанавливающего приложение, то вы можете поместить сообщение в файл pkg-message. Эта возможность часто оказывается полезной для вывода дополнительных шагов установки, которые нужно предпринять после выполнения команды pkg install, или для вывода информации о лицензировании.
|
pkg-message поддерживает два формата:
Обычный текстовый файл. Его сообщение отображается только при установке.
Если файл начинается с символа “[”, то он считается файлом в формате UCL. Формат UCL описан на странице libucl’s GitHub page.
Не добавляйте запись для pkg-message в pkg-plist. |
Формат следующий. Это должен быть массив объектов. Сами объекты могут содержать следующие ключевые слова:
messageОтображаемое сообщение. Этот ключевой параметр является обязательным.
typeКогда сообщение должно быть отображено.
maximum_versionТолько если type имеет значение upgrade. Отображается, если обновление выполняется с версии строго ниже указанной.
minimum_versionТолько если type имеет значение upgrade. Отображается, если обновление выполняется с версии, строго большей, чем указанная.
Ключевые слова maximum_version и minimum_version можно комбинировать.
Ключевое слово type может иметь три значения:
installСообщение должно отображаться только при установке пакета.
removeСообщение должно отображаться только при удалении пакета.
upgradeсообщение должно отображаться только во время обновления пакета.
Для сохранения совместимости с файлами pkg-message, не использующими UCL, первая строка UCL pkg-message ДОЛЖНА быть одиночным символом “[”, а последняя строка ДОЛЖНА быть одиночным символом “]”. |
Сообщение ограничено двойными кавычками ", это используется для простых однострочных строк:
[
{ type: install
message: "Simple message"
}
]Многострочные строки используют стандартную нотацию heredoc. Разделитель многострочной строки должен начинаться сразу после символов << без пробелов и должен состоять только из заглавных букв. Чтобы завершить многострочную строку, добавьте строку-разделитель на отдельной строке без пробелов. Сообщение из раздела Короткие строки UCL может быть записано как:
[
{ type: install
message: <<EOM
Simple message
EOM
}
]Когда сообщение нужно отображать только при установке или удалении, укажите тип:
[
{
type: remove
message: "package being removed."
}
{ type: install, message: "package being installed."}
]При обновлении порта отображаемое сообщение может быть ещё более адаптировано к потребностям порта.
[
{
type: upgrade
message: "Package is being upgraded."
}
{
type: upgrade
maximum_version: "1.0"
message: "Upgrading from before 1.0 need to do this."
}
{
type: upgrade
minimum_version: "1.0"
message: "Upgrading from after 1.0 should do that."
}
{
type: upgrade
maximum_version: "3.0"
minimum_version: "1.0"
message: "Upgrading from > 1.0 and < 3.0 remove that file."
}
]Если порту необходимо выполнять команды при установке бинарного пакета с помощью pkg add или pkg install, используйте pkg-install. Он запускается дважды через pkg: первый раз как ${SH} pkg-install ${PKGNAME} PRE-INSTALL перед установкой пакета и второй раз как ${SH} pkg-install ${PKGNAME} POST-INSTALL после его установки. Переменная $2 может быть проверена, чтобы определить, в каком режиме выполняется скрипт. Переменная окружения PKG_PREFIX устанавливается равной имени каталога установки пакета.
Если используется pkg-pre-install или pkg-post-install, скрипт выполняется только один раз (до или после установки пакета), с единственным аргументом ${PKGNAME}. Использование pkg-pre-install.lua или pkg-post-install.lua запускает скрипт на Lua вместо shell-скрипта. Скрипты на Lua, выполняемые pkg, предоставляют некоторые расширения и несколько ограничений, которые описаны в pkg-lua-script(5).
Использование pkg-pre-install (или pkg-pre-install.lua) и pkg-post-install (или pkg-post-install.lua) предпочтительнее, чем использование pkg-install. |
Эти скрипты автоматически добавляются в список упаковки.
Эти скрипты предназначены для упрощения настройки пакетов после установки. Они не должны использоваться для запуска служб, остановки служб или выполнения любых других команд, которые изменяют текущую работающую систему. |
Эти скрипты выполняются при удалении пакета.
Скрипт pkg-deinstall выполняется дважды командой pkg delete. Первый раз как ${SH} pkg-deinstall ${PKGNAME} DEINSTALL до удаления порта и второй раз как ${SH} pkg-deinstall ${PKGNAME} POST-DEINSTALL после удаления порта. Переменная $2 может быть проверена для определения режима, в котором выполняется скрипт. Переменная окружения PKG_PREFIX устанавливается в каталог установки пакета.
Если используется pkg-pre-deinstall или pkg-post-deinstall, скрипт выполняется только один раз (до или после удаления пакета) с единственным аргументом ${PKGNAME}. Использование pkg-pre-deinstall.lua или pkg-post-deinstall.lua запустит скрипт на Lua вместо shell-скрипта. Скрипты на Lua, выполняемые pkg, предоставляют некоторые расширения и ограничения, которые описаны в pkg-lua-script(5).
Использование pkg-pre-deinstall (или pkg-pre-deinstall.lua) и pkg-post-deinstall (или pkg-post-deinstall.lua) предпочтительнее, чем использование pkg-deinstall. |
Эти скрипты автоматически добавляются в список упаковки.
Эти скрипты предназначены для упрощения очистки после удаления пакетов. Они не должны использоваться для запуска служб, остановки служб или выполнения любых других команд, которые изменяют текущую работающую систему. |
Все имена файлов pkg-* определяются с помощью переменных, так что вы можете изменить их, если это нужно, в вашем файле Makefile. Это особенно полезно, если вы используете одни и те же файлы pkg-* совместно между несколькими портами или пишете в один из вышеперечисленных файлов (в главе о записи в каталоги, отличные от WRKDIR объяснено, почему не рекомендуется осуществлять запись непосредственно в файлы pkg-*).
Вот список имён переменных и их значений по умолчанию. (Значение PKGDIR по умолчанию равно ${MASTERDIR}.)
| Переменная | Значение по умолчанию |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SUB_FILES и SUB_LISTПеременные SUB_FILES и SUB_LIST подходят для задания в файлах порта динамических значений, таких как PREFIX установки в pkg-message.
В переменной SUB_FILES указывается перечень файлов для автоматического изменения. Каждый file из перечня SUB_FILES обязан иметь соответствующий file.in, присутствующий в FILESDIR. Измененная версия будет создана в WRKDIR. Файлы, определенные в качестве значения USE_RC_SUBR (или устаревшего USE_RCORDER), автоматически добавляются в SUB_FILES. Для файлов pkg-message, pkg-install и pkg-deinstall устанавливается соответствующая переменная Makefile, указывающая на обработанную версию.
Переменная SUB_LIST содержит перечень пар VAR=VALUE. В каждом файле из SUB_FILES для каждой пары будет произведена замена %%VAR%% на VALUE. Некоторые общие пары определяются автоматически: PREFIX, LOCALBASE, DATADIR, DOCSDIR, EXAMPLESDIR, WWWDIR и ETCDIR. Любая строка, начинающаяся с @comment, будет удалена из конечного файла после подстановки переменной.
В следующем примере в pkg-message будет сделана замена %%ARCH%% на системную архитектуру:
SUB_FILES= pkg-message
SUB_LIST= ARCH=${ARCH}Обратите внимание, что в этом примере в FILESDIR обязательно существование файла pkg-message.in.
Пример хорошего pkg-message.in:
Now it is time to configure this package. Copy %%PREFIX%%/shared/examples/putsy/%%ARCH%%.conf into your home directory as .putsy.conf and edit it.
Изменено: 18 сентября 2025 г. by Vladlen Popolitov