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.
Изменено: 18 февраля 2025 г. by Fernando Apesteguía