在 Oracle® Solaris 11.2 中使用映像包管理系统打包和交付软件

退出打印视图

更新时间: 2014 年 7 月
 
 

提供其他软件包也提供的文件

对于其他软件包已经提供的文件,您可能需要使用 IPS 软件包提供该文件的定制版本。缺省情况下,只有一个 IPS 软件包可以向任何特定位置提供文件。要使用 IPS 软件包提供其他 IPS 软件包已提供文件的定制版本,需确保 file 操作中设置了以下属性:

  • 要替换的文件设置了 overlay=allowpreserve=true 属性。

  • 替换文件设置了 overlay=true 属性和 preserve 属性(任何值)。

请参见文件操作overlaypreserve 属性的描述。

具有 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 提供的原始文件。