您可以使用必需的信息文件 pkginfo 和 prototype 中的变量。也可以使用 pkgmk 命令的选项,该命令用于生成软件包。随着本章对这些文件和命令的讨论,将会提供更多有关这些变量的上下文相关信息。不过,在开始生成软件包之前,您应该了解不同类型的变量,以及它们如何影响软件包的成功创建。
变量可以分为两种类型:
在 pkginfo 文件中,变量定义采用 PARAM=value 形式,其中,PARAM 的首字母是大写字母。仅在安装时对这些变量进行计算。如果这些变量中的任一个不能被计算,则 pkgadd 命令将出错而异常中止。
在 prototype 文件中,变量定义可采用 !PARAM=value 或 $ variable 形式。PARAM 和 variable 均可以一个大写或小写字母开头。只有在生成时值已知的变量才会被计算。如果 PARAM 或 variable 是在生成时值未知的生成变量或安装变量,则 pkgmk 命令将出错而异常中止。
您还可以将 PARAM=value 选项用作 pkgmk 命令的选项。此选项的作用与在 prototype 文件中基本相同,只不过其作用域是全局的,适用于整个软件包。 prototype 文件中的 !PARAM=value 定义是局部的,仅适用于该文件及其所定义的软件包组成部分。
如果 PARAM 是安装变量,而 variable 是值已知的安装变量或生成变量,则 pkgmk 命令会将定义插入到 pkginfo 文件中,以便该定义在安装时可用。但是,pkgmk 命令不会计算在 prototype 文件中指定的任何路径名中的 PARAM 变量。
下表汇总了变量的规范格式、位置和作用域。
表 2–2 软件包环境变量汇总
变量的定义位置 |
变量定义格式 |
定义的变量类型 |
变量计算时间 |
变量计算位置 |
变量可以替换的项目 |
---|---|---|---|---|---|
pkginfo 文件 |
PARAM=value |
生成 |
在生成时忽略 |
N/A |
无 |
安装 |
安装时 |
在 pkgmap 文件中 |
owner、group、path 或链接目标 |
||
prototype 文件 |
!PARAM=value |
生成 |
生成时 |
在 prototype 文件和任何内含的文件中 |
mode、owner、group 或 path |
安装 |
生成时 |
在 prototype 文件和任何内含的文件中 |
仅 !search 和 !command 命令 |
||
pkgmk 命令行 |
PARAM=value |
生成 |
生成时 |
在 prototype 文件中 |
mode、owner、group 或 path |
安装 |
生成时 |
在 prototype 文件中 |
仅 !search 命令 |
||
安装时 |
在 pkgmap 文件中 |
owner、group、path 或链接目标 |