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
Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD .
Есть несколько приёмов работы с файлами pkg-* , которые мы ещё не описали, но они иногда могут быть очень кстати.
Если вам нужно вывести сообщение для человека, устанавливающего приложение, то вы можете поместить сообщение в файл
pkg-message
. Эта возможность часто оказывается полезной для вывода дополнительных шагов установки, которые нужно предпринять после выполнения команды
pkg install
, или для вывода информации о лицензировании.
Если должны выводиться некоторые строки о knobs времени построения или предупреждения, используйте
ECHO_MSG
. Файл
pkg-message
только для послеустановочных шагов. Также следует иметь в виду различие между
ECHO_MSG
и
ECHO_CMD
. Первое предназначено для вывода на экран информационного текста, а второе для конвейера команд:
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
|
Файл pkg-message не нужно добавлять в pkg-plist . |
Если при установке бинарного пакета по команде
pkg add
или
pkg install
вашему порту нужно выполнить какие-то команды, то вы можете это сделать с помощью скрипта
pkg-install
. Этот скрипт будет автоматически добавлен к пакету и будет дважды запускаться командой
pkg
: первый раз в виде
${SH} pkg-install ${PKGNAME} PRE-INSTALL
, а второй раз как
${SH} {PKGNAME} POST-INSTALL
. Для распознавания того, в каком режиме запущен скрипт, можно использовать параметр
$2
. Переменная окружения
PKG_PREFIX
будет принимать значение, соответствующее каталогу, в который устанавливается пакет.
|
Этот скрипт не запускается автоматически, если вы устанавливаете порт командой
|
Этот скрипт вызывается при удалении пакета.
Этот скрипт будет дважды запускаться командой
pkg delete
. Первый раз как
${SH} pkg-deinstall ${PKGNAME} DEINSTALL
, а второй раз как
${SH} pkg-deinstall ${PKGNAME} POST-DEINSTALL
.
Все имена файлов
pkg-*
определяются с помощью переменных, так что вы можете изменить их, если это нужно, в вашем файле
Makefile
. Это особенно полезно, если вы используете одни и те же файлы
pkg-*
совместно между несколькими портами или пишете в один из вышеперечисленных файлов (в главе о
"записи в каталоги, отличные от
WRKDIR
"
объяснено, почему не рекомендуется осуществлять запись непосредственно в файлы
pkg-*
.
Вот список имён переменных и их значений по умолчанию. (Значение
PKGDIR
по умолчанию равно
${MASTERDIR}
.)
| Переменная | Значение по умолчанию |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Пожалуйста, изменяйте значения этих переменных, а не переопределяйте
PKG_ARGS
. Если вы измените значение переменных
PKG_ARGS
, то эти файлы при установке из порта будут установлены в каталог
/var/db/pkg
некорректно.
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