了解 Oracle Solaris 11 软件包版本控制

作者:Glynn Foster

如何使用 Oracle Solaris 11 解释 IPS 软件包版本控制,了解系统上安装的软件的状态。


2014 年 6 月发布


Oracle Solaris 11 使用名为映像包管理系统的基于网络的新软件包管理系统管理整个软件生命周期,包括安装、升级和删除软件包。本文总结了如何使用 Oracle Solaris 11 解释软件包版本控制,以便更好地了解系统上安装的软件的状态。

想对本文发表评论吗?请将链接发布在 Facebook 的 OTN Garage 页面上。有类似文章要分享?请将其发布在 Facebook 或 Twitter 上,我们来进行讨论。

显示软件包版本

Oracle Solaris 11 使用名为 incorporation 的软件包约束来控制系统上安装的不同软件版本。这样可以确保系统的状态是一致的,更重要的是,确保一组软件包版本已经过 Oracle 测试,各软件包版本能够协同工作。

名为 entire 的软件包是确定系统整体状态的主要 incorporation 软件包。我们可以使用 pkg info 命令查看 entire incorporation 软件包的版本,如清单 1 所示:

root@solaris:~# pkg info entire
          Name: entire
       Summary: entire incorporation including Support Repository Update (Oracle Solaris 11.1.20.5.0).
   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=1501435.1.
      Category: Meta Packages/Incorporations
         State: Installed
     Publisher: solaris
       Version: 0.5.11 (Oracle Solaris 11.1.20.5.0)
 Build Release: 5.11
        Branch: 0.175.1.20.0.5.0
Packaging Date: June 13, 2014 04:23:23 PM 
          Size: 5.46 kB
          FMRI: pkg://solaris/entire@0.5.11,5.11-0.175.1.20.0.5.0:20140613T162323Z

清单 1

在清单 1 的输出中,我们可以看到该系统上安装的版本是 Oracle Solaris 11.1.20.5.0。这意味它是一个基于 Oracle Solaris 11.1 的系统,已经用支持信息库更新 (SRU) 进行了更新。SRU 是 Oracle 每月为支持的客户提供的更新,修复错误、提供安全警报或提供对新硬件的支持。

分解软件包 FMRI

软件包故障管理资源标识符 (FMRI) 是描述软件包版本的唯一字符串。entire 软件包的软件包 FMRI 是 pkg://solaris/entire@0.5.11,5.11-0.175.1.20.0.5.0:20140613T162323Z

FMRI 可以概括成清单 2 所示的元素:

pkg://<publisher>/<name>@<component_version>,<release>-<branch_version>:<timestamp>

清单 2

如果使用清单 2 所示的一般化形式并分解 entire 软件包 FMRI,可以得到表 1 所示的元素。

表 1.FMRI 元素
FMRI 段 说明
publisher solaris 发布者
name entire 软件包名称
component_version 0.5.11 组件版本
release 5.11 发行版本,如 Oracle Solaris 11
branch_version 0.175.1.20.0.5.0 分支版本
timestamp 20140613T162323Z 软件包时间戳(ISO 8601 UTC 格式)

我们还可以进一步分解 branch_versionentire 软件包为 0.175.1.20.0.5.0),如清单 3 所示:

<trunk_id>.<update>.<sru>.<reserved>.<buildid>.<nightly_id>

清单 3

将清单 3 中的形式用于 entire,可以得到表 2 所示的元素:

表 2.更多 FMRI 元素
FMRI 段 说明
trunk_id 0.175 开发部门的内部版本号
update 1 更新版本,如 Oracle Solaris 11.1
sru 20 SRU 版本
reserved 0 保留(当前未使用)
buildid 5 SRU 内部版本号
nightly_id 0 每日内部版本号

总之,该系统安装了 Oracle Solaris 11.1 SRU 20.5。

含临时诊断救援的软件包版本

临时诊断救援 (IDR) 实际上就是软件包更新,可帮助诊断客户问题或在发布正式软件包更新之前为问题提供临时救援。通常它们由一个客户应用,且只能通过一个独立软件包存档(如 .p5p 文件扩展名所示)获得。如果应用 IDR 修复,软件包版本可能在 branch_version 中新增两个元素,如下所示:

<trunk_id>.<update>.<sru>.<reserved>.<buildid>.<nightly_id>.<idr>.<idr_id>

您可以使用 pkg list 命令查看是否有任何 IDR 应用于系统,如下所示:

root@solaris:~# pkg list idr*
NAME (PUBLISHER)                       VERSION                    IFO
idr104                                 1                          i--

假设 IDR 已经正式修复并作为后续 SRU 版本的一部分发布,当您执行 pkg update 获取这个新 SRU 时,该 IDR 将自动退出。

其他资源

My Oracle Support 上的以下资源提供了有关如何管理 Oracle Solaris 11 软件的更多信息:

  • “Oracle Solaris 11 软件包分支版本方案”(1378134.1)
  • “Oracle Solaris 11.1 支持信息库更新 (SRU) 索引”(1501435.1)
  • “使用 Oracle Solaris 11 管理临时诊断救援 (IDR)”(1537514.1)
  • “如何在 Oracle Solaris 11 上安装 IDR(基于 .p5p)”(1452392.1)

下面是有关 Oracle Solaris 的一些其他资源:

关于作者

Glynn Foster 是 Oracle Solaris 的首席产品经理。他负责多个技术领域,包括 OpenStack、Oracle Solaris 映像包管理系统、安装和配置管理。

修订版 1.0,2014 年 6 月 25 日

关注我们:
博客 | Facebook | Twitter | YouTube