应用程序包开发者指南

创建类归档软件包

类归档软件包是对应用称序二进制接口 (Application Binary Interface, ABI) 的增强,其中,某些文件集已经组合为单个文件(即归档文件),并且可能已选择性地压缩或加密。类归档格式最多可使初始安装速度提高 30%,并且在将软件包和修补程序安装到可能活动的文件系统上的过程中提高可靠性。

以下各节提供有关归档软件包目录结构、关键字和 faspac 实用程序的信息。

归档软件包目录的结构

下图中显示的软件包条目表示包含软件包文件的目录。此目录必须与软件包同名。

图 6–1 软件包目录结构

该图显示了直接位于软件包目录下的五个子目录: pkginfo、pkgmap、reloc、root 和 install。此外,还显示了其子目录。

下面列出了软件包目录内包含的文件和目录的功能。

项 

说明 

pkginfo

文件,对软件包进行总体描述,包括特殊环境变量和安装指令 

pkgmap

描述每个要安装对象的文件,如文件、目录或管道 

reloc

可选目录,包含要相对于基目录安装的文件(可重定位的对象) 

root

可选目录,包含要相对于 root 目录安装的文件(根对象)

install

可选目录,包含脚本和其他辅助文件(除了 pkginfopkgmap,所有 ftype i 文件都位于此处)

使用类归档格式,软件包生成器可以将 relocroot 目录中的文件组合到归档文件中,然后对其进行压缩、加密或以所需的任何方式进行其他处理,以便提高安装速度,减小软件包大小,或者增加软件包的安全性。

ABI 允许将软件包内的任何文件指定给某个类。特定类中的所有文件都可以使用类操作脚本定义的自定义方法安装到磁盘中。此自定义方法可以利用目标系统中提供的程序或随软件包一起提供的程序。得到的格式很像标准 ABI 格式。如下图所示,另一个目录被添加。将要归档的任何文件类只是组合为单个文件,并且放置到 archive 目录中。系统将从 relocroot 目录中删除所有归档文件,并且将一个安装类操作脚本放置到 install 目录中。

图 6–2 归档软件包目录结构

该图显示了图 6-1 中的同一个软件包目录结构,但增加了 archive 子目录。

支持类归档软件包的关键字

为了支持这一新的类归档格式,三个采用关键字形式的新接口在 pkginfo 文件内具有特殊含义。这些关键字用于指定需要特殊处理的类。每个关键字语句的格式为: keyword=class1[class2 ...]。下表定义了每个关键字值。

关键字 

说明 

PKG_SRC_NOVERIFY

如果所交付的软件包的 relocroot 目录中的文件属于指定类,则该关键字告诉 pkgadd 不要验证这些文件是否存在以及文件属性。所有归档类都需要此关键字,因为这些文件不再位于 relocroot 目录中。它们是 archive 目录中的专用格式文件。

PKG_DST_QKVERIFY

这些类中的文件在安装后使用一个快速算法进行验证,只有少量或者没有任何文本输出。快速验证首先正确设置每个文件的属性,然后检查以了解该操作是否成功。然后,将根据 pkgmap 测试文件大小和修改时间。不会执行 checksum 验证,该验证与标准验证机制相比错误恢复功能较差。如果在安装期间发生断电或磁盘故障,则目录文件可能与已安装的文件不一致。总能使用 pkgrm 解决这种不一致问题。

PKG_CAS_PASSRELATIVE

通常,安装类操作脚本从 stdin 接收告诉它安装哪些文件的源和目标对列表。指定给 PKG_CAS_PASSRELATIVE 的类不会获得这些源和目标对。相反,这些类会收到单个列表,其中第一个条目是源软件包的位置,其余条目是目标路径。这专门用于简化从归档文件中进行提取的操作。根据源软件包的位置,您可以在 archive 目录中找到归档文件。然后,目标路径被传递给负责提取归档文件内容的函数。所提供的每个目标路径对于基目录而言是绝对的或相对的,具体取决于该路径原来位于 root 还是位于 reloc。如果选择此选项,可能难以将相对路径和绝对路径都组合到单个类中。

对于每个归档类,都需要一个类操作脚本。这是一个包含 Bourne shell 命令的文件,该文件由 pkgadd 执行以便从归档中实际安装文件。如果在软件包的 install 目录中找到一个类操作脚本,pkgadd 会将所有安装职责移交给该脚本。该类操作脚本以超级用户权限运行,并且可以将其文件放置在目标系统中的任何位置。


注 –

实现类归档软件包绝对必须的唯一关键字是 PKG_SRC_NOVERIFY。其他关键字可用于提高安装速度或保存代码。


faspac 实用程序

faspac 实用程序将标准 ABI 软件包转换为随附软件包所使用的类归档格式。此实用程序使用 cpio 进行归档,使用 compress 进行压缩。生成的软件包在顶层目录中有一个名为 archive 的附加目录。在此目录中,将包含按类命名的所有归档文件。install 目录将包含解压缩每个归档文件所需的类操作脚本。绝对路径将不进行归档。

faspac 实用程序具有以下格式:


faspac [-m Archive Method] -a -s -q [-d Base Directory] /
[-x Exclude List] [List of Packages]

下表描述了每个 faspac 命令选项。

选项 

说明 

-m Archive Method

 

指示一种归档或压缩方法。bzip2 是所使用的缺省压缩实用程序。要切换到 zip 压缩或 unzip 解压缩方法,请使用 -m zip,或者,对于 cpio 或 compress,请使用 -m cpio

-a

修复属性(只有超级用户才能执行此操作)。 

-s

指示标准 ABI 类型软件包转换。此选项将经过 cpio 或压缩处理的软件包进行打包,并使其具有符合标准 ABI 的软件包格式。 

-q

指示静默模式。 

-d Base Directory

指示所有软件包所在的目录将由命令行根据需要进行操作。这与 List of Packages 条目互斥。

-x Exclude List

指示要从处理范围中排除的软件包的逗号分隔列表或用引号括起来的空格分隔列表。 

List of Packages

指示要处理的软件包的列表。