JavaScript is required to for searching.
跳过导航链接
退出打印视图
在 Oracle Solaris 11.1 中使用映像包管理系统打包和交付软件     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

1.  IPS 设计目标、概念和术语

2.  使用 IPS 打包软件

3.  安装、删除和更新软件包

4.  指定软件包相关项

相关项类型

require 相关项

require-any 相关项

optional 相关项

conditional 相关项

group 相关项

origin 相关项

incorporate 相关项

parent 相关项

exclude 相关项

约束和冻结

约束可安装的软件包版本

放宽对可安装的软件包版本的约束

冻结可安装的软件包版本

5.  允许变量

6.  以编程方式修改软件包清单

7.  在软件包安装过程中自动进行系统更改

8.  有关软件包更新的高级主题

9.  对 IPS 软件包进行签名

10.  处理非全局区域

11.  修改已发布的软件包

A.  对软件包进行分类

B.  如何使用 IPS 打包 Oracle Solaris OS

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?

约束和冻结

通过谨慎地使用上述各种类型的 depend 操作,软件包可以定义可用来升级它们的方式。

约束可安装的软件包版本

通常情况下,您希望将一组软件包安装在一个系统上以便同时对其进行支持和升级:该组中的所有软件包要么全部更新,要么都不更新。这就是使用 incorporate 相关项的原因。

以下三个不完整的软件包清单显示了 foobar 软件包与 myincorp incorporation 软件包之间的关系。

以下摘录来自 foo 软件包清单:

set name=pkg.fmri value=foo@1.0
dir path=foo owner=root group=bin mode=0755
depend fmri=myincorp type=require

以下摘录来自 bar 软件包清单:

set name=pkg.fmri value=bar@1.0
dir path=bar owner=root group=bin mode=0755
depend fmri=myincorp type=require

以下摘录来自 myincorp 软件包清单:

set name=pkg.fmri value=myincorp@1.0
depend fmri=foo@1.0 type=incorporate
depend fmri=bar@1.0 type=incorporate

foobar 软件包都具有依赖于 myincorp incorporation 的 require 相关项。myincorp 软件包具有 incorporate 相关项,它们按以下方式对 foobar 软件包进行约束:

依赖于版本 1.0 的 incorporate 相关项允许版本 1.0.1 或版本 1.0.2.1,例如,但不允许版本 1.1、版本 2.0 或版本 0.9。当安装了在更高版本指定了 incorporate 相关项的更新的 incorporation 软件包时,将允许 foobar 软件包更新至这些更高的版本。

由于 foobar 具有依赖于 myincorp 软件包的 require 相关项,因此,必须始终安装该 incorporation 软件包。

放宽对可安装的软件包版本的约束

在某些情况下,您可能希望放宽 incorporation 约束。

bar 或许可以独立于 foo 运行,但您希望将 foo 保留在由 incorporation 中的 incorporate 相关项定义的版本系列中。

您可以使用侧面来放宽 incorporation 约束,以允许管理员有效地禁用某些 incorporate 相关项。第 5 章中对侧面进行了更详细的论述。简而言之,侧面是一些特殊的属性,可以将这些属性应用于软件包中的操作以便作者可以将这些操作标记为可选的。

当以此方式用侧面属性对操作进行了标记时,可以使用 pkg change-facet 命令来启用或禁用包含这些侧面的操作。

根据约定,选择性地安装 incorporate 相关项的侧面被命名为 facet.version-lock.name,其中 name 是包含该 depend 操作的软件包的名称。

使用以上示例,myincorp 软件包清单可以包含以下行:

set name=pkg.fmri value=myincorp@1.0
depend fmri=foo@1.0 type=incorporate
depend fmri=bar@1.0 type=incorporate facet.version-lock.bar=true

缺省情况下,此 incorporation 包括了对 bar 软件包的 depend 操作,将 bar 约束到版本 1.0。以下命令可放宽该约束:

# pkg change-facet version-lock.bar=false


成功执行此命令后,bar 软件包将免受 incorporation 约束并且在需要时可以升级到版本 2.0。

冻结可安装的软件包版本

到目前为止,在软件包设计过程中已通过修改软件包清单应用了有关约束的论述内容。管理员还可以在运行时向系统应用约束。

使用 pkg freeze 命令,管理员可以防止给定软件包从它当前的已安装版本(包括时间戳)或在命令行上指定的版本发生更改。此功能与 incorporate 相关项同样有效。

有关 freeze 命令的更多信息,请参见 pkg(1) 手册页。

要向映像应用更复杂的相关项,请创建并安装包括这些相关项的软件包。