pkgmap 文件

用途

描述程序包内容描述文件的格式。

描述

pkgmap 文件是一个 ASCII 文件,它提供程序包内容的完整列表。 pkgmap 中的每个条目描述单个 "可交付对象文件"。 可交付对象文件包括 shell 脚本,可执行对象,数据文件和目录。 该条目由多个信息字段组成,每个字段以空格分隔。 下面描述了这些字段,这些字段必须按显示的顺序显示。
字段 描述
部分 用于指定对象所在部件号的字段。 部件是文件的集合,是处理包所使用的原子单元。 开发者可以选择将文件分组到部件中的条件 (例如,基于类)。 如果未在此字段中定义任何值,那么将采用部件 1。
ftype 指示文件类型的单字符字段。 有效值是:
f
标准可执行文件或数据文件
e
安装或除去时要编辑的文件
v
volatile 文件 (期望其内容更改的文件)
目录
X
独占目录
L
链接文件
p
命名管道 (named pipe)
c
字符专用设备
块专用设备
i
安装脚本或信息文件
符号链接 (symbolic link)

一旦文件具有文件类型属性 v,它将始终具有易失性。 例如,如果正在安装的文件已存在并且具有文件类型属性 v,那么即使未将正在安装的文件的版本指定为易失性,文件类型属性也会保持易失性。

CLASS 文件所属的安装类。 此名称必须仅包含字母数字字符,并且长度不得超过 12 个字符。 如果 ftypei (信息文件) ,那么未指定此参数。
pathname 对象驻留在目标机器上的路径名,例如 /usr/bin/mail。 相对路径名 (不以斜杠开头的路径名) 指示文件可重新定位。

对于链接文件 (类型LS) ,路径名必须采用 路径 1=路径 2格式,其中 path1 指定链接的目标, path2 指定链接的源。

对于符号链接的文件,当 path2 是以 ./ 开头的相对路径名时 或 ../path2 不视为可重定位。 例如,如果输入行,例如
   s /foo/bar/etc/mount=../usr/sbin/mount

path1 (/foo/bar/etc/mount) 是指向 ../usr/sbin/mount的符号链接。

pathname 可以包含支持文件重定位的变量。 可以在路径名结构中嵌入 "$"参数$BASEDIR 可用于标识路径层次结构的父目录,使整个包易于重新定位。 参数BASEDIR 的缺省值必须在 pkginfo 文件中提供,并且可以在安装时覆盖。

特殊字符,例如等号 ("="),包含在路径名中,将整个路径名括在单引号中 (例如, '/usr/lib/ ~ =')。

专业 主设备号。 仅对块或字符特殊设备指定该字段。
次要编号 次设备号。 仅对块或字符特殊设备指定该字段。
模式 文件的八进制方式 (例如, 0664)。 问号 ("?") 指示方式保持不变,这意味着文件已存在于目标机器上。 此字段不用于链接文件,打包信息文件或不可安装文件。
所有者 文件的所有者 (例如, binroot)。 该字段的长度限制为 14 个字符。 问号 ("?") 指示所有者保持不变,这表示文件已存在于目标机器上。 此字段不用于链接文件或不可安装文件。 它可选择与包信息文件配合使用。 如果使用此参数,那么它将指示执行安装脚本的所有者。

所有者可以是 $[A-Z] 格式的变量规范,并在安装时解析。

文件所属的组 (例如, binsys)。 该字段的长度限制为 14 个字符。 问号 ("?") 指示该组保持不变,这意味着该文件已存在于目标机器上。 此字段不用于链接文件或不可安装文件。 它可选择与包信息文件配合使用。 如果已使用,那么它指示执行安装脚本的组。

可以是 $[A-Z] 格式的变量分配,并在安装时解析。

