文章
服务器与存储管理
作者:Peter Dennis
2012 年 5 月发布
Oracle 支持信息库包含错误修复程序和关键安全修复程序,可应用到现有 Oracle Solaris 11 安装上,以帮助确保系统在数据中心正常运行。支持信息库每月更新一次,这些更新称为“支持信息库更新 (SRU)”。与包括各种新操作系统特性的 Oracle Solaris 更新不同,Oracle 支持信息库只对有支持合同的系统开放,且关键更新较少。
|
本文探讨映像包管理系统 (IPS) 的更高级用法,并假设您对使用 pkg(1) 命令行工具的更新过程已有基本的了解。如果要了解 IPS 的最新信息,请阅读“如何使用支持信息库更新更新 Oracle Solaris 11 系统”。
Oracle Solaris 11 软件通过一组软件包交付,每组软件包受编制 约束,以确保软件包版本彼此一致(且经过测试)。注意,编制并不提供软件包,而是定义可以在系统上安装的软件包的版本。
每个编制大体上代表系统的功能组件。如 gnome-incorporation,它代表 GNOME 桌面。您可以在使用映像包管理系统打包并提供软件 开发人员指南中找到编制的完整列表。所有编制又受称为 entire 的编制的约束。
您可以从编制的一个版本升级到另一个版本。更新编制时,它约束的所有软件包将更新到编制新版本中指定的版本。
支持信息库要求相关客户端系统上配置了 SSL 证书。您可以使用 http://pkg-register.oracle.com 上的注册申请获得 SSL 证书。
安装 SSL 证书之后,就可以使用 pkg(1) 命令行工具或 Package Manager 图形化工具访问支持信息库了。
错误修复程序以软件包的更新形式来提供。当软件包在 SRU 中更新了时,软件包的版本字符串也会递增。您可以在使用映像包管理系统打包并提供软件 开发人员指南中找到有关版本字符串的详细信息。
因为每个软件包是编制的一部分,所以将更新编制以包括软件包的新版本。这又意味着将更新 entire 编制以使用这些新编制。
可通过以下几种方式更新系统:
建议您使用支持信息库内的最新更改定期更新系统。为此,在系统上使用以下命令:
# pkg update
如果只需要更新到特定 SRU,则在运行 pkg update 命令时,通过 entire 故障管理资源标识符 (FMRI) 字符串标识 SRU。例如,下面这条命令可以更新到 SRU#2:
# pkg update entire@0.5.11-0.175.0.2
要列出所有可用 SRU,使用以下命令:
# pkg list -af entire
有关每个 SRU 中修复的错误的信息,可在 My Oracle Support SRU 信息页(要求登录)上找到。
当更新到整个 SRU 不可行时,可以更新特定软件包或某组软件包以解决某一 SRU 修复的问题。这不是首选或推荐的做法,但可以更新特定软件包和编制。
该方法利用了开发人员指南第 6 章和第 13 章中介绍的版本解除锁定机制。
将相应的版本锁 facet 设置为 false,从而移除由编制应用于相应软件包的约束。
相互依赖的软件包必须要有一致的版本,但并非所有软件包可以放松约束,如果是这种情况,它们不会有版本锁 facet。例如不可分核心,它包括内核、驱动程序、系统库及相关工具。
其他已安装组件可能对有版本锁 facet 的软件包有 require 或 optional 依赖关系。在这个例子中,您可以取消设置 facet 但不能修改系统上软件包的版本。如果是这种情况,该软件包系统将提示为什么不能更改该软件包。
此时,设置版本锁 facet 可能需要较长时间。这一问题正在解决。
版本锁 facet 存在于单个组件软件包和编制上。设置后者让您可以将编制从系统其余部分解除锁定,而编制本身所包含的软件包继续获得同步。
版本锁 facet 的名称一般如下所示,其中 <package-name> 是 facet 应用到的软件包的名称:
version-lock.<package-name>
此约定将来可能会更改,以便可以为通过多个软件包交付的特定组件修改单个版本锁 facet。
如果需要,某些软件包可以单独更新。一般来说,这些软件包可以独立于操作系统单独更新。当无法更新到整个 SRU 时,若要更新包含安全修复程序的 SRU 中的特定软件包,建议采用此方法。
要放松对软件包的约束,使用以下命令:
# pkg change-facet facet.version-lock.library/security/openssl=false
还可以指定所需版本:
# pkg update library/security/openssl@1.0.0.5-0.175.0.2
注意,上述 pkg update 命令使用完整 FMRI 字符串的一个子集(仅足以唯一标识它即可)。
此外,为了防止意外更改软件包,可以在所需级别将软件包冻结:
# pkg freeze library/security/openssl
建议使用 -c 选项记录冻结的原因。
# pkg freeze -c "Update prior to SRU#4 install" library/security/openssl
注意,如果要修改软件包(移至不同版本),则需要撤销冻结:
# pkg unfreeze library/security/openssl
可以通过两种方法来使软件包重新与 SRU 同步。
# pkg change-facet facet.version-lock.library/security/openssl=true
# pkg update # pkg change-facet facet.version-lock.library/security/openssl=true
# pkg search -l -o fmri ':depend:incorporate:library/security/openssl' FMRI pkg:/library/security/openssl@1.0.0.5-0.175.0.0.0.2.537
然后更新到该版本并重置版本锁 facet:
# pkg update library/security/openssl@1.0.0.5-0.175.0.0.0.2 ... # pkg change-facet facet.version-lock.library/security/openssl=true
再次注意,未使用软件包的完整 FMRI 字符串。
如前所述,可以放松编制施加的约束。一旦放松约束,即可独立于系统的其余部分单独更新软件包。然后可以使用 pkg freeze 冻结软件包以防止它在未来被更新。
例如,可以通过单独更新桌面编制和内核编制来避免系统重新启动:
# pkg change-facet facet.version-lock.consolidation/desktop/desktop-incorporation=false
然后可以独立于系统的其余部分单独更新桌面编制:
# pkg update desktop-incorporation
此外,还可以更新到编制的特定修订版本:
# pkg update desktop-incorporation@0.5.11-0.175.0.5.0.5.0
注:如果编制解除了锁定,且在系统上执行了 pkg update,则将更新解除锁定的编制。您也可能不想发生这种情形,因此可以使用 pkg freeze desktop-incorporation 冻结编制以防止进一步更新。
建议使用 -c 选项记录冻结的原因:
# pkg freeze -c "Standard environment 12/10" desktop-incorporation
如果将来需要更改编制,则需要解除其冻结:
# pkg unfreeze desktop-incorporation
有两种方法可以使编制重新与 SRU 同步:
# pkg change-facet facet.version-lock.consolidation/desktop/desktop-incorporation=true
# pkg update # pkg change-facet facet.version-lock.consolidation/desktop/desktop-incorporation=true
# pkg update desktop/desktop-incorporation@0.5.11,5.11-0.175.0.0.0.2.0 \
web/browser/firefox@6.0.2-0.175.0.0.0.1.0 \
web/data/firefox-bookmarks@6.0.2-0.175.0.0.0.0.0 \
web/browser/firefox/plugin/firefox-flashplayer@10.3.183.10-0.175.0.0.0.1.0 \ ..... # pkg change-facet facet.version-lock.consolidation/desktop/desktop-incorporation=true
软件包之间可能有交叉依赖关系,因此需要同时更新。包管理软件将强制系统上的映像达到一致:如果无法满足依赖要求,则不会修改软件包。如果存在此类依赖关系,则需要放松受影响软件包的约束。
包管理软件所报告消息的形式如下所示:
# pkg update package_name@0.5.11-0.175.0.2 Creating Plan \ pkg update: No matching version of package_name can be installed: Reject: pkg://solaris/package_name@0.5.11,5.11-0.175.0.2.0.3.0:... Reason: All versions matching 'require' dependency pkg:/otherpackage@0.5.11,5.11-0.175.0.2.0.3.0 are rejected
您还需要放松所依赖软件包的约束。
pkg 命令要查看系统上冻结了哪些软件包,使用以下命令:
# pkg freeze
要查看系统上设置了哪些 facet,运行以下命令:
# pkg facet
Peter Dennis 是 Oracle Solaris Revenue Product Engineering 小组的首席工程师。他曾从事多项技术工作:文件系统、卷管理和备份、集群和最终用户通用工具。目前他是 Oracle Solaris 11 Update 版本的技术负责人。
| 修订版 1.0,2012 年 5 月 14 日 |
要了解 Oracle 所有技术中与 sysadmin 有关的内容,请在 Facebook 和 Twitter 上关注 OTN Systems。