如何使用映像包管理系统更新至 Oracle Solaris 11.1

作者:Peter Dennis

本文详细介绍使用映像包管理系统 (IPS) 将 Oracle Solaris 11 11/11 系统更新到 Oracle Solaris 11.1 所需的步骤。


2012 年 10 月发布

根据您当前的环境,主要有两种更新到 Oracle Solaris 11.1 的方法:

想要自动接收类似本文的技术文章?请订阅系统社区新闻快讯 — 专门面向系统管理员和开发人员的技术内容。
  • 通过 Oracle Solaris 版本信息库
  • 通过 Oracle Solaris 支持信息库(如果您有 Oracle 支持协议)。

大多数安装了 Oracle Solaris 11 但没有 Oracle 支持协议的用户将使用 Oracle Solaris 版本信息库作为其配置的软件包信息库,如下面使用 pkg publisher 命令所示:

# pkg publisher
PUBLISHER   TYPE    STATUS  URI
solaris     origin  online  http://pkg.oracle.com/solaris/release/

具有 Oracle 支持协议的客户将使用 Oracle Solaris 支持信息库作为其配置的软件包信息库,如下所示:

# pkg publisher
PUBLISHER   TYPE    STATUS  URI
solaris     origin  online  https://pkg.oracle.com/solaris/support

使用 Oracle Solaris 版本信息库

更新到 Oracle Solaris 11.1 是一个多步骤过程,因为某些系统软件包必须先更新,然后才能成功更新系统软件包的其余部分。

  1. 首先,使用带 --accept 选项的 pkg update 更新一小部分系统软件包,然后重新启动:

    # pkg update --accept
    # reboot
    
  2. (仅限 SPARC)如果您在 SPARC 系统上运行,并且安装了 Oracle Solaris 区域,在此阶段需要执行一个额外的步骤。对于系统上安装的每个区域,您将需要删除 pkg:/system/ldoms/ldomsmanager 软件包,如下所示:

    # for z in `zoneadm list`; do zlogin $z pkg uninstall ldomsmanager; done
    
  3. 接下来,更新 IPS 软件包本身:

    # pkg update pkg:/package/pkg
    
  4. 最后,更新系统软件包的其余部分并重新启动系统。

    为了进行更新,我们使用 pkg update--accept 标志同意和接受要更新的许可条款。我们还使用 --be-name 标志为要创建的引导环境提供新名称。

    # pkg update --be-name s11.1ga --accept
    # reboot
    

:对于不能直接连接到 Oracle 托管软件包信息库的系统,需要下载 Oracle Solaris 11.1 升级前库映像,其中包含在更新到 Oracle Solaris 11.1 之前需要更新的软件包。该 ISO 映像包含一个自述文件,其中描述了构造信息库和更新到 Oracle Solaris 11.1 所必需的步骤。

使用 Oracle Solaris 支持信息库

对于签定 Oracle 支持合同的客户,Oracle Solaris 11 发布流程已更改,这样在 Oracle Solaris 11 下一次更新的最终预发布阶段不会出现错误修复发布中断。这有助于加快 Oracle Solaris 11 当前发布版本的关键客户错误修复的发布速度。此增强的一个后果是更新版本本身可能不包含上一版本的最终支持信息库更新 (SRU) 中发布的少量错误修复。

例如,Oracle Solaris 11 11/11 的最终 SRU 是 SRU#12.4 和 SRU#13.4。SRU#12.4 和 SRU#13.4 中的某些软件包的版本高于 Oracle Solaris 11.1 中的版本。为了保留这些错误修复,版本差异将阻止更新到 Oracle Solaris 11.1 版。此外,如果要直接迁移到 Oracle Solaris 11.1 版,还要删除核心操作系统中的一些修复。为方便起见,“SRU#12.4 中修复的错误”部分列出了这些错误号。

初始 Oracle Solaris 11.1 SRU 中解决了以上 SRU 提供的所有错误修复。该 SRU 包含在支持信息库中。

