为安装封装软件

本主题提供了有关使用 installp 命令来准备要安装的应用程序的信息。

此部分描述了必须由产品开发商提供的软件产品安装软件包的格式和内容。 它说明了软件安装或更新包中的必需文件和可选文件。

软件产品安装包是一种备份格式文件,其中包含软件产品文件、所需的安装控制文件和可选的安装自定义文件。 installp命令用于安装和更新软件产品。

一个安装包包含一个或多个可单独安装的逻辑分组单元,称为文件集。 软件包中的每个文件集必须属于同一个产品。

文件集更新或更新包是一种包含对现有文件集修改的软件包。

在本主题中,"标准系统 "一词指的是未配置为无磁盘系统的系统。

安装程序要求

  • 安装必须无需用户交互。 需要用户干预的产品配置一定出现在安装之前或之后。
  • 所有独立文件集和独立文件夹更新的安装都必须能在一次安装过程中执行。
  • 安装时无需重启系统。 安装将停止与安装相关的部分系统,安装后需要重启系统才能完全生效。

包装控制信息要求

软件包控制信息必须:

  • 指定文件集对其他文件集的所有安装要求。
  • 针对文件集安装指定所有的文件系统大小需求。

软件包的格式

安装包或更新包必须是备份格式的单一文件,可在安装过程中通过 "installp命令恢复。 该文件可分发到磁带、软盘或 CD-ROM 上。

包装分区要求

