保存那些在安装过程中已安装的或更新的文件。这个命令由 installp 命令和安装脚本来使用。
inusave ListFile ProductName
inusave 命令保存那些由 ListFile 参数为 ProductName 软件产品指定的文件中的文件和归档文件。inusave 命令旨在和 installp 命令一起使用。
The inusave 命令创建 /usr/lpp/PackageName/FilesetName/V.R.M.F.save 目录, 如果它还不存在的话,其中 Level 有 vv.rr.mmmm.ffff 和 vv = 版本、rr = 发行版、mmmm = 修改 和 ffff = 补丁。这就是安装过程存储保存文件的目录。该保存目录由 INUSAVEDIR 环境变量定义。
安装的 / (root)、/usr 和 /usr/share 部分的保存目录分别是:
,前提是它们是由 installp 命令设置的。installp 命令为这三个目录的每一个都调用 inusave。ListFile 参数是文件的全路径名,这些文件列出了如果当前拷贝存在时需要保存的文件。
如果在 ListFile 中指定的文件已经存在,inusave 命令把那个文件复制到 $INUSAVEDIR/update.n 文件,其中 n 是一个由 inusave 命令分配的整数。如果文件不存在, inusave 命令就假定在 ListFile 参数中的这项代表一个新文件或者一个由归档程序处理的文件,这将在本节的稍后部分介绍。
inusave 命令维护 $INUSAVEDIR/update.list 文件中的保存文件列表。这个文件是一个对于每个保存文件都有一项的节文件。在 update.list 文件中的项类似于以下内容:
/usr/bin/chkey: update.n = update.1 option = bosnet.nfs.obj _id = 209 _reserved = 0 _scratch = 0 lpp_id = 72 private = 0 file_type = 0 format = 1 loc0 = /usr/bin/chkey size = 7800 checksum = 44561 /usr/bin/domainname: update.n = update.2 option = bosnet.nfs.obj _id = 210 _reserved = 0 _scratch = 0 lpp_id = 72 private = 0 file_type = 0 format = 1 loc0 = /usr/bin/domainname size = 2526 checksum = 12439
在前面的例子中,/usr/bin/chkey(节的名称)是保存的原始文件的名称, update.1 是 $INUSAVEDIR 目录下的文件的名称,而文件都是复制到这个目录下。文件 /usr/bin/chkey 属于软件产品 bosnet 的 bosnet.nfs.obj 可安装选项。节文件中的节名和的前两项(update.n 和 option)为 update.list 文件中的每个节而存在。节中的剩余项(也许会变化)是来自“软件重要产品数据”(SWVPD)数据库的信息。
如果在当前目录下存在有效的归档控制文件 lpp.acf,那么归档组成文件就会被保存。 如果 lpp.acf 文件存在,inusave 命令会把 ListFile 中的每个文件名和 lpp.acf 中的组成文件名相比较。当查找到一个匹配时,inusave 命令使用 ar 命令以从它的相关归档文件中解压缩组成文件。然后它会把文件移动到 $INUSAVEDIR/archive.n文件中,其中 n 是由 inusave 命令选定的一个整数。
inusave 命令维护那些保存在 $INUSAVEDIR/archive.list 文件中的解压缩文件列表。这个文件是一个对于每个保存的组成文件都有对应项的节文件。在 archive.list 文件中的项类似于以下内容:
/prodx.filea: archive.n = archive.1 arc_name = /usr/lib/productx/libprodx.a option = productx.option1.obj _id = 833 _reserved = 0 _scratch = 0 lpp_id = 7 private = 0 file_type = 0 format = 1 loc0 = /prodx.filea loc1 = "h11,h12" loc2 = "/usr/lpp/productx.filea/s11,/usr/lpp/productx.filea/s12" size = 1611 checksum = 62793
在前面的例子中 /prodx.filea (节的名称)是保存的原始组成文件的名称,archive.1 是它要复制到的 $INUSAVEDIR 目录中的文件名称,而文件都是复制到这个目录下。/usr/lib/productx/libprodx.a 是 lpp.acf 归档控制文件中定义的归档文件的全路径名。组成文件 /prodx.filea 属于软件产品 productx 的 productx.option1.obj 可安装选项。节名和节中的前三项(archive.n、arc_name、和 option)为 archive.list 文件中的每个节而存在。节中的剩余项(也许会改变)是来自 SWVPD 数据库的信息。
ListFile | 指定文件的全路径名,它包含了要保存的文件的相对路径名的列表,每行一个。 |
ProductName | 指定可安装的软件产品,它们的文件将被保存。 |
INUEXPAND | 如果要扩展文件系统并且有必要进行保存(也就是说,-X 标志会传递给installp),installp 命令将会把该标志设为 1。如果不需要扩展文件系统,该标志就设为0。如果没有设置该环境变量,缺省值是不扩展文件系统。 |
INUSAVE | installp 命令将会把该标志设为 1,如果要保存文件(也就是说, -N 标志被传递给 installp)。如果不保存文件就设为 0。如果没有设置该环境变量,缺省值是保存文件。 |
INUSAVEDIR | 文件要保存的目录的全路径名。如果没有设置该环境变量,那么使用的目录就是 /usr/lpp/ProductName/inst_updt.save。 |
INUTEMPDIR | 该目录用于该命令执行期间所需的临时空间。如果没有设置该环境变量,那么使用的目录就是 /tmp。 |
下面的错误代码都是定义在 /usr/include/inuerr.h:
INUBADSC | 不能创建保存目录。 |
INUBADC2 | 文件不能从一个目录复制到另外一个目录。 |
INUGOOD | 没有出现出错条件。 |
INUNOAP1 | 不能访问 ListFile。 |
INUTOOFW | 遗漏一个或多个参数。 |
INUTOOMN | 指定的参数过多。 |
权限控制:只有 root 用户才能执行该命令。
要保存列在 snaserv 程序的 snaserv.al 文件中的所有文件,请输入:
inusave /usr/lpp/snaserv/snaserv.al snaserv