update-etc-shells: @${ECHO_MSG} "updating /etc/shells" @${CP} /etc/shells /etc/shells.bak @( ${GREP} -v ${PREFIX}/bin/bash /etc/shells.bak; \ ${ECHO_CMD} ${PREFIX}/bin/bash) >/etc/shells @${RM} /etc/shells.bak
Глава 8. Файлы pkg-*
Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD.
Содержание
Есть несколько приёмов работы с файлами pkg-*, которые мы ещё не описали, но они иногда могут быть очень кстати.
8.1. pkg-message
Если вам нужно вывести сообщение для человека, устанавливающего приложение, то вы можете поместить сообщение в файл pkg-message. Эта возможность часто оказывается полезной для вывода дополнительных шагов установки, которые нужно предпринять после выполнения команды pkg install
, или для вывода информации о лицензировании.
Если должны выводиться некоторые строки о knobs времени построения или предупреждения, используйте ECHO_MSG
. Файл pkg-message только для послеустановочных шагов. Также следует иметь в виду различие между ECHO_MSG
и ECHO_CMD
. Первое предназначено для вывода на экран информационного текста, а второе для конвейера команд:
Файл pkg-message не нужно добавлять в pkg-plist. |
8.2. pkg-install
Если при установке бинарного пакета по команде pkg add
или pkg install
вашему порту нужно выполнить какие-то команды, то вы можете это сделать с помощью скрипта pkg-install. Этот скрипт будет автоматически добавлен к пакету и будет дважды запускаться командой pkg
: первый раз в виде ${SH} pkg-install ${PKGNAME} PRE-INSTALL
, а второй раз как ${SH} {PKGNAME} POST-INSTALL
. Для распознавания того, в каком режиме запущен скрипт, можно использовать параметр $2
. Переменная окружения PKG_PREFIX
будет принимать значение, соответствующее каталогу, в который устанавливается пакет.
Этот скрипт не запускается автоматически, если вы устанавливаете порт командой |
8.3. pkg-deinstall
Этот скрипт вызывается при удалении пакета.
Этот скрипт будет дважды запускаться командой pkg delete
. Первый раз как ${SH} pkg-deinstall ${PKGNAME} DEINSTALL
, а второй раз как ${SH} pkg-deinstall ${PKGNAME} POST-DEINSTALL
.
8.4. Изменение имён файлов pkg-*
Все имена файлов pkg-* определяются с помощью переменных, так что вы можете изменить их, если это нужно, в вашем файле Makefile. Это особенно полезно, если вы используете одни и те же файлы pkg-* совместно между несколькими портами или пишете в один из вышеперечисленных файлов (в главе о "записи в каталоги, отличные от WRKDIR
" объяснено, почему не рекомендуется осуществлять запись непосредственно в файлы pkg-*.
Вот список имён переменных и их значений по умолчанию. (Значение PKGDIR
по умолчанию равно ${MASTERDIR}
.)
Переменная | Значение по умолчанию |
---|---|
|
|
|
|
|
|
|
|
|
|
Пожалуйста, изменяйте значения этих переменных, а не переопределяйте PKG_ARGS
. Если вы измените значение переменных PKG_ARGS
, то эти файлы при установке из порта будут установлены в каталог /var/db/pkg некорректно.
8.5. Использование 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.
Изменено: 9 марта 2024 г. by Danilo G. Baio