所需的更新步骤可能因某些系统运行不同的 SRU 版本而不同。为了查明系统上是何种 SRU,可以对 pkg:/entire 软件包运行 pkg info 命令,如清单 1 所示:

# pkg info entire
         Name: entire
      Summary: entire incorporation including Support Repository Update (Oracle Solaris 11 11/11 SRU 10.5).
  Description: This package constrains system package versions to the same
               build.  WARNING: Proper system update and correct package
               selection depend on the presence of this incorporation.
               Removing this package will result in an unsupported system.  For
               more information see https://support.oracle.com/CSP/main/article
               ?cmd=show&type=NOT&doctype=REFERENCE&id=1372094.1.
     Category: Meta Packages/Incorporations
        State: Installed
    Publisher: solaris
      Version: 0.5.11 (Oracle Solaris 11 SRU 10.5)
Build Release: 5.11
       Branch: 0.175.0.10.0.5.0
Packaging Date: Fri Aug 03 18:26:27 2012
         Size: 5.45 kB
         FMRI: pkg://solaris/entire@0.5.11,5.11-0.175.0.10.0.5.0:20120803T182627Z

清单 1.确定系统的 SRU

不希望缺失后面 Oracle Solaris 11 11/11 SRU 版本中任何错误修复的客户应更新到 Oracle Solaris 11.1 SRU#1.4,如下面所述。

更新运行 SRU#10.5 的系统

  1. (仅限 SPARC)如果您在 SPARC 系统上运行,并且安装了 Oracle Solaris 区域,则需要执行这个额外的第 1 步。对于系统上安装的每个区域,您将需要删除 pkg:/system/ldoms/ldomsmanager 软件包,如下所示:

    # for z in `zoneadm list`; do zlogin $z pkg uninstall ldomsmanager; done
    
  2. 更新 IPS 软件包本身:

    # pkg update pkg:/package/pkg
    

    由于某些软件包中的早期错误,系统上这些软件包的安装可能不正确。SRU#10.5 已经解决了这些问题,并提供了删除此类有问题的软件包的机制。上述命令执行此操作,它会报告正在删除某些软件包(如果安装了此类软件包)。以下是它将删除的软件包:

    X86 pkg://solaris/ldoms/ldoms-incorporation
    SPARC
    pkg://solaris/consolidation/nvidia/nvidia-incorporation
    pkg://solaris/driver/network/ethernet/elxl
    pkg://solaris/driver/network/ethernet/pcn
    pkg://solaris/driver/network/ethernet/dnet
    pkg://solaris/driver/network/ethernet/iprb
    
  3. 更新系统软件包的其余部分并重新启动系统。

    为了进行更新,我们使用 pkg update--accept 标志同意和接受要更新的许可条款。我们还使用 --be-name 标志为要创建的引导环境提供新名称。

    # pkg update --be-name s11.1ga --accept
    # reboot
    

更新运行早期 SRU 版本的系统

在这种情况下,可以选择更新到 SRU#10.5 或更高的 SRU 版本。但要记住,最新的 SRU(12 和 13)包含 Oracle Solaris 11.1 中针对该版本的首个 SRU 之后才存在的修复。

运行以下命令将系统更新到 SRU#10.5:

# pkg update --accept entire@0.5.11,5.11-0.175.0.10
# reboot

或者,运行以下命令将系统更新到最新的 SRU:

# pkg update --accept
# reboot

将运行 SRU#12.4 或更高版本的系统更新到 Oracle Solaris 11.1 加 SRU#1.4 或更高版本

随着 Oracle Solaris 11.1 SRU#1.4 的发布,只需运行以下命令即可更新系统:

# pkg update --be-name s11.1sru --accept
# reboot

然后,系统将运行含 SRU#1.4 的 Oracle Solaris 11.1。

将运行 SRU#12.4 或更高版本的系统更新到 Oracle Solaris 11.1

如果只需要更新到 Oracle Solaris 11.1 而无需 SRU,则需要执行以下步骤。

如果安装了以下任一软件包,则需要删除它们并在更新到 Oracle Solaris 11.1 后重新添加,或者将其与系统上的约束解除关联(称为解锁),如以下步骤所述。