为了支持无磁盘或无数据客户工作站,软件包中机器专用的部分("root部分)必须与软件包中机器可共享的部分(usr 部分)分开。 软件包的 "usr部分包含 "/usr或 "/opt文件系统中的文件。

安装软件包的 "root部分时,不得修改 "/usr文件系统中的任何文件。 在安装无磁盘或无数据客户机系统的 root 部分时, /usr 文件系统不可写。 机器专用(根)部分必须包括不在 "/usr或 "/opt文件系统中的所有内容。

工作量分区包装

为工作负载分区 (WPAR) 进行封装时,有些软件产品需要注意一些特殊事项。 要在 WPAR 中成功部署软件产品,必须对其进行打包,使其在处理 "root部分时不会尝试写入 "/usr或 "/opt文件系统,因为 WPAR 会以只读模式挂载这些文件系统。 同样,在安装产品的每个系统中进行的任何配置都必须从软件包的 "root部分进行。

如果未曾打算将文件集安装至工作负载分区,那么必须使用软件包的 lpp_name 文件中的 PRIVATE 属性来指定该文件集。

如果在 WPAR 中安装文件集时需要进行不同的配置,那么封装脚本检查 INUWPAR 环境变量来确定是否正在 WPAR 中安装该文件集。

如果文件集在安装到 WPAR 时的配置不同,那么在从系统副本创建 WPAR 时就会重新配置,因为文件集最初并没有安装到 WPAR 中。 文件集所有者可在 "/usr/lib/wpars/wparconvert.d/usr和 "/usr/lib/wpars/wparconvert.d/root目录下创建程序,将其文件集的 "usr和 "root部分转换为在系统副本 WPAR 中运行的程序。 首次启动系统副本 WPAR 时,这些目录中的所有可执行文件都将以字母顺序(C 语言环境)执行。

软件重要产品数据

“软件重要产品数据 (SWVPD)”数据库中保存了有关软件产品及其可安装选件的信息。 SWVPD 由一组命令和多个“对象数据管理器 (ODM)”对象类组成,用于维护软件产品信息。 SWVPD 命令供用户查询(lslpp)和验证(lppchk)已安装的软件产品。 ODM 对象类定义维护的软件产品信息的作用域和格式。

installp命令使用对象数据管理器在 SWVPD 数据库中维护以下信息:

  • 软件产品的名称(例如,"bos.adt
  • 软件产品的版本
  • 软件产品的发行版级别,它表示对该软件产品的外部编程接口的更改
  • 软件产品的修改级别,它表示对该软件产品的外部接口没有影响的更改
  • 软件产品的修复级别,表示以后将纳入常规修改级别的小更新
  • 文件的名称、校验和以及大小(这些文件构成软件产品或选件)
  • 软件产品的状态:可用、应用中、已应用、落实中、已落实、拒绝或中断
  • 技术级别和 APAR 信息
  • 非 installp 封装软件的目标目录和安装程序(如适用的话)。

软件产品包装部件

为支持客户端/服务器环境下的安装,安装包分为以下几个部分:
usr
包含可在多台具有兼容硬件体系结构的机器间共享的产品部分。 对于标准系统,这些文件将存储在 /usr/opt 文件树中。
root
包含不能在多台机器间共享的产品部分。 每台客户机必须拥有其自己的副本。 如果要求此软件针对每台机器有一个单独的副本,那么大多数情况下是与机器或产品的配置有关。 在标准系统中,"root部分的文件存储在 "root/)文件树中。 文件集的 "root部分必须与文件集的 "usr部分位于同一个软件包中。 如果文件集包含 root 部分,它也必须包含 usr 部分。

软件包分区文件系统指南样本

下面简要介绍文件系统和目录。 您可以将此用作将产品软件包分割为 root 部分、usr 部分和共享部分的指南。

以下是 root 部分的目录及其内容:
/dev
本地机器设备文件
/etc
机器配置文件,如 "hosts和 "passwd
/sbin
引导系统所需的系统实用程序
/var
特定于系统的数据文件和日志文件
下面是 usr 部分的目录及其内容:
/usr/bin
命令和脚本(普通的可执行文件)
/usr/sbin
系统管理命令
/usr/include
包含文件
/usr/lib
库、非用户命令以及与层次结构相关的数据
/opt
通常与非操作系统产品相关的库、非用户命令和脚本。

软件包和文件集命名约定

在命名软件包及其文件集时,请使用以下约定:
  • 软件包名称PackageName)必须以产品名称开头。 如果软件包只有一个可安装的文件集,那么该文件集的名称可以与 PackageName 相同。 所有的软件包名称必须是唯一的。
  • 文件集名称的形式如下:
    ProductName.PackageName.FilesetName.extension
    其中:
    • ProductName 确定产品或解决方案组。
    • PackageName 确定产品中的功能组。
    • FilesetName(可选)确定要安装的文件和库的特定功能集。
    • Extension(可选)进一步描述了内容。
  • 一个文件集名称包含了多个字符,且以字母开头。
  • 文件集名称中的全部字符必须都是 ASCII 字符。 有效字符包括大写和小写字母、数字、下划线 ( _ )、加号 ( + ) 和减号。 句号(".)在文件集名称中用作分隔符。
  • 文件集的名称不能以句号或点号结尾。
  • 文件集名称的最大长度为 144 个字节。
  • 软件包中所有的文件集名称均必须是唯一的。
表 1. 文件集扩展名命名约定
扩展名 文件集描述
.adt 应用程序开发工具箱
.com 一些类似文件集所需的共用代码
.compat 在将来的发行版中可能除去的兼容性代码
.diag 诊断支持
.fnt 字体
.help.Language 特定语言的“公共桌面环境 (CDE)”帮助文件
设备驱动程序打包的特殊命名注意事项
配置管理器命令 (cfgmgr) 会为安装介质上用以下命名约定封装的可检测设备自动安装软件支持。
devices.BusTypeID.CardID.Extension
其中:
  • BusTypeID指定卡所连接的总线类型(例如,pci 表示 PCI
  • CardID指定与卡类型相关的唯一十六进制标识符
  • 扩展名指定了包含在驱动程序中的部分(例如,rte 可能是运行时的扩展名,diag 是诊断的扩展名)

例如,假定以太网设备与 PCI 总线连接,并且配置管理器将 1410bb02 作为它的唯一卡标识。 与该以太网设备相关联的文件包名为 "devices.pci.1410bb02。 此软件包中的运行时环境文件集可命名为 devices.pci.1410bb02.rte

报文目录打包的特殊命名注意事项
安装软件包的用户可以请求自动安装消息目录。 在该请求发出之后,如果安装介质上有消息文件集,并且是按以下命名约定封装的,那么系统将自动安装主语言的消息文件集:
Product.msg.Language.SubProduct

可选的 .SubProduct 后缀在产品具有同一语言的多个消息目录文件集的情况下使用,每个消息目录文件集应用于一个不同的 SubProduct。 您可以选择对整个产品使用一个消息文件集。

例如,产品 Super_Widget 具有一组 plastic 文件集选项和一组 metal 文件集选项。 所有的 Super_Widget 英语(美国)消息目录均可以封装在一个名为 Super_Widget.msg.en_US 的文件集中。 如果针对 plasticmetal 选项需要不同的消息目录文件集,那么英语(美国)消息目录文件集将命名为 Super_Widget.msg.en_US.plasticSuper_Widget.msg.en_US.metal

注意:符合此命名约定的报文文件集必须包含产品中另一个文件集的已安装前提条件(instreq),以确保自动安装报文文件集。
文件名

随软件包提供的文件名称不能包含逗号或冒号。 逗号和冒号用作软件安装过程中所使用的控制文件中的定界符。 文件名中可以包含非 ASCII 字符。 文件名的全路径不得超过 128 个字符。

文件集修订级别标识
文件集级别表示为级别v.r.m.fVRMF,其形式为:
Version.Release.Modification.FixLevel
其中:
  • Version 是一个 1 到 2 位的数字字段,标识了版本号。
  • Release 是一个 1 到 2 位的数字字段,标识了发行版号。
  • Modification 是一个 1 到 4 位的数字字段,它标识了修改级别。
  • FixLevel 是一个 1 到 4 位的数字字段,它标识了修订级别。

基本文件集安装级别是文件集的完整初始安装级别。 该级别包含文件集中的全部文件,而文件集更新可能仅包含完整文件集的一部分文件。

软件包中的所有文件集必须具有相同的文件集级别,但AIX 4.1软件包不需要。

对于文件集的所有新级别,文件集的级别肯定会增加。 installp 命令使用文件集级别在后来的安装中检查产品的较新级别。

文件集级别按从左到右的优先顺序读取(例如,5.2.0.0 是比 4.3.0.0 更新的级别)。

软件包的内容

本节介绍安装包或更新包中包含的文件。 文件路径名是针对安装软件包的类型而给出的。 对于更新软件包,只要PackageName是路径名的一部分,就会被替换为 "PackageName/FilesetName/FilesetLevel

安装包或更新包的 "usr部分包含以下安装控制文件:
  • ./lpp_name:该文件提供了有关要安装或更新的软件包的信息。 出于性能考虑,"lpp_name文件必须是构成软件安装包的备份格式文件中的第一个文件。
  • ./usr/lpp/PackageName/liblpp.a:此压缩文件包含控制文件,安装过程中使用这些文件安装或更新软件包的 "usr部分。
  • 为安装或更新软件产品的 "usr部分而需要恢复的、相对于根目录备份的所有文件。
如果安装包或更新包包含 "root部分,则 "root部分包含以下文件:
  • ./usr/lpp/PackageName/inst_root/liblpp.a:此库文件包含控制文件,安装过程中使用这些文件安装或更新软件包的根目录部分。
  • 要恢复以用于安装或更新软件包 root 部分的所有文件。 对于基本文件集安装级别,这些文件必须相对于 "./usr/lpp/PackageName/inst_root进行备份。
软件包内容示例
farm.apps 软件包中包含 farm.apps.hog 4.1.0.0 文件集。 farm.apps.hog 4.1.0.0 文件集提供了以下文件:
/usr/bin/raisehog (in the usr part of the package)
/usr/sbin/sellhog
 (in the usr part of the package)

/etc/hog
 (in the root part of the package)
farm.apps 软件包中包含至少以下文件:
./lpp_name
./usr/lpp/farm.apps/liblpp.a
./usr/lpp/farm.apps/inst_root/liblpp.a
./usr/bin/raisehog
./usr/sbin/sellhog
./usr/lpp/farm.apps/inst_root/etc/hog
文件集更新 farm.apps.hog 4.1.0.3 将更新传递给以下文件:
/usr/sbin/sellhog
/etc/hog
文件集更新软件包中包含了以下文件:
./lpp_name
./usr/lpp/farm.apps/farm.apps.hog/4.1.0.3/liblpp.a
./usr/lpp/farm.apps/farm.apps.hog/4.1.0.3/inst_root/liblpp.a
./usr/sbin/sellhog
./usr/lpp/farm.apps/farm.apps.hog/4.1.0.3/inst_root/etc/hog
注:软件包中 "root部分的文件已恢复到 "inst_root目录下。 为软件包中依赖于机器的 "root部分安装的文件会相对于 "inst_root目录恢复。 这便于在多个系统的 "root文件系统中安装机器专用文件。 通过从 "inst_root目录复制文件,将 "root部分文件安装到系统的 "root部分。 这样,多台机器就可以共用一个独立于机器的 "usr部分。

lpp_name 软件包信息文件

每个软件包中必须含有 lpp_name 软件包信息文件。 lpp_name 文件向 installp 命令提供有关软件包以及其中的每个文件集的信息。 请参阅文件集更新软件包的 lpp_name 文件示例的图。 图中的数字和箭头指的就是下表中描述的字段。

表 2。 lpp_name 文件字段
字段名称 格式 分隔符 描述
1. 版本 整数 空格 表示构建该软件包的 installp 的发行版级别。 值有:
  • 1- AIX 3.1
  • 3- AIX 3.2
  • 4- AIX 4.1 和更高版本
2. 平台 字符 空格 表示构建该软件包的平台。 值有:
  • R - RISC
  • I -英特尔
  • N - Neutral
3. 软件包类型 字符 空格 表示这是安装软件包还是更新软件包并表示它的类型。 值有:
  • I - 安装
  • S - 单个更新软件包
  • SR - 必需的单个更新软件包
  • ML - 技术级别的更新软件包
4. 软件包名称 字符 空格 软件包的名称 (PackageName)。
  { 换行 表示特定于文件集的数据中可重复部分的开头。
5. 文件集名称 字符 空格 文件集的完整名称。 此字段表示文件集或文件集更新的标题信息的开始。
6. 级别 在 "说明 "栏中显示 空格 要安装的文件集的级别。 格式为:Version.Release.Modification.FixLevel
注:也可以使用<、 >=的组合语法定义级别。 例如, *prereq bos.rte v<5*prereq bos.rte v=5 r=3
7. 卷 整数 空格 表示文件集所在的卷号(如果是通过多卷介质提供的)。
8. Bosboot 字符 空格 表示安装后是否需要 bosboot。 值有:
  • N - 不启动 bosboot
  • b - 启动 bosboot
9. 内容 字符 空格 表示包含在文件集或文件集更新中的部分。 值有:
  • B -usr 和 "root部分
  • U - 仅 usr 部分
10. 语文 字符 空格 必须设置为选择 C 语言区时显示的语言。 一般设为 en_US。
11. 说明 字符 # 或换行 文件集描述。 描述限制在 60 个字符之内。
12. 评论 字符 换行 (可选)附加注释。
  [ 换行 表示文件集信息正文的开头。
13. 所需资料 表后有描述 换行 (可选)文件集对其他文件集和文件集更新的安装相关性。 请参阅此表后面的部分,以获取更详细的描述。
  % 换行 表示必备条件信息和大小信息之间的分隔。
14.尺寸和许可协议信息 本主题稍后有描述 换行 目录的大小要求和许可协议信息。 请参阅本主题稍后的“大小和许可协议信息”部分,以了解更多详细描述。
  % 换行 表示大小信息和许可证信息之间的分隔。
  % 换行 表示许可证信息和取代信息之间的分隔。
15. 取代信息 稍后将在本专题中介绍 换行 有关该文件集替换的前一个文件集的信息。
  % 换行 表示许可证信息和修订信息之间的分隔。
16. 修订信息 稍后将在本专题中介绍 换行 有关修复的信息包含在文件集更新中。 详细说明请参见本主题稍后的修复信息部分。
  ] 换行 表示文件集信息正文的结尾。
  } 换行 表示特定于文件集的信息中可重复部分的结尾。
       
示例
1 23    4
| ||    |                6         7 8 9  10       11
4 RSfarm.apps {  |       |         | | |   |        |
5--> farm.apps.hog04.01.0000.0003 1 N U en_US Hog Utilities 
12--># ...      
[
13--> *ifreq bos.farming.rte (4.2.0.0) 4.2.0.15
%
14--> /usr/sbin 48
14--> /usr/lpp/farm.apps/farm.apps.hog/4.1.0.3 280
14--> /usr/lpp/farm.apps/farm.apps.hog/inst_root/4.1.0.3.96
14--> /usr/lpp/SAVESPACE 48
14--> /lpp/SAVESPACE 32
14--> /usr/lpp/bos.hos/farm.apps.hog/inst_root/4.1.0.3/ etc 32
%
%
15--> ranch.hog 4.1.0.0
%
16--> IX51366 Hogs producing eggs.
16--> IX81360 Piglets have too many ears.
]
}

必要信息部分

必备条件信息部分包含有关其他文件集或文件集更新的安装相关性的信息。 必备条件部分中列示的每个必需条件必须根据必备条件规则得到满足,以便应用文件集或文件集更新。

在任何安装或更新发生之前,installp 命令会将要安装的文件集的当前状态与 lpp_name 文件中列示的需求进行比较。 如果 -g 标记是使用 installp 命令指定的,那么任何缺少的必备条件将添加到要安装的文件集的列表中。 文件集将根据所有必备条件按顺序进行安装。 就在安装文件集之前,installp 命令将再次检查该文件集的必备条件。 该检查会验证所有在安装过程中较早安装的必备条件是否已经成功地安装,以及所有的必备条件是否都已满足。

在以下对不同类型的必备条件的描述中,RequiredFilesetLevel 代表满足必备条件的最小的文件集级别。 除非由于 取代信息部分中描述的原因而显式阻止,否则文件集的较新级别满足较早级别的必要条件。 例如,"plum.tree 2.2.0.0文件集的要求可由 "plum.tree 3.1.0.0文件集满足。

预备条件

先决条件表示必须以指定的文件集级别或更高的级别来安装指定文件集,之后当前文件集才能成功安装。 如果计划安装一个先决条件文件集,"installp命令会对要安装的文件集列表进行排序,以确保满足先决条件。 不能担保文件集的先决条件均在相同的软件包中。

语法
*prereq Fileset RequiredFilesetLevel
替代语法
Fileset RequiredFilesetLevel

文件集更新中包含了它的基本级别文件集的隐式先决条件。 如果该隐式先决条件不充分,那么您必须另外显式地指定一个先决条件。 更新软件包的版本发行版与隐式先决条件的是相同的。 如果更新的FixLevel为 "0,则隐式前提条件的ModificationLevelFixLevel均为 "0。 否则,隐式前提条件的ModificationLevel与更新的ModificationLevel相同,FixLevel为 "0。 例如,4.1.3.2级更新要求在安装更新前安装其4.1.3.0级。 4.1.3.0 级别的更新软件包要求先安装 4.1.0.0 级别,然后才能安装该更新软件包。

相关必要条件

并存条件表示必须安装指定文件集,之后当前文件集才能正常运行。 在安装过程结束时,installp 命令将针对任何未满足的并存条件发出警告消息。 并存条件可用于表示同一软件包中文件集之间的必备条件。

语法
*coreq Fileset RequiredFilesetLevel
如有必要
有条件的必备条件表示仅当指定文件集在 InstalledFilesetLevel 级别安装时才要求该文件集的级别为 RequiredFilesetLevel。 这在大多数情况下用于协调文件集更新之间的相关性。 以下示例说明了有条件的必备条件:
*ifreq plum.tree (1.1.0.0) 1.1.2.3
语法
*ifreq Fileset [(InstalledFilesetLevel)] RequiredFilesetLevel
如果文件集 plum.tree 还未安装,那么此示例不会使它被安装。 如果文件集 plum.tree 已经以下列级别中的任意一个安装,那么此示例不会引起 1.1.2.3 级别被安装:
1.1.2.3
该级别匹配 RequiredFilesetLevel
1.2.0.0
该级别是另一个基础文件集级别。
1.1.3.0
该级别取代 RequiredFilesetLevel
如果文件集 plum.tree 已经以下列级别中的任意一种安装,那么此示例将引起 1.1.2.3 级别被安装:
1.1.0.0
该级别匹配 InstalledFilesetLevel
1.1.2.0
该级别与InstalledFilesetLevel基本级别相同,比RequiredFilesetLevel级别低。

(InstalledFilesetLevel) 参数是可选的。 如果省略,则假定InstalledFilesetLevelRequiredFilesetLevel版本发行版相同。 如果 RequiredFilesetLevelFixLevel 设置为 0,那么 InstalledFilesetLevelModificationLevelFixLevel 都为 0。 否则,InstalledFilesetLevelModificationLevelRequiredFilesetLevelModificationLevel相同,FixLevel为 "0。 例如,如果RequiredFilesetLevel为 "4.1.1.1,且未提供InstalledFilesetLevel参数,则InstalledFilesetLevel为 "4.1.1.0。 如果 RequiredFilesetLevel4.1.1.0 且没有提供 InstalledFilesetLevel 参数,那么 InstalledFilesetLevel4.1.0.0

安装必要设备

安装必要条件表示,只有在相应的文件集已安装或在要安装的文件集列表中时,才必须自动安装指定的文件集。 如果用户明确要求安装一个安装必备条件,那么也要安装它。 文件集更新不能有已安装的必要条件。 由于包含特定软件包信息文件的文件集在没有安装软件包其他部分的情况下不会自动安装,因此信息文件集必须始终包含其产品中另一个文件集的安装必要条件。

语法
*instreq Fileset RequiredFilesetLevel
组别必要条件

组必备条件表示多个不同的必备条件能满足必需条件。 组必备条件中可以包含先决条件、并存条件、有条件的必备条件和嵌套组必备条件。 { RequisiteExpressionList } 前的数字表示在 RequisiteExpressionList 中的多少项是必需的。 例如,数字 >2 说明在 RequisiteExpressionList 中至少需要三项。

语法
>Number { RequisiteExpressionList }
必要信息部分示例
  1. 以下示例说明了并存条件的使用。 如果没有安装 "layout.text 1.1.0.0和 "index.generate 2.3.0.0文件集,"book.create 12.30.0.0文件集就无法运行,因此 "book.create 12.30.0.0文件集的必要部分就包含在内:
    *coreq layout.text 1.1.0.0
    *coreq index.generate 2.3.0.0
    index.generate 3.1.0.0文件集满足 "index.generate的要求,因为 "3.1.0.0比要求的 "2.3.0.0级别更新颖。
  2. 以下示例说明了另外几个常见必备条件类型的使用。 文件集 new.fileset.rte 1.1.0.0 包含了以下必备条件:
    *prereq database.rte 1.2.0.0
    *coreq spreadsheet.rte 1.3.1.0
    *ifreq wordprocessorA.rte (4.1.0.0) 4.1.1.1
    *ifreq wordprocessorB.rte 4.1.1.1

    必须先以 1.2.0.0 级别或更高级别安装文件集 database.rte,之后才能安装文件集 new.fileset.rte。 如果 database.rtenew.fileset.rte 已在相同的安装会话中安装,那么安装程序将先安装文件集 database,之后才安装文件集 new.fileset.rte

    文件集 spreadsheet.rte 必须以 1.3.1.0 级别或更高级别安装,这样文件集 new.fileset.rte 才能正常运作。 在安装文件集 new.fileset.rte 之前无需安装文件集 spreadsheet.rte(如果这两个文件集在同一个安装会话中安装的话)。 如果在安装过程结束时没有安装足够级别的 "spreadsheet.rte文件集,系统将发出警告信息,说明核心前提条件未满足。

    如果已经以 4.1.0.0 级别安装了文件集 wordprocessorA.rte(或与 new.fileset.rte 一起安装),那么必须以 4.1.1.1 或更高级别安装文件集更新 wordprocessorA.rte

    如果已经以 4.1.1.0 级别安装了文件集 wordprocessorB.rte(或与 new.fileset.rte 一起安装),那么必须以 4.1.1.1 或更高级别安装文件集更新 wordprocessorB.rte

  3. 下例说明了安装必备条件。 2.1.0.0 级别的文件集 Super.msg.fr_FR.Widget 中包含了以下安装必备条件:
    *instreq Super.Widget 2.1.0.0

    在文件集 Super.Widget 未安装的情况下,文件集 Super.msg.fr_FR.Widget 无法自动安装。 如果 Super.Widget 文件集明确列在要安装的文件集列表中,则可以在未安装 Super.msg.fr_FR.Widget 文件集时安装该文件集。

  4. 以下示例说明了组必备条件。 必须安装列出的至少一个先决文件集(两个都可以安装)。 如果已安装,那么文件集 spreadsheet_1.rte 的级别必须为 1.2.0.0 或更高,或者文件集 spreadsheet_2.rte 的级别必须为 1.3.0.0 或更高。
    >0 {
    *prereq spreadsheet_1.rte 1.2.0.0
    *prereq spreadsheet_2.rte 1.3.0.0
    }

大小和许可协议信息

大小和许可协议信息部分包含了有关文件集的磁盘空间和许可协议需求的信息。

大小信息
这些信息供安装进程使用,以确保有足够的磁盘空间可用于成功地完成安装或更新。 大小信息的形式如下:
Directory PermanentSpace [TemporarySpace]

此外,产品开发人员还可以在全路径名字段中指定 "PAGESPACE或 "INSTWORK ,以表示安装过程中软件包目录中需要的分页空间和工作空间的磁盘空间要求。

目录
具有大小需求的目录的全路径名。
PermanentSpace

安装或更新所需的永久空间大小(以 512 字节块为单位)。 永久空间就是安装完成后所需的空间。 该字段在下列情况下有不同的意义。

如果 DirectoryPAGESPACE,那么 PermanentSpace 代表执行安装所需的页面空间的大小(512 个字节大小的块数)。

如果目录为 "INSTWORKPermanentSpace表示提取安装过程中使用的控制文件所需的 512 字节块数。 这些控制文件是将归档到文件 liblpp.a 中的文件。

TemporarySpace

仅安装所需的临时空间的大小(512 个字节大小的块数)。 临时空间在安装完成后会被释放。 TemporarySpace 值是可选的。 临时空间的一个例子是重新链接可执行对象文件所需的空间。 另一个例子是将对象文件存档到库中所需的空间。 为了归档到库中,installp 命令将生成库的副本,然后将对象文件归档到复制的库中,再用复制的库替代原来的库。 用于存放库副本的空间被认为是临时空间。

目录为 "INSTWORK时,TemporarySpace表示未提取的 "liblpp.a文件所需的 512 字节块数。

以下例子说明了大小信息部分:
/usr/bin          30
/lib              40  20
PAGESPACE         10
INSTWORK          10    6

由于很难预测磁盘文件系统在文件树中的挂载方式,因此大小信息部分的目录路径名条目必须尽可能具体。 例如,为 /usr/bin/usr/lib 分别建立一个条目,比将 /usr 合并为一个条目要好,因为 /usr/bin/usr/lib 可以存在于不同的文件系统中,但它们都挂载在 /usr 下。 一般,最好将每个目录中的条目包括到安装的文件中。

仅对于更新软件包而言,大小信息必须包括所有将移入 save 目录的旧文件(将被替换的文件) 如果更新后来被拒绝,这些旧文件就会被恢复。 为了表明这些大小需求,更新软件包必须指定以下几个特殊的目录:
/usr/lpp/SAVESPACE
save目录下的 "usr部件文件。 默认情况下,"usr部分文件保存在 "/usr/lpp/PackageName/FilesetName/FilesetLevel.save目录下。
/lpp/SAVESPACE
save目录下的 "root部件文件。 默认情况下,"root部分文件保存在 "/lpp/PackageName/FilesetName/FilesetLevel.save目录下。
许可协议信息

AIX安装程序最近增加了一项功能,允许产品所有者要求客户在安装产品前签署许可协议。 installp命令读取文件集的lpp_name文件,就像读取任何图像一样。 如果在lpp_name文件的大小部分有 "LAF或 "LAR条目,"installp命令会调用 "inulag命令,在窗口中显示许可证并记录客户接受许可证的情况。 如果客户拒绝接受许可协议,那么该产品的安装将中止。

许可证文件放置位置

许可证文件的放置取决于产品所有者。 不过,建议将许可证放在 "/usr/swlag/LANG中。 建议对许可协议文件使用 ProductName_VersionRelease.la 形式的名称。 但并不要求使用此名称或位置。 installp命令和这个包装只是提供了一种向客户提供信息的方法。 所有的工具和文件内容必须由产品提供。

许可证文件的翻译要求

如果要求将许可协议文件翻译成支持的语言,那么建议将这些文件按语言分成不同的文件。 此翻译可能要求创建多个文件。

如何发送许可证文件

产品可以将许可证文件作为其主产品的一部分来提供,或者在产品的一个单独的文件集中提供。 许多产品选择创建一个单独的文件集用于仅提供许可证文件。 这样,具有多种不同功能的产品就可以创建一个许可证文件和文件集,在每个功能所需的所有介质上发布,而不必将文件包含在多个不同的功能中。 当前建议的文件集名称是 lpp.licenselpp.loc.license。 大多数产品目前均采用第一种建议。 如果您希望在标准安装中对客户隐藏许可证文件集,请使用 lpp.loc.license,由于许可证文件集无需在安装时选择。

如何打包许可证文件
文件集的 "fileset.al或 "fileset.inventory文件中从未列出文件本身。 installp命令会根据ProductName文件尺寸部分的条目找到许可证。 这些条目的类型是:
LAF

许可证协议文件 (LAF) 告知 "installp命令,此文件集中包含此特定许可证文件。

许可协议文件是通过一个大小部分条目指定的:
LAF<lang>license_file size
LAF
代表许可协议文件
<朗>
文件的翻译目标语言。 通常有 en_US、fr_FR、Ja_JP 和 zh_TW 条目。 如果未指定 <lang>,那么该协议文件将视为未翻译并以 ASCII 编码。 如果翻译了许可协议文件,"<lang>必须是路径的一部分,以便将需求条目与文件关联起来。
license_file
是许可证文件的完整路径,因为它是在映像中创建并放置在系统中的。 建议路径采用 /usr/swlag/en_US/ProductName_VersionRelease.la 的形式。
大小
这是许可证文件以 512 字节块为单位的实际大小,以确保 "installp有足够的空间在系统中放置许可证文件。
LAR

许可证协议要求 "告诉 "installp命令,该文件集需要安装列出的许可证协议文件。 这与先决条件有所不同,因为它在文件中而不是在文件集中。 文件和文件集具有不同的格式和用途。 它们不能混淆。

LAR
代表许可证协议要求
req_license_file
安装此文件集时需要该许可证文件的全路径。 通常情况下,这些条目在路径中使用 %L 而不是实际的语言名称,这样客户就不必查看所有的语言,而只须查看相应的文件。
一般情况下,一个文件集包含所有 LAF 条目。 产品中需要此许可证的其他文件集仅提供 LAR 条目。 包含 LAF 条目的文件集也包含 BFF 映像中完整路径位置列出的文件,但文件集的 "fileset.al或 "fileset.inventory文件中没有列出这些文件。 电子许可证所使用的设计要求文件在 SWVPD 注册。 installp命令:
  1. 查找文件中的需求。
  2. 检查系统是否接受。
  3. 如果文件未被接受
    1. 将查找提供此文件的文件集。
    2. 从 BFF 映像中仅抽取(恢复)该文件。
    3. 向客户显示该文件。
LAF 文件集示例
以下是一个提供许可证文件的文件集的示例:
iced.tea.loc.license 03.01.0000.0000 1 N U en_US IcedTea Recipe License Information
[
%
INSTWORK 16 160
LAF/usr/swlag/de_DE/iced.tea.la 24
LAF/usr/swlag/DE_DE/iced.tea.la 24
LAF/usr/swlag/en_US/iced.tea.la 24
LAF/usr/swlag/EN_US/iced.tea.la 24
LAF/usr/swlag/es_ES/iced.tea.la 24
LAF/usr/swlag/ES_ES/iced.tea.la 24
LAF/usr/swlag/fr_FR/iced.tea.la 24
LAF/usr/swlag/FR_FR/iced.tea.la 24
LAF/usr/swlag/it_IT/iced.tea.la 24
LAF/usr/swlag/IT_IT/iced.tea.la 24
LAF/usr/swlag/ja_JP/iced.tea.la 24
LAF/usr/swlag/JA_JP/iced.tea.la 32
LAF/usr/swlag/Ja_JP/iced.tea.la 24
LAF/usr/swlag/ko_KR/iced.tea.la 24
LAF/usr/swlag/KO_KR/iced.tea.la 24
LAF/usr/swlag/pt_BR/iced.tea.la 24
LAF/usr/swlag/PT_BR/iced.tea.la 24
LAF/usr/swlag/ru_RU/iced.tea.la 24
LAF/usr/swlag/RU_RU/iced.tea.la 48
LAF/usr/swlag/zh_CN/iced.tea.la 16
LAF/usr/swlag/zh_TW/iced.tea.la 16
LAF/usr/swlag/Zh_TW/iced.tea.la 16
LAF/usr/swlag/ZH_TW/iced.tea.la 24
%
%
%
]
LAR 文件集示例
下面是将许可证要求发送到许可证文件的文件集示例:
iced.tea.server 03.01.0000.0010 1 N B en_US Iced Tea Recipe Group
[
*prereq bos.net.tcp.client 5.1.0.10
*coreq iced.tea.tools 5.1.0.10
*coreq Java14.sdk 1.4.0.1
%
/usr/bin 624
/usr/lib/objrepos 24
/usr/include 16
/usr/include/sys 56
/usr/lpp/iced.tea 22
/usr/samples/iced.tea 8
/usr/samples/iced.tea/server 504
/usr/lpp/iced.tea/inst_root/etc/tea 8
/usr/iced.tea 8
/usr/lpp/iced.tea/inst_root/etc/tea/Top 8
INSTWORK 208 96
/lpp/iced.tea 104
/etc/tea 8
/etc/objrepos 8
/etc/tea/Top 8
/tmp 0 6
LAR/usr/swlag/%L/iced.tea.la 0
%
%
%
]

取代信息部分

取代信息部分指出了文件集或文件集更新的级别,该文件集或文件集更新可以(或不可以)用作其替代。 取代信息是可选的,仅适用于 AIX 4.1格式化文件集基本安装包和 AIX 3.2格式化文件集更新包。

较新的文件集将取代该文件集的较旧版本,除非 lpp_name 文件的取代信息部分指定了它取代的该文件集的最新级别。 在极少数情况下,如果文件集不取代该文件集的所有早期级别,则 "installp命令不会使用该文件集来满足比 "取代 "部分所列文件集级别更早的级别上的要求。

仅当文件集更新包含所有文件、配置处理以及较旧版本的文件集更新中所含有的必备条件信息的情况下,文件集更新才会取代它的较旧更新。 installp 命令确定在下列情况下文件集更新取代它的另一个更新。

  • 更新的版本、发布和修改级别相同,修复级别均非零,且修复级别较高的更新不包含文件集级别大于或等于修复级别较低的更新级别的前提条件。
  • 更新的版本和发布级别相同,且修改级别较高的更新不包含文件集级别大于或等于修改级别较早的更新的前提条件。

例如,文件集更新 farm.apps.hog 4.1.0.1 提供 /usr/sbin/sellhog 更新。 文件集更新 "farm.apps.hog 4.1.0.3会对 "/usr/sbin/sellhog和 "/etc/hog文件进行更新。 文件集更新 farm.apps.hog 4.1.1.2 提供对 /usr/bin/raisehog 文件的更新。

更新 "farm.apps.hog 4.1.0.3取代了 "farm.apps.hog 4.1.0.1,因为它提供了相同的文件,并适用于相同级别的 "farm.apps.hog 4.1.0.0

farm.apps.hog 4.1.1.2更新不会取代 "farm.apps.hog 4.1.0.3或 "farm.apps.hog 4.1.0.1,因为它不包含相同的文件,而且适用于不同的层级 "farm.apps.hog 4.1.1.0。 更新软件包 farm.apps.hog 4.1.1.0 将取代 farm.apps.hog 4.1.0.1farm.apps.hog 4.1.0.3

取代文件集安装级别(基本级别)部分
AIX 4.1格式的文件集安装包可以包含以下取代条目:
屏障条目
确定引入了主要不兼容性的文件集级别。 这样的不兼容性条目使当前的文件集无法满足比指定级别更早级别的文件集的必备条件。
兼容性条目
表示该文件集可用于满足另一个文件集的要求。 兼容性条目在文件集已重命名或已过时的情况下使用。 只有一个文件集可以取代给定的文件集。 可以为每个文件集仅指定一个兼容性条目。

对于一个文件集,lpp_name 文件最多只能包含一个屏障条目和一个兼容性条目。

在引入了不兼容性时,屏障条目由造成不兼容的文件集名称和级别构成。 只有在极少数情况下,文件集的某一级出现了不兼容的情况,比如依赖文件集所需的功能被修改或删除,以至于无法满足文件集前几级的要求时,才有必要对文件集设置障碍条目。 屏障条目必须存在于所有后续版本的文件集中,表明满足相关文件集的必备条件的文件集最新级别。

例如,如果在文件集 "Bad.Idea 6.5.6.0中引入了主要的不兼容性,那么从文件集级别 "6.5.6.0开始的每个 "Bad.Idea文件集安装包的取代信息部分将包含一个 "Bad.Idea 6.5.6.0障碍条目。 该屏障条目将使任何大于等于 6.5.6.0 级别的 Bad.Idea 不能满足 Bad.Idea 6.5.4.0 的必备条件。

兼容性条目由一个文件集名称(与软件包中的文件集名称不同)和一个文件集级别构成。 文件集级别确定安装软件包中的文件集要满足哪个级别的指定文件集(以及该文件集的较早级别)的必备条件。 兼容性条目在指定文件集已过时或重命名且当前文件集中包含指定文件集的功能时会很有用。 兼容性条目中的文件集级别必须高于指定文件集的任何预期级别。

例如,假定 Year.Full 19.91.0.0 文件集不再作为一个单元提供,而是细分为几个较小的单独文件集。 只有其中一个较小的文件集(可能是 "Winter 19.94.0.0)必须包含 "Year.Full 19.94.0.0的兼容性条目。 该兼容性条目使文件集 Winter 19.94.0.0 能够满足 19.94.0.0 级别或更早级别的相关 Year.Full 文件集的必备条件。

取代处理
installp命令提供以下特殊功能,用于安装取代其他文件集或文件集更新的文件集和文件集更新:
  • 如果安装介质中不含有用户请求安装的文件集或文件集更新,那么可以安装存储在安装介质上的取代文件集或文件集更新。

    例如,假设用户调用带有 "-g标志(自动安装必要条件)的 "installp命令来安装 "farm.apps.hog 4.1.0.2文件集。 如果安装介质只包含 "farm.apps.hog 4.1.0.4文件集,那么 "installp命令将安装 "farm.apps.hog 4.1.0.4文件集,因为它取代了所请求的级别。

  • 如果系统和安装介质中不含必需的文件集或文件集更新,那么取代的文件集或文件集更新可以满足必备条件。
  • 如果为安装请求一个更新并且 -g 标记已指定,那么安装介质上最新的取代更新满足该请求件。

    当 "-g标志与 "installp命令一起指定时,任何请求安装的更新(无论是显式还是隐式)都将由安装介质上最新的替代更新来满足。 如果用户想安装某个级别的更新,而不一定是最新级别的更新,用户可以调用installp命令,而不带 "-g标记。

  • 如果为安装请求了更新和取代的更新(两者都在安装介质上),那么 installp 命令将只安装较新的更新。

    在这种情况下,如果用户希望应用安装介质上的特定更新及其取代更新,那么用户必须对每个更新级别执行单独的 installp 操作。 如果两个更新都已应用并提交(-ac),则此操作毫无意义。提交第二个更新会从系统中删除第一个更新。

修复信息部分

修订信息部分是可选的。 修订信息部分条目中包含一个修订关键字和对已修订问题的描述(少于等于 60 个字符)。 修订关键字是对应于修订程序的标识(少于等于 16 个字符)。 以 "ix、"iy、"IY和 "IX开头的修复关键字保留给操作系统制造商使用。

技术级别是一个主更新级别的修订程序。 定期预防性维护软件包就是技术级别。 技术级别标识以软件产品(不是软件包)的名称开头,后跟一个点 (.) 和标识级别,例如,farm.4.1.1.0

liblpp.a安装控制库文件

liblpp.a文件是一个归档文件,其中包含控制软件包安装所需的文件。 在AIX 4.3或更高版本的系统上,您可以使用带有 "-g标志的 "ar命令为软件包创建 "liblpp.a文件,以确保创建的是 32 位压缩包。 本节将介绍许多可放入 "liblpp.a存档的文件。

在此部分中,Fileset 出现在控制文件的名称中。 Fileset 代表了在软件包中要安装的不同文件集的名称。 例如,假设应用列表文件描述为 "Fileset.al。 则 bos.net 软件产品的 bos.net.tcp.client 选项的应用列表文件将是 bos.net.tcp.client.al

对于包含在 "liblpp.a存档文件中的本节所列文件以外的任何文件,必须使用以下命名约定:
  • 如果文件用于安装特定文件集,文件名必须以文件集前缀开头。
  • 如果文件被用作同一软件包中多个文件集的通用文件,则文件名必须以 "lpp.前缀开头。

本节介绍的许多文件都是可选的。 只有文件所提供的函数是文件集或文件集更新所需的,可选的文件才是必需的。 除非另有声明,否则文件同时属于完全安装软件包和文件集更新软件包。

liblpp.a文件中包含的数据文件
Fileset.al
应用列表。 该文件列示了此文件集中所有要恢复的文件。 这些文件一个占一行,并列有相对于 root 的路径,如 ./usr/bin/pickle。 如果所有的文件都是由文件集或文件集更新提供的,那么应用列表文件是必需的。
Fileset.cfginfo
特殊的指示文件。 此文件一行列示一个关键字,每个关键字表示文件集或文件集更新的特殊特性。 目前唯一可识别的关键字是 BOOT,它会在安装完成后生成一条信息,提示需要重新启动系统。
Fileset.cfgfiles
用户可配置文件的列表以及处理指示,在对已安装的文件集应用较新或相等安装级别时可以使用这些指示。 在恢复 "Fileset.al文件中列出的文件之前,系统会保存 "Fileset.cfgfiles文件中列出的文件。 之后,这些保存的文件将按照 "Fileset.cfgfiles文件中指定的处理方法进行处理。
Fileset.copyright
文件集的必需版权信息文件。 该文件由软件产品的全名后跟版权声明构成。
Fileset.err
错误模板文件,作为 "errupdate命令的输入,用于添加或删除错误记录模板库中的条目。 该文件通常由设备支持软件使用。 errupdate命令会创建一个 "Fileset.undo.err文件用于清理。 有关 Fileset.err 文件格式的信息,请参阅 errupdate 命令。 该文件只能包含在文件集的 root 部分。
Fileset.fixdata
节格式文件。 该文件包含文件集或文件集更新中包含的修复信息。
Fileset.inventory
清单文件。 该文件包含了文件集或文件集更新中的文件所需的软件重要产品数据。 该清单文件是一个节格式的文件,其中对每个要安装或更新的文件包含一个条目。
Fileset.namelist
过时文件集和当前文件集(如果有的话)的列表,当前文件集中曾包含了现在存在于要安装文件集中的文件。 该文件只用于重新封装的软件产品的安装。
Fileset.odmadd 或者 Fileset.*.odmadd
添加到 ODM(对象数据管理器)数据库中的节。
Fileset.rm_inv
除去清单文件。 该文件仅用于重新封装的软件产品的安装,如果文件集并不直接替代过时文件集,那么该文件必须存在。 该节格式的文件包含了需要从过时文件集中除去的文件的名称。
Fileset.size
该文件包含了此部分较早所述的包含在该文件集中的文件的空间需求。
Fileset.trc
跟踪报告模板文件。 trcupdate命令使用该文件添加、替换或删除 "/etc/trcfmt文件中的跟踪报告条目。 trcupdate命令会创建一个 "Fileset.undo.trc文件用于清理。 软件包中只有 "root部分可以包含 "Fileset.trc文件。
lpp.acf
整个软件包的归档控制文件。 只有在向系统中存在的存档文件添加或替换存档成员文件时,才需要该文件。 存档控制文件由几行组成,其中包含 "Fileset.al文件中列出的临时目录中的成员文件和该成员所属的存档文件,两者都相对于 "root列出,如图所示:
./usr/ccs/lib/libc/member.o ./usr/ccs/lib/libc.a
lpp.README
自述文件。 该文件包含用户在使用软件前必须阅读的信息。 该文件为可选文件,也可命名为 "README、"lpp.doc、"lpp.instr或 "lpp.lps
productid
产品标识文件。 该文件只有一行,其中指定了产品名称、产品标识(限制在 20 个字符之内)以及可选的功能部件号(限制在 10 个字符之内)。
liblpp.a文件中包含的可选执行文件

安装过程中会调用本节所述的特定产品可执行文件。 除非另有说明,否则以 _i 结尾的文件名只在安装处理中使用,以 _u 结尾的文件名称只在文件集更新处理中使用。 本节介绍的所有文件都是可选文件,可以是 shell 脚本,也可以是可执行对象模块。 每个程序的返回值必须为 0(零),除非该程序旨在导致安装或更新失败。

Fileset.config 或者 Fileset.config_u
在缺省的安装或更新过程临近结束时修改配置。 Fileset.config仅在安装过程中使用。
Fileset.odmdel 或者 Fileset.*.odmdel
在为文件集添加新的 ODM 条目之前,更新文件集的 ODM 数据库信息。 通过 "odmdel文件命名规则,一个文件集可以有多个 "odmdel文件。
Fileset.pre_d
表示卸载过程中是否可以删除文件集。 如果文件集可以除去,那么该程序必须返回 0(零)值。 缺省情况下,文件集是可以除去的。 程序必须生成错误信息,说明文件集无法删除的原因。
Fileset.pre_i 或者 Fileset.pre_u
在还原或保存软件包中应用列表中的文件之前运行,但在删除先前安装的文件集版本中的文件之后运行。
Fileset.pre_rej
在剔除操作之前或预览文件集的剔除操作之前运行。 使用该脚本可确定文件集是否可被拒绝。 请勿使用此脚本运行任何更改系统的命令。 如果脚本以非零返回代码退出,则不允许执行剔除操作。
Fileset.pre_rm
在文件集安装过程中运行,然后从以前安装的文件集版本中删除文件。
Fileset.post_i 或者 Fileset.post_u
在从文件集安装或更新的应用列表中恢复文件之后运行。
Fileset.unconfig 或者 Fileset.unconfig_u
撤消卸载或拒绝文件集时在安装或更新中执行的配置处理。 Fileset.unconfig仅在卸载处理时使用。
Fileset.unodmadd
删除在安装或更新期间添加到 ODM 数据库中的条目。
Fileset.unpost_i 或者 Fileset.unpost_u
在卸载或剔除文件集期间,从安装或更新的应用列表中恢复文件后执行的撤销处理。
Fileset.unpre_i 或者 Fileset.unpre_u
在卸载或剔除文件集的过程中,从安装或更新的应用列表中还原文件前执行的撤销处理。

如果这些可执行文件中的任何一个运行的命令可能会更改机器上的设备配置,则该可执行文件必须在运行该命令前检查 INUCLIENTS 环境变量。 如果设置了 INUCLIENTS 环境变量,则不得运行该命令。 网络安装管理 (NIM) 环境使用 installp 命令实现许多目的,其中有一些要求 installp 命令绕过该命令的某些正常处理。 NIM 会在必须绕过该正常处理的时候设置环境变量 INUCLIENTS。

如果缺省的安装处理不能满足您的软件包的要求,您可以在 liblpp.a 文件中提供以下可执行文件。 如果您的软件包中提供了这些文件,那么 installp 命令将使用软件包提供的文件来代替系统缺省的文件。 软件包提供的文件必须包含与默认文件相同的功能,否则会出现意外结果。 您可以使用缺省文件作为模型来创建您自己的文件。 建议使用默认文件代替软件包提供的文件。

instal
用于替换缺省的安装脚本 /usr/lib/instl/instal。 如果已应用了某个安装软件包中的文件集,那么 installp 命令将调用该可执行文件。
lpp.cleanup
用于替换缺省的安装清除脚本 /usr/lib/instl/cleanup。 如果某个安装或更新软件包中的文件集已部分应用,那么 installp 命令将调用该可执行文件,该文件必须被清除之后才能使文件集回到一致状态。
lpp.deinstal
用于替换缺省的文件集除去脚本 /usr/lib/instl/deinstal。 该可执行文件必须放在 "/usr/lpp/PackageName目录下。 如果某个安装软件包中的文件集已被除去,那么 installp 命令将调用该可执行文件。
lpp.reject
用于替换缺省的安装拒绝脚本 /usr/lib/instl/reject。 如果某个更新软件包中的文件集更新被拒绝,那么 installp 命令将调用该可执行文件。 (缺省的 /usr/lib/instl/reject 脚本是一个指向 /usr/lib/instl/cleanup 脚本的链接。)
update
用于替换缺省的文件集更新脚本 /usr/lib/instl/update。 如果已应用了某个更新软件包中的文件集,那么 installp 命令将调用该可执行文件。 (缺省的 /usr/lib/instl/update 脚本是一个指向 /usr/lib/instl/instal 脚本的链接。)
为确保与 "installp命令兼容,随软件包提供的 "instal或更新可执行文件必须:
  • 处理该软件包中的所有文件集。 它必须能够处理所有文件集的安装或为每个文件集调用其他可执行文件。
  • 使用 "inusave命令保存要安装文件的当前级别。
  • 使用 "inurest命令从分发介质中恢复 "usr部分所需的所有文件。
  • 使用 "inucp命令从 "/usr/lpp/Package_Name/inst_root目录复制 "root部分所需的所有文件。
  • 创建一个 $INUTEMPDIR/status 文件,表明每个正在安装或更新的文件集的成功与否。
  • 返回一个表明安装状态的退出码。 如果 "instal或 "update可执行文件返回非零返回代码,且未找到 "status文件,则安装过程假定所有文件集都失败了。
Fileset.al文件中包含的可选执行文件
Fileset.unconfig_d
撤销在安装和更新文件集时执行的文件集特定配置操作。 当使用 "installp命令指定 "-u标志时,将使用 "Fileset.unconfig_d文件。 如果未提供该文件,且指定了 "-u标志,则会执行 "Fileset.unconfig、"Fileset.unpost_i和 "Fileset.unpre_i操作。

安装控制文件的进一步说明

Fileset.cfgfiles文件

Fileset.cfgfiles文件列出了需要保存的配置文件,以便在不丢失用户配置数据的情况下迁移到新版本的文件集。 要保存用户配置数据,必须在适当的 "liblpp.a文件(usr 或 root)中提供 "Fileset.cfgfiles文件。

Fileset.cfgfiles包含一个单行条目,用于保存每个文件。 每个条目包含文件名(相对于 root 的路径名)、一个空格分隔符和一个描述文件迁移的处理方法的关键字。 这些处理方法关键字是:

preserve
用 "save目录中保存的版本替换已安装的新版本文件。 在用已保存的版本替换了新文件之后,配置保存目录中已保存文件将被删除。
auto_merge
在 "Fileset.post_i处理过程中,产品提供的可执行文件会将已安装的新版本文件中的必要数据合并到保存在配置保存目录中的旧版本文件中。 处理完 "Fileset.post_i后,"installp命令会用配置保存目录(如果存在)中的合并版本替换已安装的新版本文件,然后删除已保存的文件。
hold_new
用 "save目录中保存的版本替换已安装的新版本文件。 文件的新版本将放置在配置保存目录中以代替旧的版本。 用户可以引用新版本。
user_merge
将安装的该文件的新版本保留在系统中,而将文件的旧版本保留在配置保存目录中。 用户可以参考旧版本进行必要的合并。 必须尽可能避免使用这个关键词。
其他
在任何其他定义的处理方法均不充分的情况下使用。 installp 命令将文件保存在配置保存目录中,但没有提供进一步的支持。 任何其他对配置文件的操作和处理都必须通过产品提供的可执行文件完成。 产品开发商有责任记录对该文件的处理。

Fileset.post_i可执行文件可用于对配置数据进行特定操作或合并,这些操作无法通过默认安装处理完成。

Fileset.cfgfiles文件中列出的配置文件将保存在配置保存目录中,其相对路径名称与 "Fileset.cfgfiles文件中给出的相同。 配置保存目录的名称将存储在环境变量 MIGSAVE 中。 save目录对应的是软件包的安装部分。 以下目录是配置保存目录:

/usr/lpp/save.config
usr"部分
/lpp/save.config
root"部分

如果需要保存的文件列表因当前安装的文件集级别而异,则 "Fileset.cfgfiles文件必须包含可能找到的全部配置文件列表。 如有必要,"Fileset.post_i可执行文件(或其他产品提供的可执行文件)必须处理这种差异。

例如,假设有一个文件集(change.rte),其中有一个可以配置的文件。 因此,在 "root"change.rte.cfgfiles中,列出了一个文件:

/etc/change_user   user_merge

当从旧的文件集 (change.obj) 迁移到 change.rte 时,由于文件的格式已改变,故该文件无法保留。 但是,在从较旧级别的 change.rte 迁移到较新级别的 change.rte 时,该文件可以保留。 在这种情况下,你可能需要创建一个 "change.rte.post_i脚本,检查你要从哪个文件集迁移,然后执行 .NET 操作。 这样,如果用户更改了 "/etc/change_user文件,它们就会被保存下来。

root""change.bar.post_i"脚本可能如下:
#! /bin/ksh
rc=0
grep -q change.rte $INSTALLED_LIST
if [$? = 0]
then
mv $MIGSAVE/etc/change_user/ /etc/change_user
rc=1
fi
exit $rc

$INSTALLED_LIST 通过 installp 创建和导出。 有关 "Fileset.installed_list配置文件的更多信息,请参阅 "重新打包产品专用控制文件的安装"。 $MIGSAVE变量包含保存 "root部分配置文件的目录名称。

如果未找到 Fileset.cfgfiles 文件中列出的文件, installp 命令不会发出警告或错误信息。 在 Fileset.post_i 处理之后的阶段,当保存的配置文件按照其处理方法进行处理时,如果未找到文件, installp 命令也不会产生消息。 如果需要任何警告或错误信息,产品提供的可执行文件必须生成这些信息。

以 "Fileset.cfgfiles文件为例,"Product_X.option1文件集必须从位于文件集 "root部分的三个配置文件中恢复用户配置数据。 Product_X.option1.cfgfiles包含在 "liblpp.a文件的 "root部分中,内容如下:
./etc/cfg_leafpreserve
./etc/cfg_pudding hold_new
./etc/cfg_newtonpreserve
Fileset.fixdata文件
Fileset.fixdata
描述文件集更新(或文件集安装,如果用于替代更新)中包含的修复的段落格式文件

该文件中的信息将添加到一个修订数据库。 instfix命令使用该数据库来识别系统中安装的修复程序。 如果软件包中存在 "Fileset.fixdata,则在应用软件包时会更新修正数据库中的修正信息。

文件集中的每个修正都必须在 "Fileset.fixdata文件中拥有自己的章节。 Fileset.fixdata一节的格式如下:

fix:
name = FixKeyword
abstract = Abstract
type = {f | p}
filesets = FilesetName FilesetLevel
[FilesetName FilesetLevel ...]
[symptom = [Symptom]]
  • FixKeyword 不能超过 16 个字符。
  • 摘要描述修复内容,不能超过 60 个字符。
  • type 字段中,f 代表修订程序,而 p 代表预防性维护更新。
  • filesets 字段包含了一个以换行符分隔的文件集和文件集级别的列表。
  • FilesetLevel 是初始级别,该级别的文件集提供了修订程序的全部或一部分。
  • Symptom是对修复后问题的可选描述。 Symptom 没有字符限制。

下面的示例显示了问题 MS21235Fileset.fixdata stanza。 该问题的修订程序包含在两个文件集中。

fix:
name = MS21235
abstract = 82 gigabyte diskette drive unusable on Mars
type = f
filesets = devices.mca.8d77.rte 12.3.6.13
devices.mca.8efc.rte 12.1.0.2
symptom = The 82 gigabyte subatomic diskettes fail to operate in a Martian environment.
Fileset.inventory文件
Fileset.inventory
包含了要为文件集安装或更新的每个文件的特定信息的文件
sysck
使用 "Fileset.inventory文件向软件信息数据库输入文件名、产品名、类型、校验和、大小、链接和符号链接信息的命令

安装或更新文件的文件集的每个部分都需要 "Fileset.inventory文件。 如果软件包的 "root部分不包含要安装的文件(只做配置),则 "root部分不需要 "Fileset.inventory文件。

注意:"Fileset.inventory文件不支持超过 2 GB 的文件。 如果您发送的文件超过 2 GB,请将其包含在 "fileset.al文件中,但不要包含在 "Fileset.inventory文件中。 sysck命令尚未更新,无法处理超过 2GB 的文件,而且大多数机器上的 "/usr文件系统在创建时都无法处理超过 2GB 的文件(默认情况下)。

清单文件由节格式的 ASCII 文本构成。 节的名称为要安装的文件的全路径名。 节的名称以冒号 (:) 结尾,后跟一个换行符。 文件属性跟在节名后面,格式为 "Attribute=Value。 每个属性描述在单独的一行上。

Fileset.inventory一节的格式如下:
inventory:
type     = type
class    = inventory,apply,C2_exclude,fileset
owner    = owner_name
group    = group_name
mode     = TCB | SUID | SGID,permissions
target   = fullpath_filename
link     = fullpath_to_hardlink [additional_hardlinks]
size     = <blank> | VOLATILE | size
checksum = <blank> | VOLATILE |"checksum"
表 3。 有效属性
属性 描述
file_name 文件或链接相对于 "root./)的完整路径,紧接冒号(:),然后换一行。 全路径名的最大长度为 255 个字符。
type 文件名条目的类型,有效类型为以下之一:
文件
标准文件
目录
目录
SYMLINK
符号链接的全路径
class 指定了在安装时如何引用 file_name。 该字段必须至少具有以下的两个关键字:
清单
表明该文件在安装完成后仍然存在。 该文件将添加到清单 SWVPD 数据库中。 不得与fileset.il文件中的 "A类型文件一起使用。
应用 (apply)
表明该文件将从安装介质中恢复。 file_name字段列在应用列表fileset.al) 中。 这不得用于fileset.al文件中的 "I类型文件。
C2_exclude
表示该文件必须排除在C2Secure 系统上执行。 如果使用该标记,文件也必须列在fileset.tcb文件中。
owner 指定了安装后文件的所有者。 请不要对该字段使用用户标识。 属性值必须是所有者的名称,且不得长于 8 个字符。
group 指定了文件组。 请不要对该字段使用组标识。 属性值必须是组的名称,且不得长于 8 个字符。
mode 指定了文件方式。 值必须包含文件的许可证(八进制格式)。 以下任何关键字可以放在许可权值的前面。 列表中项以逗号分隔。
TCB
可信计算基地的一部分。 如果文件是 SUID "root或 SGID 系统,则文件必须是 TCB。
suid
该文件设置了集合用户标识位。 这对目录条目没有意义。
sgid
该文件设置了集合组标识位。 如果在 DIRECTORY 条目中设置了该选项,则会强制在该目录中创建的所有文件与该目录具有相同的组。
Permissions
必须是三位八进制数,例如:644。
注: 如果类型为 SYMLINK ,那么方式必须为 777。 其他的条目都是无效的。
link 列示了该文件的所有硬链接。 如果存在多个硬链接,那么硬链接的每个全路径以逗号分隔。 硬链接必须作为源文件在同一目录中。 如果条目的类型是 SYMLINK,则 "link无效。 全路径名的最大长度是 255 个字符。
target 仅对 type=SYMLINK 有效。 这是链接目标的全路径文件名。 如果将要创建的链接是从 /usr/bin 指向 /bin,那么文件名应为 /bin,而目标应为 /usr/bin。 全路径名的最大长度是 255 个字符。
size
空白
如果该字段为空,那么文件名的大小将在安装时决定。 使用该选项的缺点在于如果在安装期间某个文件被损坏,客户不会得到通知。
VOLATILE
如果预计文件大小会在正常操作中发生变化,则此属性的值必须为 VOLATILE。
大小
文件的精确大小。
注意:请勿包含 DIRECTORY 或 SYMLINK 条目的大小字段。
checksum
空白
如果此字段为空,则在安装文件时,将 "sum -r命令返回的值放入清单 SWVPD 数据库。
VOLATILE
指定文件的大小(以块计)。 如果预计文件大小会在正常操作中发生变化,则此属性的值必须为 VOLATILE。
校验和
由 "sum -r命令返回的文件精确总和。 必须使用双引号。
注意:请勿包含 DIRECTORY 或 SYMLINK 条目的校验和字段。

文件集

表明文件所属的文件集。
注意:"sysck命令会在安装过程中创建硬链接和符号链接(如果这些链接不存在)。 root部分的符号链接必须打包到 "root部分的 "Fileset.inventory文件中。
Fileset.inventory 示例

下面的fileset.inventory示例演示了 "type的使用。

/usr/bin:
        owner = bin
        group = bin
        mode = 755
        type = directory
        class = apply,inventory,bos.rte


/usr/bin/tcbck:
        owner = root
        group = security
        mode = TCB,SUID,550
        type = file
        class = apply,inventory,bos.rte.security
        size = 99770
        checksum = "17077     98 "


/usr/sbin/tsm:
        owner = root
        group = security
        mode = TCB,SUID,555
        links = /usr/sbin/getty,/usr/sbin/login
        class = apply,inventory,bos.rte,security
        size = 55086
        checksum = "57960     54 "

专门用于重新包装产品的安装控制文件

Fileset.installed_list
如果从软件包中安装文件集时发现该文件集(或它的某些版本)已经以相同的级别安装在系统中,installp 命令所创建的文件。

搜索软件信息数据库,以确定系统上是否已安装文件集或文件 "Fileset.namelist(如果存在)中列出的任何文件集。 如果是,文件集和安装级别将被写入 "Fileset.installed_list文件。

如果创建了 Fileset.installed_list ,在调用 rminstalinstal 可执行文件时就可以使用。 Fileset.installed_list文件可以位于以下目录、打包工作目录或PackageWorkDirectory 中:
/usr/lpp/
usr部分的PackageName
/lpp/
root部分的PackageName

Fileset.installed_list文件包含每个已安装文件集的单行条目。 每个条目包含了文件集的名称和级别。

例如,假设在安装 "storm.rain"1.2.0.0文件集时,"installp命令发现 "storm.rain"1.1.0.0已经安装。 则 installp 命令将创建 PackageWorkDirectory/storm.rain.installed_list 文件,该文件包含以下内容:
storm.rain 1.1.0.0
再举个例子,假设 "Baytown.com文件集包含一个 "Baytown.com.namelist文件,其中有以下条目:
Pelly.com
GooseCreek.rte
CedarBayou.stream 
在安装 "Baytown.com"2.3.0.0文件集时,"installp命令发现 "Pelly.com 1.2.3.0和 "CedarBayou.stream"4.1.3.2已经安装。 installp命令创建的 "PackageWorkDirectory/Baytown.com.installed_list文件内容如下:
Pelly.obj 1.2.3.0
CedarBayou.stream 4.1.3.2
表 4。 Fileset.namelist文件
属性 描述
Fileset.namelist 当文件集名称已更改或文件集包含以前打包在过时文件集中的文件时,需要使用此文件。 它包含以前包含的所有文件集的名称,这些文件目前包含在要安装的文件集中。 每个文件集的名称必须出现在单独的一行上。

Fileset.namelist文件必须在 "usr或 "liblpp.a文件的根目录下提供。 Fileset.namelist文件只对安装软件包有效,对更新软件包无效。

安装开始时,"installp命令会搜索软件重要产品数据 (SWVPD),以确定 "Fileset.namelist文件中列出的文件集或任何文件集是否已安装在系统上。 installp命令会将已安装的文件集名称和文件集级别写入 "Fileset.installed_list文件,以便产品提供的可执行文件使用这些信息。

以 "Fileset.namelist文件为例,假设 "small.business文件集取代了之前名为 "family.business的文件集。 small.business产品包的 "usr部分 "liblpp.a文件中包含 "small.business.namelist文件。 small.business.namelist 文件包含了以下条目:
family.business
更复杂的 "Fileset.namelist文件例子是,文件集被分为客户端文件集和服务器文件集。 文件集 LawPractice.clientLawPractice.server 替换了较早的 lawoffice.mgr 文件集。 LawPractice.server 文件集还包含过时的 BusinessOffice.mgr 文件集中的几个文件。 LawPractice软件包的 "liblpp.a文件中的 "LawPractice.client.namelist文件包含以下条目:
lawoffice.mgr
软件包 LawPracticeliblpp.a 文件中的 LawPractice.server.namelist 文件包含了以下条目:
lawoffice.mgr
BusinessOffice.mgr

如果 "Fileset.namelist文件只包含一个条目,且当前文件集不能直接替换 "Fileset.namelist文件中列出的文件集,则必须在 "liblpp.a 文件中包含一个 "Fileset.rm_inv文件。 安装过程会使用 "Fileset.namelist文件和 "Fileset.rm_inv文件来确定一个文件集是否可以直接替换另一个文件集。 如果 "Fileset.namelist文件只包含一个条目,且没有 "Fileset.rm_inv文件,安装程序会假定新文件集直接替换旧文件集。 安装新(替换)文件集时,安装程序会从系统中删除旧(替换)文件集中的所有文件,甚至包括新文件集中未包含的文件。

在前面的示例中,"small.business文件集是 "family.business文件集的直接替代文件,因此 "small.business.rm_inv文件一定不存在。 文件集 LawPractice.client 不是文件集 lawoffice.mgr 的直接替代文件集,所以 LawPractice.client.rm_inv 文件必须存在,即使该文件为空。

示例
文件集 bagel.shop.rtebread.shop.rte 多年以来一直是分开提供的。 现在,bagel.shop.rte 将作为 bread.shop.rte 的一部分提供。 在这种情况下,文件 bread.shop.rte.namelist 看起来类似:
bread.shop.rte
bagel.shop.rte

此外,还可发送一个空的 "bread.shop.rte.rm_inv文件,表示必须从系统中删除 "bagel.shop.rte文件集中的所有文件。

表 5。 Fileset.rm_inv文件
属性 描述
Fileset.rm_inv 一个包含了要从系统中除去的文件、链接和目录(如果发现它们已安装)的列表的文件

当当前文件集的打包方式与上一级文件集不同,且安装过程不得根据文件集在清单数据库中的条目删除先前安装的文件时,就会使用该文件。

仅仅更改文件集的名称还不足以需要一个 "Fileset.rm_inv文件。 当新文件集是以前文件集的子集或以前文件集的混合部分时,"Fileset.rm_inv文件是必要的。 如果 "Fileset.namelist文件中包含多个文件集的条目,则必须使用 "Fileset.rm_inv文件从系统中删除以前安装的文件级别。

Fileset.rm_inv 文件由 ASCII 文本组成,采用一节格式。 节的名称是要除去的文件或目录(如果在系统中发现的话)的全路径名。 节的名称以冒号 (:) 结尾,并且后面跟一个换行符。 如果节的名称后面跟有属性,那么属性的格式为 Attribute=Value。 这些属性用于确定需要除去的硬链接和符号链接。 每个属性描述在单独的一行上。 下表描述了与所列文件相关的有效属性:

表 6。 属性和描述
属性 描述
links 文件的一个或多个硬链接。 链接的全路径名以逗号分隔。
symlinks 文件的一个或多个符号链接。 链接的全路径名以逗号分隔。
注意:链接需要列出两次,一次作为独立的章节,一次作为链接文件的属性。

例如,假设 "U.S.S.R"19.91.0.0文件集在 "/usr/lib目录下包含以下文件:"moscow、"leningrad"、"kiev"、"odessa"和 "petrograd("leningrad的符号链接)。 产品开发人员决定将 "U.S.S.R" 19.91.0.0文件集拆分成两个文件集:"Ukraine.lib 19.94.0.0和 "Russia.lib 19.94.0.0"。 Ukraine.lib 文件集包含 kievodessa 文件。 Russia.lib文件集包含 "moscow文件。 leningrad 文件不再存在,它被文件集 Russia.lib 中的 st.petersburg 文件所替换。

Ukraine.lib.rm_inv 文件必须存在,因为文件集 Ukraine.lib 不是文件集 U.S.S.R 的直接替代文件集。 Ukraine.lib.rm_inv文件必须为空,因为在安装 "Ukraine.lib文件集以清理正在迁移的 "U.S.S.R文件集时,不需要删除任何文件。

Russia.lib.rm_inv 文件必须存在,因为文件集 Russia.lib 不是文件集 U.S.S.R 的直接替代文件集。 如果 Russia.lib.rm_inv 文件用于在安装了文件集 Russia.lib 的情况下除去 leningrad 文件,那么 Russia.lib.rm_inv 文件将包含以下节:
/usr/lib/leningrad:
 symlinks = /usr/lib/petrograd
/usr/lib/petrograd:

补充磁盘子系统的安装文件

不和提供的 SCSI 或连接总线的设备一起配置的磁盘子系统需要有自己的设备驱动程序和配置方法。 这些安装文件提供在一张补充软盘上(随设备一起),并且必须是带有 ./signature 文件和 ./startup 文件的备份格式。 特征符文件必须包含字符串 target。 启动文件必须使用按名称的恢复,以从补充软盘中抽取所需的文件,然后运行使设备进入可用状态所必需的命令。

分发媒体的格式

以下介质类型可用来分发软件产品安装软件包。

以下几部分描述了在所有这些介质上分发多个产品必须使用的格式。

磁带

为了将多个产品软件包映像放入一盘磁带或一组磁带上,一组磁带中每个磁带上的文件必须使用以下格式:

  • 文件 1 为空。 (为可引导磁带保留。)
  • 文件 2 为空。 (为可引导磁带保留。)
  • 文件 3 包含一张目录文件,描述了该组磁带上的产品软件包映像。 因此,除了多卷集合中的磁带卷号不同以外,这组磁带中的每个磁带都包含一个相同的目录文件副本。
  • 文件 4 中 (N+3) 包含了 1N 的产品软件包的备份格式文件映像。
  • 一个产品软件包映像文件不能分布在两个磁带上。
  • 每个文件后面跟一个文件结束磁带标记。
CD-ROM

包含多个产品软件包映像的 CD-ROM 必须与 Rock Ridge 组协议相兼容。 产品包必须存储在安装目录中,该目录必须包含以下内容:

  • 产品软件包的备份格式文件映像。
  • 一张名为 .toc 的目录文件,描述目录中的产品软件包映像。

多卷 CD-ROM 是具有附加目录结构的 CD-ROM,该结构将一组 CD-ROM 定义为单个可安装单元。

多卷光盘必须符合以下规则:
  • /installp/mvCD 目录必须存在以下内容:
    1. 目录文件(.toc),用于描述该套光盘中所有光盘的产品包装图像。 CD-ROM 上的每个卷在 /installp/mvCD 上必须具有相同的 .toc
    2. 一个名为 volume_id 的 ASCII 文件,该文件中的首行由组 1 中的 CD 的十进制卷号构成。
    3. 名为 "vol% n的符号链接,其中n是光盘集的十进制卷号。 符号链接的目标必须是 CD 该特定卷上的产品软件包目录的相对路径。 符号链接的标准值是 ../ppc
  • /installp/mvCD 中的目录文件 (.toc) 必须与标准目录格式一致。 多卷'.toc的特点是,每个产品包图像的位置都以目录条目'vol% n开始,其中n表示包含该特定产品包的卷。
AIX 5.2示例

文件集 A 位于卷 1 的文件 "A.bff中,文件集 B 位于卷 2 的文件 "B.bff中。 /installp/mvCD目录文件中包含 A 和 B 的产品包装图像位置的字段分别是 "vol%1/A.bff和 "vol%2/B.bff。 卷 1 的 /installp/ppc 中的目录文件中的字段包含 A.bff 作为 A 的位置。 卷 2 的 /installp/ppc 中的目录文件表中的字段包含 B.bff 作为 B 的位置。

AIX 5.1 和更高版本的 CD-ROM 目录结构允许指定其他安装程序以及多个平台。

软盘

为了将多个产品软件包映像放到一组软盘中,必须将以下文件写入一组软盘中:

  • 目录文件,描述要包含在软盘组中的产品软件包映像。
  • 将包含在软盘组中的所有产品软件包映像文件。

文件通过以下规则写入磁盘组:

  • 将数据作为流写入软盘组中,同时在组中的每个软盘的块 0 中插入一个卷标识扇区。 一个数据卷最后一个数据块的数据在逻辑上被视为下一个数据卷第 1 数据块的数据(数据卷 ID 扇区会被验证,并在读取时被丢弃)。
  • 每个文件都在 512 字节的块的边界上开始。
  • 首先写入目录文件。 用空字符(x'00')填充该文件的最后一个扇区。至少需要一个空字符来标记目录文件的结束。 因此,可能需要对整个扇区填充空字符。
  • 在目录文件的后面,将每个产品软件包映像文件写入后续的扇区中。 使用空字符填充每个文件的最后一个扇区。 如果文件在块的边界处结束,那么不需要空字符。
  • 组中的每个软盘的块 0 包含了一个卷标识扇区。 此扇区的格式为:
    位置 描述
    Bytes 0:3 标识的幻数。 这是一个带有十进制值 3609823513=x'D7298918' 的二进制整数。
    Bytes 4:15 日期和时间戳(ASCII 码),作为软盘组的标识。 格式为 MonthDayHourMinuteSecondYear小时必须是 00 到 23 之间的数值。 日期和时间字段都包含两位数字。 因此,"月"必须用 "03而不是 "3"表示,""必须用 "94"而不是 "1994"表示。
    Bytes 16:19 软盘组中的二进制整数卷号。 组中的第一个卷是 x'00000001'
    Bytes 20:511 二进制零
表 7。 目录文件
字段名称 格式 分隔符 描述
1. 卷 字符 空格 对于磁带和软盘的目录文件,这是包含此数据的卷号。 对于硬盘或光盘目录文件,卷号为 "0
2.日期和时间戳 mmddhhMMssyy 空格 对于磁带或软盘,这是创建卷 1 的时间戳。 对于硬盘或光盘,这是创建 ".toc文件的时间戳。 请参阅本章稍后的“日期和时间戳记格式”,以了解更详细描述。
3. 头格式 字符 换行 表明目录文件格式的数字。 有效的条目为:
  • 1-AIX V 3.1
  • 2 - V3.2
  • 3-AIX V 4.1 或更高版本
  • B - mksysb 磁带("installp使用无效)
4. 产品软件包映像的位置 字符 空格 对于磁带或软盘,这是一个字符串,格式为:vvv:bbbbb:ssssssss详细说明请参阅本文后面的磁带和软盘位置格式。 对于硬盘或 CD-ROM,这是产品包映像文件的文件名。 这只是文件名,前面不能有路径名的任何部分。
5.特定软件包信息 lpp_name 文件格式 换行 包含在该产品软件包映像中的 lpp_name 文件的内容。 请参阅“lpp_name 软件包信息文件”,以了解更详细的描述。
注意:介质上包含的每个产品包装图像都要重复上表中的第 4 和第 5 项。
日期和时间戳格式
日期和时间戳格式是一个 ASCII 字符串,格式如下:
MonthDayHourMinuteSecondYear

小时必须是 00 到 23 之间的数值。 日期和时间字段都包含两位数字。 因此,"月"必须用 "03而不是 "3"表示,""必须用 "94"而不是 "1994"表示。

磁带和软盘的定位格式
位置的格式为 vvv:bbbbb:sssssss,其中每个字母代表一位,这些位具有以下意义:
对于磁带
vvv
是磁带的卷号。
bbbbb
是产品软件包映像的磁带上的文件号。
ssssssssss
是以字节计的文件大小。
对于软盘
vvv
是软盘的卷号。
bbbbb
是软盘上产品包映像文件开始所在的块编号。
ssssssssss
是以字节计的文件大小(包括填充到块边界端的大小)。

AIX可迁移安装

虽然AIX本机安装实用程序(如 "installp、"instfix、"lslpp和 "lppchk)现在支持AIX可重置安装,但对于需要安装在工作负载分区内的应用程序来说,使用重置功能尤其重要。 这是因为缺省的系统 WPAR 配置不包含可写的 /usr/opt 文件系统。 因此,可能需要将应用程序安装重定位到其他位置而不是传统的 /usr/opt 位置。

除了可以在默认安装位置(即 "/)安装文件集外,管理员现在还可以将可重置软件包安装到其他 "root安装位置。 这使管理员可以进行以下操作:
  • AIX 操作系统的单个实例中安装并维护同一 installp 软件包的多个安装
  • AIX 操作系统的单个实例中安装和维护同一 installp 软件包的多个版本
  • 使用本机 installp 跟踪工具(如 lppchklslppinstfixinulag)验证和报告所有重定位安装实例的安装数据
  • 在指定系统(应用程序托管)上附加和分离预安装软件的位置。

术语

根安装路径
安装应用程序的基本目录。 installp的默认安装路径是 ""/"
缺省安装路径
默认的 "root安装路径(即 ""/")。
重定位安装路径
任何非默认安装路径的 "root安装路径。 路径位置可以是任何非 ""/"且大小不超过 512 个字符的有效路径。
可重定位的应用程序
可安装在非默认 "root安装路径下的应用程序。
USIL(用户指定的安装位置)
由用户设置的重新定位的安装路径实例。

USIL

用户指定的安装位置 (USIL) 指由管理员创建的被跟踪重定位安装路径。 系统会跟踪该位置,并可将其用作支持重新定位的软件包的替代安装路径。 通过将每个安装分配到一个单独的 USIL,可在单一系统上安装同一软件包的多个实例和/或版本。 可将已存在的 USIL 实例从任何给定系统上连接或拆离。

每个 USIL 实例维护在当前所有的三个 installp 部件中其自身的重要软件产品数据 (SWVPD):
  • <InstallRoot>/etc/objrepos
  • <InstallRoot>/usr/lib/objrepos
  • <InstallRoot>/usr/share/lib/objrepos
注意:
  1. 当前 SWVPD 对象类包含以下内容:
    • product
    • lpp
    • 清单
    • 历史记录
    • 补丁
    • vendor
    • lag
  2. 每个 USIL 实例都在重新定位的路径中制作缺省 SWVPD 结构的镜像。

USIL 管理命令

/usr/sbin/mkusil
创建或连接新的 USIL 实例。
mkusil -R RelocatePath -c Comments [XFa]
-a
将已存在的安装作为 USIL 实例连接
-c
在 USIL 定义中包含的注释(可使用 lsusil 命令显示)
-R
新 USIL 位置的路径。 必须是有效目录。
-X
自动扩展所需空间
/usr/sbin/lsusil
列示已存在的 USIL 实例。
lsusil [-R RelocatePath | "ALL"]
-R
现有 USIL 位置的路径。
/usr/sbin/rmusil
除去已存在的 USIL 实例。
rmusil -R RelocatePath
-R
现有 USIL 位置的路径。
注意:"rmusil命令只删除 SWVPD 中的 USIL 引用。 不会在 USIL 安装路径中除去文件。
/usr/sbin/chusil
更改已存在 USIL 实例的属性。
chusil -R RelocatePath -c NewComments [X]
-c
在 USIL 定义中包含的新注释(可使用 lsusil 命令显示)
-R
现有 USIL 位置的路径。
-X
需要空间时自动扩展

可重定位的安装实用程序

要保持代码隔离,请将所有 USIL 更改隔离到单独编译的模块中。 重定位的安装实用程序包含以下用户级模块:
  • /usr/sbin/mkusil
  • /usr/sbin/rmusil
  • /usr/sbin/lsusil
  • /usr/sbin/chusil
注意:
  1. 每个实用程序都使用 "-R RelocatePath标记。
  2. 在处理可重置的 "installp软件包时,必须使用可重置的安装实用程序。

对可移动应用包装的要求

程序封装必须支持重定位的安装。 以下是推荐的指南:
  • 可重定位的应用程序程序包不可以在其根安装位置之外传递(写入)库存对象。
  • 在 "root安装位置之外,可重新定位的应用程序包可能无法通过打包定制来交付(写入)数据。
  • 对于每个可重定位的文件集,可重定位的应用程序程序包必须包含 RELOCATABLE 扩展封装属性。 文件集是可重定位的最小安装单位。
  • 可重定位的应用程序程序包不一定要位于外部重定位路径。 可要求将文件集安装在缺省安装路径或其自身安装路径中。

可迁移应用程序执行的要求

应用程序设计必须支持从安装环境执行。 以下是推荐的指南:
  • 应用程序必须有确定其 "root安装位置或功能的方法,以便不依赖安装位置。
  • 应用程序必须相对于与其根安装位置引用所有应用程序特定可执行组件。
  • 应用程序必须相对于其根安装位置引用所有特定于应用程序的数据组件,或者必须设计为与其他应用程序实例共享数据。
  • 应用程序不得在其 "root安装位置之外进行任何持久性更改。

USIL 连接器 ODM 类对象

USIL 连接器对象数据管理器类对象位于 /etc/objrepos/usilc 文件中并包含链接缺省 SWVPD 与所有 USIL 实例的数据。

下面是将包含在 "swvpd.cre中的该对象类的条目:
/*  User Install Location Connector                                    */
/*  Connects the default install path to all relocated install paths.  */
class   usilc {
        vchar   path[1024];             /* USIL path */
        vchar   comments[2048];   /* USIL Comments */
        long    flags;                       /* USIL flags */
        };     

列出带有 "-R "ALL"或 "-R "all"选项的所有安装路径

如果使用 -R "ALL" 语法, lslpplppchk 命令可对所有安装位置执行列表操作。

连接/拆离操作

attach操作允许用户将现有的分离式 USIL 路径集成到 SWVPD 中。

例如,如果管理员创建了一个主 USIL 实例,其中安装了各种可重新定位的应用程序,用于托管应用程序。 然后,管理员将 USIL 实例复制或NFS挂载到不同的系统中,并使用 "attach功能将 USIL 实例集成到 SWVPD 中。 拆离操作将除去对 USIL 实例的引用。

installp Licensing

新的 USIL 实例使用空的 LAG 启动 (installp 许可协议对象数据管理器对象类)启动。 任何需要许可证的文件集或 LPP 的安装都将需要符合常规 installp 约定的许可证验收。 许可证验收不跨越 USIL 实例。

可信计算库 (TCB)

支持 TCB 的系统当前不支持安装 USIL 实例。

可重定位的必需条件

新的封装语法指示可重定位的必需位置。 打包者可以指定必须在默认安装路径或重新定位的安装路径中找到某个必要条件。

以下是应用的新必需的语法:
  • prereq_ r = prereq in relocated install path
  • ifreq_r = ifreq in relocated install path
  • coreq_r = coreq in relocated install path
  • instreq_r = instreq in relocated install path

当前已定义的必需类型(prereqifreqcoreqinstreq)是所有缺省必需(应用到缺省安装位置的必需)。

可重定位的软件包的 TOC 更改

以下是 TOC 文件中新必需段的样本:
sscp.rte.1.0.0.5.U.PRIVATE.bff 4 R S sscp {
sscp.rte 01.00.0000.0005 1 N B En_US Sscp
[
*coreq bos.games 1.1.1.1  <-- default requisite in default requisite section
*prereq bos.rte 1.1.1.1   <-- default requisite in default requisite section
%
/usr/bin 20
/etc 20
INSTWORK 72 40
%
%
%
IY99999  1 APAR text here.
%
RELOCATABLE <-- attribute tag to denote relocatable package
%
*prereq bos.rte 1.1.1.1 <-- default requisite in relocated requisite section
*coreq_r bos.games 1.1.1.1 <-- relocated requisite in relocated requisite section
]
}
注意:
  1. 如果在重定向安装过程中出现重定位必需段,可将其用作安装的必需段。
  2. 如果在重定向安装过程中未出现重定位必需段,那么使用缺省的必需段。 这意味着所有必要条件都将是默认必要条件。
  3. 默认安装(非重定位)不使用可重定位的必要条件部分。
表 8。 产品软件包的 installp 处理
命令 描述
应用 当应用了产品安装软件包中的某个文件集之后,它将安装在系统中,并且覆盖所有以前存在的版本,然后落实系统上该版本的文件集。 如果用户认为不再需要该文件集,可将其除去。

在应用文件集更新时,该更新将被安装,并且信息被保存(除非另有请求),以便将来可以除去该更新。 以前应用的文件集更新可以在以后落实或拒绝。

落实 当提交文件集更新时,在应用过程中保存的信息将从系统中删除。 落实已应用的软件不会更改文件集的当前活动版本。
拒绝 当更新被拒绝时,应用过程中保存的信息将用于将文件集的活动版本更改为被拒绝更新之前的版本。 然后保存的信息将从系统中除去。 拒绝操作只对更新有效。 拒绝操作中的许多相同的步骤是在文件集或文件集更新未能完成安装后在 cleanup 操作中执行的。
除去 在文件集被除去后,该文件集及其更新将独立于它们的状态(已应用、已落实或中断)而从系统中除去。 remove操作仅对文件集的安装级别有效。

产品包中提供的可执行文件可为应用、剔除和删除操作定制处理程序。

重新安装文件集与除去和安装相同的文件集不会执行相同的操作。 重新安装操作(请参阅 /usr/lib/instl/rminstal)将从以前的版本或相同的版本中清除当前文件,但不会运行任何 unconfigunpre* 脚本。 因此,请不要认为 unconfig 脚本运行过。 .config脚本必须先检查环境,然后才能假定取消配置已完成。

例如,对于 "ras.berry.rte文件集,配置脚本会在根文件 "crontab中添加一行。 重新安装 "ras.berry.rte文件集会出现两个 "crontab条目,因为重新安装时没有运行 "unconfig脚本(该脚本删除了 "crontab条目)。 配置脚本必须始终删除条目,然后再重新添加。

处理 "apply操作

本节介绍 "installp命令在应用文件集或文件集更新时采取的步骤。

  1. 从指定的设备中恢复软件包的 lpp_name 产品软件包信息文件。
  2. 验证请求的文件集是否存在于安装介质中。
  3. 检查请求的文件集的级别以确保这些文件集可以安装在系统中。
  4. 将控制文件从 "liblpp.a存档库文件恢复到软件包目录("/usr/lpp/Package_Name用于 "usr或 "usr/root软件包)。 专门用于 "usr/root软件包中 "root部分的控制文件位于 "/usr/lpp/Package_Name/inst_root/liblpp.a中)。
  5. 检查磁盘空间需求。
  6. 检查必要的必要条件(使用或安装另一个文件集需要达到一定级别的文件集)是否已安装或在待安装列表中。
  7. 确定是否必须满足许可协议要求才能继续安装。
  8. 如果这是一个安装包而不是文件集更新包,请搜索软件重要产品数据 (SWVPD),查看Fileset(正在安装的文件集)或 "Fileset.namelist文件中列出的任何文件集是否已安装在系统的任何级别上。 如果已安装文件,则将文件集名称和安装级别写入 "Work_Directory/Fileset.installed_list文件。

    如果没有安装文件集级别,那么如果安装了 "Fileset.namelist文件中列出的任何文件集,则在 "Work_Directory/Fileset.installed_list文件中列出所有这些文件集和级别。 Work_Directory与软件包目录相同,只是根目录部分使用 "/lpp/Package_Name

  9. 如果这是一个安装软件包而不是文件集更新软件包,那么请运行 /usr/lib/instl/rminstal 脚本来对每个要安装的文件集执行以下操作。
    注意:除非另有说明,否则检查是否存在的文件必须是从 "liblpp.a控制文件库中恢复的。
    1. 如果存在 "Fileset.pre_rm,请运行 "Fileset.pre_rm,在删除此版本或现有版本Fileset 中的任何文件之前执行必要的步骤。
    2. 如果存在 "Work_Directory/Fileset.installed_list,则将 "Fileset.cfgfiles中列出的现有文件移至配置文件保存目录(由环境变量 "MIGSAVE指示)。
    3. 如果某个版本的 Fileset 已安装,那么除去 Fileset 中的文件和 SWVPD 信息(历史记录除外)。
    4. 如果 Work_Directory/Fileset.installed_list 存在,且 Fileset.rm_inv 存在,或 Fileset.namelist 包含多个文件集,或 Fileset.namelist 中列出的唯一文件集是 bos.obj ,则执行以下操作:
      1. 删除 "Fileset.rm_inv文件中列出的文件和 SWVPD 清单信息。
      2. 删除 "Fileset.inventory文件中列出的文件和 SWVPD 清单信息。
      3. 删除 "Fileset.namelist中列出的任何不再有 SWVPD 清单信息的文件集的其他 SWVPD 信息。
    5. 如果 "Work_Directory/Fileset.installed_list存在且只包含一个文件集,而 "Fileset.namelist只包含一个文件集,则删除该文件集的文件和 SWVPD 信息(历史记录除外)。
    6. 对于产品包的每个部分(仅 usr 部分或 "usr后的 root 部分)
      1. 设置 INUTREE(U表示 "usrM表示 root)和 INUTEMPDIR(创建的临时工作目录名称)环境变量。
      2. 如果 instal 控制程序存在于软件包目录中(不推荐),请运行 ./instal,否则运行缺省的脚本 /usr/lib/instl/instal。 如果软件包目录中不存在 "instal控制程序,则设置 "INUSAVEDIR环境变量。
      3. 如果 update 控制程序存在于软件包目录中(不推荐),请运行 ./update。 如果 update 控制程序不存在于软件包目录中,请运行缺省的脚本 /usr/lib/instl/update
      4. 如果 status 文件已由 instalupdate 成功创建 ,则使用 status 文件来确定每个文件集的成败。 如果未创建 "status文件,则假定软件包中所有请求的文件集均未应用。
      5. 如果文件集的 "apply操作成功,则更新软件重要产品数据 (SWVPD),然后注册任何相关的许可协议要求。 如果对文件集的 apply 操作不成功,则从软件包目录运行 /usr/lib/instl/cleanup 或软件包提供的 lpp.cleanup 来清理失败的文件集。

处理默认安装或更新脚本

可执行文件 instalupdate 将通过 installp 调用,且命令的第一个参数是要用于安装或更新的设备。 第二个参数是包含要安装或更新的文件集列表的文件全路径名,称为 "$FILESETLIST。 默认情况下,"instal和 "update脚本是连接在一起的;处理方式因调用的是 "instal还是 "update而异。 当前目录是软件包目录。 在 /tmp 中创建了一个临时目录 INUTEMPDIR 用于保存工作文件。

缺省的 instalupdate 脚本中的流程如下:

  1. 对在 $FILESETLIST 中列示的每个文件集执行以下操作:
    1. 如果文件集是更新文件,则执行 "Fileset.pre_u(pre_update)(如果存在)。 如果文件集不是更新,则执行 "Fileset.pre_i(安装前)(如果存在)。
    2. 通过将 "Fileset.al添加到新文件 "INUTEMPDIR/master.al中,建立要从软件包中恢复的文件的主列表。
    3. 如果这是一个更新,那么这些文件会指定为保存,并且归档控制文件 lpp.acf 存在。

      保存并关闭正在更新的库归档成员。

    4. 如果处理成功,那么将该文件集追加到要安装在 $FILESETLIST.new 文件中的列表。
  2. 如果这是一个更新,并且指定了文件保存,请运行 inusave 以保存该文件的当前版本。
  3. 如果正在处理 "root部分,则运行 "inucp将文件从应用列表复制到 "root部分。 如果不处理 "root部分,则运行 "inurest从应用列表中恢复文件,以处理 "usr部分。
  4. 请为 $FILESETLIST.new 文件中列示的每个文件集执行以下操作:
    注意:任何步骤的失败都会记录在 "status文件中,该文件集的处理也随之结束
    1. 确定该文件集是否安装在相同或更早的级别,或者是否安装了 "Fileset.namelist中列出的文件集。 如果是的话,请导出环境变量 INSTALLED_LISTMIGSAVE。 这称为迁移
    2. 如果正在处理更新,则调用 "Fileset.post_u(如果存在)。 如果 "Fileset.post_u不存在,则调用存在的 "Fileset.post_i
    3. 如果存在 "Fileset.cfgfiles,则运行 "/usr/lib/instl/migrate_cfg,按照指定的处理方法处理配置文件。
    4. 调用 "sysck将 "Fileset.inventory文件中的信息添加到软件重要产品数据库(SWVPD)中。
    5. 如果存在 "Fileset.tcb文件,并且在 "/usr/lib/objrepos/PdAt ODM数据库中设置了受信任计算基础 "tcb_enabled属性,则调用 "tcbck命令将受信任计算基础信息添加到系统中。
    6. 如果 Fileset.err 存在,则调用 errupdate 添加错误模板。
    7. 如果 Fileset.trc 存在,则调用 trcupdate 添加跟踪报告格式模板。
    8. 如果更新或 "Work_Directory/Fileset.installed_list存在,则调用每个 "Fileset.odmdel和 "Fileset.*.odmdel脚本来处理ODM数据库删除命令。
    9. 在现有的 "Fileset.odmadd 和 "Fileset.*.odmadd上调用 "odmadd,将信息添加到ODM数据库中。
    10. 如果是更新,则调用 "Fileset.config_u(文件集配置更新)(如果存在)。 否则,如果存在 "Fileset.config(文件集配置),则调用它。
    11. 更新 "status文件,表明文件集处理成功。
  5. 将文件集除去操作所需的控制文件链接到软件包的 deinstl 目录,以备将来使用。 这些文件包含了以下可能出现在软件包目录中的文件:
    • lpp.deinstal
    • Fileset.al
    • Fileset.inventory
    • Fileset.pre_d
    • Fileset.unpre_i
    • Fileset.unpre_u
    • Fileset.unpost_i
    • Fileset.unpost_u
    • Fileset.unodmadd
    • Fileset.unconfig
    • Fileset.unconfig_u
    • $SAVEDIR/Fileset.*.rodmadd
    • SAVEDIR/Fileset.*.unodmadd

剔除和清理作业的处理

本节介绍当文件集更新被拒绝或文件集或文件集更新无法完成安装时,"installp命令会采取的步骤。 位于 "/usr/lib/instl中的默认 "cleanup和 "reject脚本被链接在一起。 根据脚本是作为 "reject还是 "cleanup调用,它们的逻辑略有不同。 对于 usr 或 "root文件集或文件集更新,先处理 "root部分,再处理 "usr部分。

  1. 如果被拒绝,请检查必备条件以确保所有相关产品更新同样被拒绝。
  2. 软件包的每个部分(例如,"usr和根):
    1. 设置 "INUTREEU表示 "usrM表示 root)和 "INUTEMPDIR环境变量。
    2. 如果 reject 控制文件存在于当前目录中 (INULIBDIR),请调用 ./lpp.reject。 否则,请调用缺省脚本 /usr/lib/instl/reject
  3. 更新软件重要产品数据。

reject可执行文件由 "installp调用,第一个参数未定义,第二个参数是包含文件集列表(称为 "$FILESETLIST)的文件全路径名,该文件将被拒绝更新。

默认的 "cleanup和 "reject脚本引用了以下文件。

缺省的 cleanupreject 脚本中的流程如下:

  1. 对在 $FILESETLIST 中列示的每个文件集执行以下操作:
    1. 如果作为 "cleanup调用,则读取 "Package_Name.s状态文件中的一行,以确定安装失败的步骤,并跳至该步骤的撤销操作。 cleanup操作仅从安装失败的步骤开始。 例如,如果 "Fileset.post_i脚本中的文件集安装失败,那么该文件集的清理操作将从i 开始,因为安装的后续步骤中没有可撤销的操作。
    2. 撤销任何在安装期间执行的配置处理:

      如果拒绝更新,则调用 "Fileset.unconfig_u(如果存在)。 否则,如果存在 "Fileset.unconfig,则调用它。

    3. 运行任何 "Fileset.*.unodmadd和/或 "Fileset.unodmadd文件,删除安装过程中添加的对象数据管理器ODM)条目。
    4. 运行任何存在的 "Fileset.*.rodmadd和/或 "Fileset.rodmadd,以替换安装过程中删除的ODM条目。
    5. 如果 Fileset.undo.trc 存在,则调用 trcupdate 撤销安装过程中对跟踪格式模板所做的任何更改。
    6. 如果 Fileset.undo.err 存在,则调用 errupdate 撤销安装过程中对错误格式模板所做的任何更改。
    7. 如果存在 "Fileset.tcb文件,且在 "/usr/lib/objrepos/PdAt ODM数据库中设置了可信计算基础属性 "tcb_enabled,则调用 "tcbck删除系统中的可信计算基础信息。
    8. 如果 Fileset.inventory 存在,则调用 sysck 撤销对软件信息数据库的更改。
    9. 撤销安装过程中执行的任何安装后处理:

      如果是更新,则调用已存在的 "Fileset.unpost_u。 否则,如果存在 "Fileset.unpost_i,则调用它。

    10. Fileset.al 文件建立主应用列表(称为 master.al )。
    11. Fileset 添加到 $FILESETLIST.new 中。
  2. 如果 $INUTEMPDIR/master.al 存在,请执行以下操作。
    1. 将目录更改为 "root(/)。
    2. 除去 master.al 中的所有文件。
  3. 在读取 $FILESETLIST.new 时执行以下操作。
    1. 调用 inurecv 以恢复所有保存的文件。
    2. 如果是更新,则调用已存在的 "Fileset.unpre_u。 否则,如果存在 "Fileset.unpre_i,则调用它。
    3. 删除安装/更新控制文件。
  4. 删除 "Package_Name.s状态文件。

处理 "remove操作

本节介绍 "installp命令在删除文件集时采取的步骤。 对于使用或 "root文件集或文件集更新,"root部分会在 usr 部分之前处理。

  1. 检查必备条件以确保所有相关文件集也已除去。
  2. 产品包的每个部分(例如,"usr或根):
    1. 设置 "INUTREE(U 表示 usr,M 表示 root,S 表示 share)和 INUTEMPDIR(在 "/tmp中生成的installp工作目录)环境变量。
    2. 将目录更改为 "INULIBDIR
    3. 如果当前目录下存在 "deinstal控制文件,则运行 "./lpp.deinstal脚本。 如果控制文件 deinstal 不存在于当前目录中,请运行缺省脚本 /usr/lib/instl/deinstal
  3. 从文件系统中除去该文件集中的文件。
  4. 从 SWVPD 中除去文件集条目(历史数据除外)。
  5. 停用文件集的许可协议要求注册。

deinstal可执行文件由 "installp调用,第一个参数是包含要删除的文件集列表的文件全路径名,称为 "$FILESETLIST

缺省的 deinstal 脚本中的流程如下所示:

  1. 对在输入文件 $FILESETLIST 中列示的每个文件集执行以下操作:
  2. 如果存在 "Fileset.unconfig_d

    执行 "Fileset.unconfig_d以删除所有配置更改、对象数据管理器ODM) 更改、错误和跟踪格式更改,并撤销所有更新和基础安装的安装后和安装前脚本中执行的所有操作。 建议使用该文件。

  3. 如果 "Fileset.unconfig_d不存在、
    1. 对于该文件集中的每一个更新,执行以下操作:
      • 运行所有 "Fileset.unconfig_u脚本,撤销任何更新配置处理。
      • 运行所有 "Fileset.*.unodmadd和 "Fileset.unodmadd,删除更新期间添加的对象数据管理器ODM) 条目。
      • 运行所有 "Fileset.*.rodmadd和 "Fileset.rodmadd,添加更新过程中删除的对象数据管理器ODM) 条目。
      • 如果 Fileset.undo.err 存在,则运行 errupdate 撤销错误日志模板更改。
      • 如果 Fileset.undo.trc 存在,则运行 trcupdate 撤销跟踪报告模板更改。
      • 运行任何 "Fileset.unpost_u以撤销任何安装后的自定义设置。
    2. 对于文件集基础安装级别,请执行以下操作:
      • 运行 "Fileset.*.unodmadd和/或 "Fileset.unodmadd删除安装过程中添加的对象数据管理器ODM)条目。
      • 运行任何 "Fileset.*.rodmadd和/或 "Fileset.rodmadd,以添加安装过程中删除的对象数据管理器ODM) 条目。
      • 如果 Fileset.undo.err 存在,则运行 errupdate 撤销错误日志模板更改。
      • 如果 Fileset.undo.trc 存在,则运行 trcupdate 撤销跟踪报告模板更改。
      • 运行 "Fileset.unconfig_i撤销任何安装配置处理。
      • 运行 "Fileset.unpost_i以撤销任何文件安装后的自定义设置。
  4. 删除与文件集一起安装的文件和软件数据信息。
  5. 如果 "Fileset.unconfig_d不存在、
    1. 对于该文件集的每次更新,运行任何 "Fileset.unpre_u以撤销文件安装前的自定义设置。
    2. 对于文件集基本安装级别,运行任何 "Fileset.unpre_i都可以撤销文件安装前的任何自定义设置。
  6. 删除所有与该文件集关联的空目录。
    注意:如果在执行 "deinstal可执行文件的过程中,某个调用返回错误,该错误将被记录,但执行仍将继续。 这与其他的脚本不同,因为该文件集的执行一般在遇到错误时会被取消。 但是,一旦文件集的除去操作开始,那么不存在恢复;因此,一旦发现错误,除去操作将有最好的效果。

