消息由双引号"
分隔,这用于简单的单行字符串。
[ { type: install message: "Simple message" } ]
我们还没有提到一些关于有时会派上用场的 pkg-* 文件的技巧。
要显示在安装软件包时显示的消息,请将消息放在 pkg-message 中。此功能通常用于在 pkg install
或 pkg upgrade
后显示需要采取的其他安装步骤。
|
pkg-message 支持两种格式
一个普通的纯文本文件。其消息仅在安装时显示。
如果文件以“[”开头,则它被认为是 UCL 文件。UCL 格式在 libucl 的 GitHub 页面 上进行了描述。
不要在 pkg-plist 中添加 pkg-message 的条目。 |
格式如下。它应该是一个对象数组。对象本身可以具有以下关键字
消息
要显示的实际消息。此关键字是必需的。
类型
何时显示消息。
最大版本
仅当 type
为 upgrade
时。如果从严格低于指定版本的版本升级,则显示。
最小版本
仅当type
为upgrade
时显示。如果从严格高于指定版本的版本升级,则显示。
maximum_version
和minimum_version
关键字可以组合使用。
type
关键字可以有三个值
install
仅在安装软件包时显示消息。
remove
仅在删除软件包时显示消息。
upgrade
仅在升级软件包期间显示消息。
为了保持与非 UCL pkg-message 文件的兼容性,UCL pkg-message 文件的第一行**必须**是单个“[”,最后一行**必须**是单个“]”。 |
消息由双引号"
分隔,这用于简单的单行字符串。
[ { type: install message: "Simple message" } ]
多行字符串使用标准的here document表示法。多行分隔符**必须**紧跟在<<
符号之后,中间没有空格,并且**必须**仅由大写字母组成。要结束多行字符串,请在单独一行上添加分隔符字符串,中间没有空格。UCL 短字符串中的消息可以写成
[ { type: install message: <<EOM Simple message EOM } ]
当消息只需要在安装或卸载时显示时,请设置type
[ { 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脚本。pkg
运行的Lua脚本提供了一些扩展和一些限制,两者都在pkg-lua-script(5)中进行了说明。
建议使用pkg-pre-install(或pkg-pre-install.lua)和pkg-post-install(或pkg-post-install.lua),而不是使用pkg-install。 |
这些脚本会自动添加到打包列表中。
这些脚本旨在简化安装后的软件包配置。**不得**滥用它们来启动服务、停止服务或运行任何其他会修改当前正在运行的系统的命令。 |
这些脚本在删除软件包时执行。
pkg delete
运行pkg-deinstall脚本两次。第一次在卸载端口之前作为${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脚本。pkg
运行的Lua脚本提供了一些扩展和一些限制,两者都在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
对于端口文件中的动态值很有用,例如pkg-message中的安装PREFIX
。
SUB_FILES
指定要自动修改的文件列表。SUB_FILES
列表中的每个file都必须在FILESDIR
中有一个对应的file.in。将创建一个修改后的版本作为${WRKDIR}/file。定义为USE_RC_SUBR
值的会被自动添加到SUB_FILES
中。对于文件pkg-message、pkg-install和pkg-deinstall,相应的Makefile变量会自动设置为指向处理后的版本。
SUB_LIST
是VAR=VALUE
对的列表。对于每一对,%%VAR%%
将被替换为SUB_FILES
中列出的每个文件中的VALUE
。自动定义了一些常见的对:PREFIX
、LOCALBASE
、DATADIR
、DOCSDIR
、EXAMPLESDIR
、WWWDIR
和ETCDIR
。任何以@comment
后跟空格开头的行,在变量替换后都将从结果文件中删除。
此示例将pkg-message中的%%ARCH%%
替换为系统架构。
SUB_FILES= pkg-message SUB_LIST= ARCH=${ARCH}
请注意,对于此示例,pkg-message.in必须存在于FILESDIR
中。
一个好的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.
上次修改时间:2024年9月23日,作者 Fernando Apesteguía