What You See Is What You Get Element What You See Is What You Get Element

利用 IPS 更新软件

适用于 Oracle Solaris 11 Express 的软件管理最佳实践 — 第 1 部分

作者:Ginny Henningsen,2011 年 5 月

第 1 部分 — 利用 IPS 更新软件的最佳方法
第 2 部分 — 自动采集 ZFS 快照和跟踪软件更新的最佳方法


简介

正如谚语所说,“惟有变化才是永恒的”,或许没有人能比系统管理员更好地认识这一点。当系统、应用程序和用户都运转正常时,变化是难以接受的,但常常会有一些外力致使人们期待变化,例如新特性、错误修复、更高速的硬件等。

变化可能会带来显著改进,这正是 Oracle Solaris 的立足点。毫无疑问,Oracle Solaris 10 有一些令人欣赏的特性,而 Oracle Solaris 11 Express 带来了一些创新,可为组织提供关键优势,但需要您改变执行某些管理任务的方式。下表概要列出了这两个版本的任务和技术差异:

任务或技术

Oracle Solaris 10

Oracle Solaris 11 Express

下载操作系统

Oracle Solaris 10 下载站点

Oracle Solaris 11 Express 下载站点

执行交互式安装

安装 DVD

安装 CD 和版本信息库

执行自动安装

JumpStart

自动安装程序

操作系统包管理模型

SVR4

映像包管理系统 (IPS)

应用程序包管理模型

SVR4

IPS 或 SVR4

执行操作系统维护

通过 My Oracle Support 安装补丁

无需打补丁。通过支持信息库 (My Oracle Support) 更新程序包。

执行安全的操作系统升级

Oracle Solaris Live Upgrade

引导环境 (BE) 和 beadm 命令

创建自定义分发

自定义 DVD 的蓝图

分发构造器

从以前的操作系统转换

Oracle Solaris 10 上的 Oracle Solaris 8 或 9 Containers

Oracle Solaris 11 Express 上的 Oracle Solaris 10 Containers


本文是一系列文章中的第一篇文章,讨论如何在 Oracle Solaris 11 Express 中执行软件更新,重点关注可将风险降至最低的最佳实践。要在 Oracle Solaris 11 Express 中更新或安装程序包,假定使用授权角色(例如,执行 pfexec 或 su root 命令),而不必以 root 用户身份显式登录。本文中的命令示例假设用户为特权用户(请参见 Oracle Solaris 11 Express 入门中的“用户帐户、角色和权限配置文件”)。

在 Oracle Solaris 11 Express 中更新软件

请迅速回答,Oracle Solaris 10 中包含 Apache 2.0 用户组件的 SVR4 程序包的名称是什么?答案是 SUNWapch2u,当您搜索要添加的正确软件包时,这绝不是一个直观的名称。

因此,Oracle 工程师决定在 Oracle Solaris 11 Express 中构建一种经过改进的、易于使用的软件包管理模型。该版本的关键设计目标包括简化软件安装和维护,并使这些过程更加可靠、更不易出错。全新的映像包管理系统 (IPS) 是简化软件管理的重要基础。

IPS 囊括完整的软件生命周期:安装、更新和错误修复、重要升级以及软件删除。软件更新将载入定义良好的完整软件包集合,以进行特性升级和/或错误修复。在之前的 Solaris 版本中,补丁对发行版中的各种组件和库进行更新,您往往无法确定补丁与补丁之间是否存在干扰。相比之下,Oracle Solaris 11 Express 中无需打补丁,因此也无需通过补丁分析来预测特定的补丁会对其他软件组件产生怎样的影响。Oracle Solaris 11 Express 程序包在发布之前经过集成测试,消除了与更新操作系统软件相关的大多数风险。

从何处获取更新?

IPS 接口首先检查当前已安装程序包的更新,然后通过网络检索更新。默认情况下,接口将检查以下位置的信息库目录:

  • pkg.oracle.com/solaris/release 中的默认安装信息库。
  • My Oracle Support 中的支持信息库。本信息库仅限持有 Oracle Solaris 11 Express 支持合同的用户使用,其中包含提供了最新错误修复的程序包。因此,必须为生产部署购买支持合同。有关如何访问此信息库中程序包的更多信息,请参见文章“支持信息库说明 [ID 1021281.1]”(需要登录)。

管理员可以在本地镜像信息库,可选择添加应用软件包。(有关如何设置本地信息库的说明,请参见如何复制 Oracle Solaris 11 Express 软件包信息库或 Brian Leonard 的本地信息库镜像博文。)

如何启动软件更新?

为了搜索和安装更新,Oracle Solaris 11 Express 同时提供了命令行界面 pkg(1) 和图形用户界面 Package Manager 及 Update Manager。

pkg update 命令可更新当前已安装的程序包,/usr/lib/pm-launch packagemanager --update-all 命令可启动 Package Manager GUI 来执行完整更新。在这两种情况下,最基本的操作系统环境都保持不变,仅更新此前安装的程序包和“粘滞的”程序包。(“sticky”属性指向特定的发布者,也就是说,此前通过该发布者安装的程序包无法通过另一个发布者更新,从而防止恶意程序包取而代之。)

下表列出了部分常用的 pkg 命令和对等的 SVR4 命令。

任务 IPS 命令 SVR4 包管理命令

安装程序包

pkg install pkgadd -a

更新当前映像中已安装的程序包

pkg update

显示程序包状态和版本信息

pkg list pkginfo

验证程序包安装

pkg verify pkgchk -v

显示程序包信息,如许可

pkg info pkginfo -l

显示程序包的内容

pkg contents pkgchk -l

