Сообщение ограничено двойными кавычками "
, это используется для простых однострочных строк:
[ { 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