大小 文件的实际大小 (以字节计)。 未对命名管道,特殊设备,目录或链接文件指定此字段。
cksum 文件内容的校验和。 未对命名管道,特殊设备,目录或链接文件指定此字段。
模态时间 上次修改的时间。 未对命名管道,特殊设备,目录或链接文件指定此字段。
以下三个可选字段必须用作组。 即,如果指定了任何项,那么必须指定所有三项。
字段 描述
mac 强制访问控制 (MAC) 级别标识 (LID) ,这是一个整数值,用于指定分层分类与零个或多个非分层类别的组合。 问号 ("?") 指示 mac 字段将保持不变,这意味着该文件已存在于目标机器上。 此字段只能应用于 sfs 文件系统上的文件,而不能用于链接文件或打包信息文件。
注: 在此发行版中不支持强制访问控制; 此字段仅为与先前发行版兼容而存在。 如果必须指定此字段,那么应使用值 0
固定 filepriv命令定义的有效助记符固定特权名称的逗号分隔列表。 当不指定固定特权时,将使用字符串 NULL 来代替以逗号分隔的列表。 问号 ("?") 指示固定字段将保持不变,这意味着该文件已存在于目标机器上。 如果未提供固定属性,那么将使用无固定特权安装文件。 此字段不用于链接文件或打包信息文件。
注: 固定特权在当前发行版中无效。 仅为与先前发行版兼容而维护此功能。
已继承 filepriv 命令定义的有效助记符继承特权名称的逗号分隔列表。 当不指定特权时,将使用字符串 NULL 来代替以逗号分隔的列表。 问号 ("?") 指示继承的字段将保持不变,这意味着该文件已存在于目标机器上。 如果未提供继承的属性,那么将安装没有可继承特权的文件。 此字段不用于链接文件或打包信息文件。
注: 可继承特权在当前发行版中无效。 仅为与先前发行版兼容而维护此功能。
每个 pkgmap 都必须有一行,提供有关构成程序包的部件的数目和最大大小 (以 512 字节块为单位) 的信息。 此行采用以下格式:
   :number_of_parts  maximum_part_size

以 " #" 开头的行是注释行,将被忽略。

如果在安装期间在文件被覆盖之前保存这些文件,那么这些文件通常只是复制到临时路径名。 但是,对于其方式包含执行许可权 (但不可编辑) 的文件,现有版本将链接到临时路径名,并且将除去原始文件。 这允许覆盖安装期间正在执行的进程。

pkgmap 文件每个唯一路径名只能包含一个条目。

互斥目录类型 (file) 类型 x 指定限制为仅包含安装软件数据库 (/var/sadm/install/contents) 中显示的文件的目录。 如果目录中有其他文件,那么 pkgchk -fx 将除去这些文件,如 pkgchk 命令的手册页中所述。

ownergroup 字段的变量规范在 pkginfo 文件中定义。 例如, owner 可以是 pkgmap 文件中的 $OWNER ; 如果 OWNERpkginfo 文件中定义为 root ,那么 $OWNER 将在安装该文件时获取值 root

示例

以下是示例 pkgmap 文件。
   :2 500
   1 i pkginfo 237 1179 541296672
   1 b class1 /dev/diskette 17 134 0644 root other
   1 c class1 /dev/rdiskette 17 134 0644 root other
   1 d none bin 0755 root bin
   1 f none bin/INSTALL 0755 root bin 11103 17954 541295535
   1 f none bin/REMOVE 0755 root bin 3214 50237 541295541
   1 l none bin/UNINSTALL=bin/REMOVE
   1 f none bin/cmda 0755 root bin 3580 60325 541295567 0 NULL
   macread,macwrite
   1 f none bin/cmdb 0755 root bin 49107 51255 541438368
   1 f class1 bin/cmdc 0755 root bin 45599 26048 541295599
   1 f class1 bin/cmdd 0755 root bin 4648 8473 541461238
   1 f none bin/cmde 0755 root bin 40501 1264 541295622
   1 f class2 bin/cmdf 0755 root bin 2345 35889 541295574
   1 f none bin/cmdg 0755 root bin 41185 47653 541461242
   2 d class2 data 0755 root bin
   2 p class1 data/apipe 0755 root other
   2 d none log 0755 root bin 0 NULL NULL
   2 v none log/logfile 0755 root bin 41815 47563 541461333
   2 d none save 0755 root bin
   2 d none spool 0755 root bin
   2 d none tmp 0755 root bin