跳过导航链接 | |
退出打印视图 | |
在 Oracle Solaris 11.1 中使用映像包管理系统打包和交付软件 Oracle Solaris 11.1 Information Library (简体中文) |
通过谨慎地使用上述各种类型的 depend 操作,软件包可以定义可用来升级它们的方式。
通常情况下,您希望将一组软件包安装在一个系统上以便同时对其进行支持和升级:该组中的所有软件包要么全部更新,要么都不更新。这就是使用 incorporate 相关项的原因。
以下三个不完整的软件包清单显示了 foo 和 bar 软件包与 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
foo 和 bar 软件包都具有依赖于 myincorp incorporation 的 require 相关项。myincorp 软件包具有 incorporate 相关项,它们按以下方式对 foo 和 bar 软件包进行约束:
foo 和 bar 软件包最多可升级到版本 1.0:到相关项中指定的版本号所定义的粒度级别。
如果 foo 和 bar 软件包已安装,则它们必须处于版本 1.0 或更高版本。
依赖于版本 1.0 的 incorporate 相关项允许版本 1.0.1 或版本 1.0.2.1,例如,但不允许版本 1.1、版本 2.0 或版本 0.9。当安装了在更高版本指定了 incorporate 相关项的更新的 incorporation 软件包时,将允许 foo 和 bar 软件包更新至这些更高的版本。
由于 foo 和 bar 具有依赖于 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) 手册页。
要向映像应用更复杂的相关项,请创建并安装包括这些相关项的软件包。