搜索程序包

pkg search pkgchk -l -p

注意,Oracle Solaris 11 Express 包括“package/SVR4”工具,因此,您仍然可以安装以 SVR4 格式分发的应用程序。下面给出了其他一些有用的 pkg 命令:

  • 在远程目录中查找与模式匹配的程序包:

# pkg search -r gcc

  • 使用远程目录列举特定程序包的内容:

# pkg contents -r gcc-3

  • 在无需实际安装的前提下预览安装:

# pkg install -nv gcc-3

  • 更新并自动接受许可协议(如果存在):

# pkg update --accept

如何验证程序包已成功安装或更新?

使用 -v (verbose) 参数安装或更新程序包可提供操作成功或失败的反馈。此外,pkg verify 命令还可验证当前映像中安装的程序包:

  # pkg verify -v gcc-3       
  Verifying: PACKAGE                                      STATUS
  pkg://solaris/developer/gcc-3                           OK 

Oracle Solaris 11 Express 中更新程序包的“最佳实践”是什么?

在 Oracle Solaris 10 中,Live Upgrade 可充当管理安全网,如果出现错误,它将允许您回滚到之前保存的操作系统环境。类似地,Oracle Solaris 11 Express 可通过其支持引导环境 (BE) 克隆的内置快照功能利用底层 ZFS 文件系统。

Oracle Solaris 11 Express 的最佳实践:
始终在软件更改之前生成新 BE。

创建 BE 可保留当前软件状态,如果更新后出现问题,您可以恢复至此状态。在某些情况下,例如完全更新时,IPS 将自动创建新 BE,而在其他情况下,您必须显式创建 BE。
考虑这样一个例子,假设您已经下载了 Oracle Solaris 11 Express 文本安装映像、刻录了一张 DVD 并将其安装到 x86 计算机上。随后,由于您的系统实际上是桌面,而非无头服务器,因此您希望运行 GNOME 桌面管理器 (gdm)。

以下命令将创建一个名为 SLIM 的新的非活动 BE,随后挂载 SLIM,并将 slim_install 程序包组(包含 gdm)安装到这个非活动的、挂载的 BE 中。

  # beadm create SLIM
  # beadm mount SLIM /tmp/a
  # pkg -R /tmp/a install slim_install

下一条命令将删除 slim_install 的组依赖性,从而可以独立处理该组中的程序包:

  # pkg -R /tmp/a uninstall slim_install

以下命令更新引导存档和 GRUB,然后卸载 SLIM BE(由于安装已经完成):

  # bootadm update-archive -R /tmp/a
  # beadm unmount SLIM

下一步是在 menu.lst 中将 SLIM 设置为默认 BE,为引导而激活新 BE。beadm list 命令显示 BE 状态。在以下输出中,BE solaris 现在正在运行 (N),SLIM 将在下次重新引导 (R) 后成为活动 BE:

  # beadm activate SLIM
  # beadm list 
    BE      Active Mountpoint Space Policy Created         
    --      ------ ---------- ----- ------ -------         
    SLIM    R      -          4.57G static 2011-02-17 15:06 
    solaris N      /          2.89M static 2011-02-10 09:47

最后,通过重新引导来启动 SLIM BE,在重新引导之后,您就可以启用 GNOME 桌面管理 (gdm) 服务:

  # reboot  
  # svcadm enable gdm; exit

相同的基本过程几乎可用于所有软件更新或程序包安装:创建 BE、挂载该 BE、修改挂载的映像、激活映像,然后重新引导。

在需要恢复到之前的 BE 时应该怎样做?

要进行回滚,请先激活之前的 BE,随后重新引导。举例来说,以下命令将在重新引导时将 solaris 设置为活动 BE,然后列出 BE:

  # beadm activate solaris
  # beadm list
    BE      Active Mountpoint Space Policy Created         
    --      ------ ---------- ----- ------ -------         
    SLIM    N      -          4.57G static 2011-02-17 15:06
    solaris R      /          2.89M static 2011-02-10 09:47
  # reboot      

BE 实际上就是 ZFS 快照。由于快照可共享磁盘空间,因此克隆的非活动 BE 最初不会占用 ZFS 池中任何额外的空间。当活动的或挂载的 BE 中的数据发生更改时,由于数据引用变为唯一,因此它将开始占用空间。

软件更新会对区域产生怎样的影响?

目前,当您更新作为全局区域的 BE 时,非全局区域不会自动更新。在重新引导之后,必须手动更新非全局区域,使之与全局区域保持同步。(后续文章将讨论这方面的内容;也可以参阅系统管理指南:Oracle Solaris 区域、Oracle Solaris 10 Containers 和资源管理。)

总结

定期更新操作系统是一种很好的理念,因为这能提供最新的程序包修复和操作系统特性,从而将稳定性和安全性提升至最高水平。一种思路是将操作系统软件更新安排为与每个季度发布的 Oracle 重要补丁更新保持一致。

Oracle Enterprise Manager Ops Center 目前尚不支持 Oracle Solaris 11 Express,但在提供该支持后,它将成为管理操作系统、固件、虚拟机、存储和网络结构的有效工具 — 在单一集成化控制台内执行所有这些管理工作。

总而言之,Oracle Solaris 11 Express 利用 ZFS 的基本功能打造了一种安全的软件更新方法。正如 Oracle Solaris 10 中的 Live Upgrade 实现了安全升级一样,Oracle Solaris 11 Express 中的 BE 也可以使您恢复到之前的软件状态。

有必要再次强调:最佳实践就是始终在作出软件更改之前创建新 BE

修订版 1.0,2011 年 4 月 28 日