应用程序包开发者指南

prototype 文件添加功能

除了在 prototype 文件中定义每个软件包对象外,您还可以执行以下操作:

有关进行这些更改的信息,请参见以下各节。

定义要在安装时创建的其他对象

可以使用 prototype 文件定义在安装介质上实际没有提供的对象。在安装期间,如果这些对象尚不存在,则使用 pkgadd 命令创建的对象将具有所需的文件类型。

要指定将在目标系统上创建对象,请在 prototype 文件中使用适当文件类型为其添加一个条目。

例如,如果您要在目标系统上创建目录,但是不想在安装介质上提供该目录,请在 prototype 文件中为其添加以下条目:


d none /directory 0644 root other

如果您希望在目标系统上创建一个空文件,prototype 文件中该文件的条目可能如下所示:


f none filename=/dev/null 0644 bin bin

必须在安装介质上提供的对象只有常规文件和编辑脚本(文件类型 evf)以及包含这些内容所需的目录。所有其他对象的创建都与提供的对象、目录、命名管道、设备、硬链接和符号链接无关。

在安装时创建链接

要在软件包安装期间创建链接,请在链接对象的 prototype 文件条目中定义以下内容:

无论软件包是安装为绝对还是可重定位软件包,都将以这种方式指定相对链接。

将软件包分发到多个卷上

使用 pkgmk 命令生成软件包时,该命令将执行组织多卷软件包所需的计算和操作。一个多卷软件包称为分段的软件包

不过,您可以在 prototype 文件中使用可选 part 字段定义希望对象所处的部分。此字段中的一个数字将重写 pkgmk 命令,并强制将组件放置到该字段中指定的部分。请注意,对于设置为文件系统格式的可移除介质,各部分和卷之间存在一对一的对应关系。如果卷由开发者预先指定,当任何卷上存在空间不足情况时,pkgmk 命令会引发错误。

嵌套 prototype 文件

可以创建多个 prototype 文件,然后使用 !include 命令将它们包括在 prototype 文件中。您可能需要嵌套文件以更便于维护。

在以下示例中有三个 prototype 文件。主文件 (prototype) 正被编辑。另外两个文件(proto2proto3)是要包括的文件。


!include /source-dir/proto2
!include /source-dir/proto3

modeownergroup 字段设置缺省值

要为特定软件包对象的 modeownergroup 字段设置缺省值,可将 !default 命令插入到 prototype 文件中。例如:


!default 0644 root other

注 –

!default 命令的作用域从插入位置开始直到文件结束。该命令的作用域不包括内含的文件。


但是,对于您知道在目标系统(例如 /usr/etc/vfstab)上存在的目录(文件类型 d)和可编辑文件(文件类型 e),请确保 prototype 文件中的 modeownergroup 字段设置为问号 (?)。这样就不会销毁站点管理员可能已修改的现有设置。

pkgmk 命令提供搜索路径

如果软件包对象的源位置与其目标位置不同,并且您不希望使用关于对象的源位置和目标位置的简要说明中所述的 path1=path2 格式,则可以在 prototype 文件中使用 !search 命令。

例如,如果您在自己的主目录中创建了目录 pkgfiles,并且该目录包含您的所有信息文件和安装脚本,可以指定在使用 pkgmk 命令生成软件包时搜索该目录。

在 prototype 文件中该命令将如下所示:


!search /home-dir/pkgfiles

注 –

搜索请求不涉及内含的文件。另外,搜索仅限于列出的特定目录,而且不进行递归搜索。


设置环境变量

也可以向 prototype 文件中添加 !PARAM=value 形式的命令。此形式的命令可在当前环境中定义变量。如果有多个 prototype 文件,则此命令的作用域是局部的,仅限于定义它的 prototype 文件。

PARAM 变量的首字母可以是小写字母或大写字母。如果 PARAM 变量的值在生成时未知,pkgmk 命令将出错而异常中止。有关生成变量与安装变量之间区别的更多信息,请参见软件包环境变量