安装状态文件

$INUTEMPDIR/status
对每个要安装或更新的文件集包含一个占用一行的条目的文件

installp命令使用该 "status文件来决定适当的处理。 如果创建安装脚本,脚本必须生成格式正确的 "status文件。 status文件中的每一行格式如下

表 9。 StatusCode 文件集
状态码 含义
s 成功更新 SWVPD
f 失败,执行清除过程
b 旁路、失败、不需要的清理
i 必备条件失败,无需清除
v sysck 验证失败

下面的 status 文件示例向 installp 命令指出, bos.net 软件包的 tcp.clienttcp.server 文件集安装成功,而 nfs.client 文件集安装不成功。

s bos.net.tcp.client
s bos.net.tcp.server
f bos.net.nfs.client

安装和更新过程中使用的安装命令

inucp
安装 "root部分时,将 "/usr/lpp/Package_Name/inst_root目录中的文件复制到 "root/)文件树中。
inulag
作为子例程的前端来管理许可协议。
inurecv
恢复安装失败或软件拒绝(installp -r)时保存的文件。
inurest
以应用列表为输入,将文件从分发介质恢复到系统中。
inusave
将应用列表中指定的所有文件保存到属于软件产品的 "save目录中。
inuumsg
针对正在安装的软件产品,从 inuumsg.cat 消息目录文件中发出消息。
ckprereq
通过使用 "lpp_name文件中提供的必要信息和 SWVPD 中已安装产品的信息,验证软件产品与任何依赖项的兼容性。
sysck
在安装和更新过程中检查清单信息。
sysck 命令在 /usr/bin 目录中。 前面列出的其他命令都在 "/usr/bin目录下。

有关这些用途的示例,请参阅缺省安装脚本 /usr/lib/instl/instal