JavaScript is required to for searching.
跳过导航链接
退出打印视图
应用程序包开发者指南     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  设计软件包

2.  生成软件包

3.  增强软件包的功能(任务)

4.  验证和转换软件包

5.  软件包创建案例研究

6.  创建软件包的高级技术

指定基目录

缺省管理文件

适应不确定性

使用 BASEDIR 参数

使用参数化基目录

示例-使用参数化基目录

pkginfo 文件

pkgmap 文件

管理基目录

适应重定位

遍历基目录

使用 BASEDIR 参数

pkginfo 文件

pkgmap 文件

示例-遍历 BASEDIR 的分析脚本

request 脚本

checkinstall 脚本

使用相对参数化路径

pkginfo 文件

pkgmap 文件

示例-遍历相对参数化路径的 request 脚本

在异构环境中支持重定位

传统方法

可重定位软件包

示例-传统的可重定位软件包

pkginfo 文件

pkgmap 文件

绝对软件包

示例-传统绝对软件包

pkgmap 文件

复合软件包

示例-传统解决方案

pkginfo 文件

pkgmap 文件

超越传统

复合软件包另一特性

使绝对路径名看起来像可重定位对象

示例-修改文件

说明

实现

示例

示例-创建新文件

说明

实现

示例

示例 -复合软件包

pkginfo 文件

pkgmap 文件

使软件包可远程安装

示例-安装到客户机系统

示例-安装到服务器或独立系统

示例-挂载共享文件系统

修补软件包

checkinstall 脚本

preinstall 脚本

类操作脚本

postinstall 脚本

patch_checkinstall 脚本

patch_postinstall 脚本

升级软件包

request 脚本

postinstall 脚本

创建类归档软件包

归档软件包目录的结构

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

faspac 实用程序

词汇表

索引

创建类归档软件包

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

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

归档软件包目录的结构

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

图 6-1 软件包目录结构

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

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

说明
pkginfo
文件,对软件包进行总体描述,包括特殊环境变量和安装指令
pkgmap
描述每个要安装对象的文件,如文件、目录或管道
reloc
可选目录,包含要相对于基目录安装的文件(可重定位的对象)
root
可选目录,包含要相对于 root 目录安装的文件(根对象)
install
可选目录,包含脚本和其他辅助文件(除了 pkginfopkgmap,所有 ftype i 文件都位于此处)

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

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

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

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

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

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

关键字
说明
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 会将所有安装职责移交给该脚本。该类操作脚本以 root 用户权限运行,并且可以将其文件放置在目标系统中的任何位置。


注 - 实现类归档软件包绝对必须的唯一关键字是 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
修复属性(只有 root 用户才能执行此操作)。
-s
指示标准 ABI 类型软件包转换。此选项将经过 cpio 或压缩处理的软件包进行打包,并使其具有符合标准 ABI 的软件包格式。
-q
指示静默模式。
-d Base Directory
指示所有软件包所在的目录将由命令行根据需要进行操作。这与 List of Packages 条目互斥。
-x Exclude List
指示要从处理范围中排除的软件包的逗号分隔列表或用引号括起来的空格分隔列表。
List of Packages
指示要处理的软件包的列表。