对于其他软件包已经提供的文件,您可能需要使用 IPS 软件包提供该文件的定制版本。缺省情况下,只有一个 IPS 软件包可以向任何特定位置提供文件。要使用 IPS 软件包提供其他 IPS 软件包已提供文件的定制版本,需确保 file 操作中设置了以下属性:
要替换的文件设置了 overlay=allow 和 preserve=true 属性。
替换文件设置了 overlay=true 属性和 preserve 属性(任何值)。
请参见文件操作中 overlay 和 preserve 属性的描述。
具有 overlay=true 属性的文件版本将替换具有 overlay=allow 属性的版本,而具有 overlay=allow 属性的文件版本将保存在 /var/pkg/lost+found/ 中。
例如,假设您安装了名为 isvapp 并具有以下 file 操作的软件包:
file opt/isvapp/isvconf path=opt/isvapp/isvconf owner=root group=bin mode=0644 \ overlay=allow preserve=true
软件包将安装以下文件:
-rw-r--r-- 1 root bin 11358 Apr 17 18:44 /opt/isvapp/isvconf
您希望所有系统上都拥有此文件的站点特定版本。创建名为 isvconf 并具有以下 file 操作的软件包,以提供文件的新版本:
file opt/isvapp/isvconf path=opt/isvapp/isvconf owner=root group=bin mode=0644 \ overlay=true preserve=renameold
安装 isvconf 后,系统中包含以下文件:
$ ls -l /opt/isvapp/isvconf -rw-r--r-- 1 root bin 72157 Apr 17 18:47 /opt/isvapp/isvconf $ ls -l /var/pkg/lost+found/opt/isvapp total 24 -rw-r--r-- 1 root bin 11358 Apr 17 18:44 isvconf-20140417T184756Z
如果您尝试安装另一个软件包(本例中的 isvconf2),这将提供路径相同的文件,则安装将会失败并提供如下说明:
Creating Plan (Checking for conflicting actions): - pkg install: The following packages all deliver file actions to opt/isvapp/isvconf: pkg://site/isvconf2@1.0,5.11:20140417T190405Z pkg://site/isvapp@1.0,5.11:20140417T182316Z pkg://site/isvconf@1.0,5.11:20140417T185420Z These packages may not be installed together. Any non-conflicting set may be, or the packages must be corrected before they can be installed.
您可以在提供第一个替换文件的软件包更新时提供文件的新版本。安装 isvconf@2.0 后,系统中包含以下文件:
$ ls -l /opt/isvapp/isvconf* -rw-r--r-- 1 root bin 64064 Apr 17 18:52 /opt/isvapp/isvconf -rw-r--r-- 1 root bin 54365 Apr 17 18:47 /opt/isvapp/isvconf.old $ ls -l /var/pkg/lost+found/opt/isvapp total 24 -rw-r--r-- 1 root bin 11358 Apr 17 18:44 isvconf-20140417T184756Z
因为以下两个条件都满足,所以现有文件将保存在 isvconf.old 中:
isvconf 软件包指定 preserve=renameold。
在 isvconf@1.0 安装后、isvconf@2.0 安装前对文件进行了编辑。
lost+found 区域无变化,仍包含 isvapp 提供的原始文件。