Глава 8. Файлы pkg-*

Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD .

Содержание

Есть несколько приёмов работы с файлами pkg-* , которые мы ещё не описали, но они иногда могут быть очень кстати.

8.1. pkg-message

Если вам нужно вывести сообщение для человека, устанавливающего приложение, то вы можете поместить сообщение в файл 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 .

8.2. pkg-install

Если при установке бинарного пакета по команде pkg add или pkg install вашему порту нужно выполнить какие-то команды, то вы можете это сделать с помощью скрипта pkg-install . Этот скрипт будет автоматически добавлен к пакету и будет дважды запускаться командой pkg : первый раз в виде ${SH} pkg-install ${PKGNAME} PRE-INSTALL , а второй раз как ${SH} {PKGNAME} POST-INSTALL . Для распознавания того, в каком режиме запущен скрипт, можно использовать параметр $2 . Переменная окружения PKG_PREFIX будет принимать значение, соответствующее каталогу, в который устанавливается пакет.

Этот скрипт не запускается автоматически, если вы устанавливаете порт командой make install . Если же вам действительно необходимо его запустить, то запустите его явно из файла Makefile порта строкой вида PKG_PREFIX=${PREFIX} ${SH} $ {PKGINSTALL}${PKGNAME} PRE-INSTALL .

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} .)

Переменная Значение по умолчанию

DESCR

${PKGDIR}/pkg-descr

PLIST

${PKGDIR}/pkg-plist

PKGINSTALL

${PKGDIR}/pkg-install

PKGDEINSTALL

${PKGDIR}/pkg-deinstall

PKGMESSAGE

${PKGDIR}/pkg-message

Пожалуйста, изменяйте значения этих переменных, а не переопределяйте 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