pkg://solaris/network/dns/bind
pkg://solaris/service/network/dns/bind
pkg://solaris/mail/fetchmail

  1. 执行以下操作之一:

    • 要删除软件包,请运行以下命令:

      # pkg uninstall pkg://solaris/network/dns/bind
      # pkg uninstall pkg://solaris/service/network/dns/bind
      # pkg uninstall pkg://solaris/mail/fetchmail
      

      注意,通过在一行上指定软件包,可以将上述命令合并成一步:

      # pkg uninstall pkg://solaris/network/dns/bind \
      pkg://solaris/service/network/dns/bind \
      pkg://solaris/mail/fetchmail
      

      如果系统上安装了任何 Oracle Solaris 区域,则需要在每个区域中卸载软件包,如下所示:

      # for z in `zoneadm list`; do zlogin $z pkg uninstall pkg://solaris/network/dns/bind; done
      
    • 要解锁软件包,请运行以下命令:

      # pkg change-facet facet.version-lock.mail/fetchmail=false
      # pkg change-facet facet.version-lock.service/network/dns/bind=false
      # pkg change-facet facet.version-lock.network/dns/bind=false
      

      注意,通过在一行上指定软件包,可以将上述命令合并成一步:

      # pkg change-facet facet.version-lock.mail/fetchmail=false \
      facet.version-lock.service/network/dns/bind=false \
      facet.version-lock.network/dns/bind=false
      

      需要在每个经过配置的、安装了软件包的区域中执行上述命令。

  2. 更新系统。

    删除软件包或解除其锁定之后,即可执行系统更新或重新启动。

    # pkg update --be-name s11.1ga --accept
    # reboot
    
  3. 重新启动系统之后,根据您在第 1 步执行的操作(删除或解锁软件包),执行以下操作之一:

    • 如果在第 1 步删除了软件包,则使用 pkg install 命令重新安装这些软件包:

      # pkg install pkg://solaris/service/network/dns/bind
      # pkg install pkg://solaris/mail/fetchmail
      

      由于软件包依赖关系,上面的第一个命令还将安装 pkg://solaris/network/dns/bind

    • 如果在第 1 步解锁了软件包,并希望更新到 Oracle Solaris 11.1 的第一个 SRU,则首先更新到该 SRU,然后重新锁定相应的软件包:

      # pkg update
      # pkg change-facet facet.version-lock.mail/fetchmail=true
      # pkg change-facet facet.version-lock.service/network/dns/bind=true
      # pkg change-facet facet.version-lock.network/dns/bind=true
      

      注意,通过在一行上指定软件包,可以将上述命令合并成一步:

      # pkg change-facet facet.version-lock.mail/fetchmail=true \
      facet.version-lock.service/network/dns/bind=true \
      facet.version-lock.network/dns/bind=true
      

      重新锁定软件包的操作将根据需要更新软件包。

SRU#12.4 中已修复的错误

以下是 SRU#12.4 中已经解决但在 Oracle Solaris 11.1 中直到 SRU#1 才解决的错误修复列表。

内核修复:

7071362 tcp_icmp_source_quench and other tunables may no longer be field modifiable
7181137 sol_umad should allow userland MAD operations in NGZs
7196540 After 7174929 integration 0.9.0 is shown for first disk in second RAID volume

其他软件修复:

7166132 vim should be able to run its test suite
7190213 libibmad and associated files need to be delivered in an NGZ 
7191495 mkisofs install is incomplete
7195687 Update fetchmail to version 6.3.22
7195704 Problem with utility/fetchmail
7196234 Problem with network/dns
7197223 vim shows high CPU usage when editing dtrace script with syntax highlighting enabled

另请参见

关于作者

Peter Dennis 是 Oracle Solaris Revenue Product Engineering 小组的首席工程师。他曾从事多项技术工作:文件系统、卷管理和备份、集群和最终用户通用工具。目前他是 Oracle Solaris 11 Update 版本的技术负责人。

修订版 1.2,2012 年 11 月 30 日

facebook 横幅广告 twitter 横幅广告