系统管理指南:基本管理

第 23 章 使用 patchadd 命令管理修补程序(任务)

修补程序管理包括将修补程序和软件更新应用到系统中。修补程序管理还可能包括删除不需要或错误的修补程序。删除修补程序也称为回退修补程序。

本章提供有关如何使用 patchadd 命令管理修补程序的逐步说明。有关其他信息,请参见 patchadd(1M) 手册页。

以下列出本章所介绍的信息:

修补程序类型

修补程序是对 Oracle Solaris OS 或其他支持的软件中的已知或潜在的问题的修复的集合。修补程序还可提供新功能或对特定软件发行版的增强功能。修补程序由替换或更新现有文件和目录的文件和目录组成。大多数修补程序是以一系列稀疏软件包的形式提供的。有关软件包的详细信息,请参见第 20 章

软件更新是应用到软件的更改,用来更正现有的问题或引进功能。更新也是对系统应用软件更新的过程。

在 Oracle Solaris 系统中,可使用 patchadd 命令来管理修补程序。

已签名和未签名的修补程序

已签名的修补程序是应用了数字签名的修补程序。如果修补程序的数字签名经过了检验,则该修补程序在应用了签名之后不会进行修改。在将已签名的修补程序下载到系统之后,将检验该修补程序的数字签名。

自 2.6 发行版起,Oracle Solaris 的修补程序有已签名的修补程序和未签名的修补程序可用。未签名的修补程序不具有数字签名。


注 –

使用 patchadd 命令添加和删除签名的修补程序,包括使用 keytool 实用程序获取和应用可信证书。本章未详细描述在此 Oracle Solaris 发行版中使用 keytool 实用程序的相关过程。有关使用 keytool 实用程序导入和导出可信证书的完整说明,请转至 http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/tooldocs/solaris/keytool.html


有关使用 patchadd 命令将修补程序应用到系统的信息,请参见 使用 patchadd 命令管理修补程序(任务图)

有关签名修补程序的其他概述信息,请参见已签名的软件包、修补程序和软件更新

访问 Oracle Solaris 修补程序

可从 http://sunsolve.sun.com 站点获取修补程序。要从 SunSolve Patch Portal 站点访问修补程序,您的系统必须连接到 Internet 并能够运行 Web 浏览器,如 Mozilla 浏览器。

您可以从修补程序簇访问一个或一组修补程序,也可以查阅修补程序报告。

每个修补程序都与一个包含其相关信息的自述文件关联。

补丁编号

修补程序是通过唯一的修补程序 ID 来标识的。修补程序 ID 是一个字母数字字符串,由修补程序主版本号和表示修补程序修订版本号的数字组成,二者之间用连字符连接。例如,修补程序 118833-10 是 SunOS 5.10 内核更新修补程序第 10 次修订版的修补程序 ID。

管理 Oracle Solaris 修补程序

本节说明如何使用可用的修补程序工具来管理 Oracle Solaris 修补程序。

修补程序工具可执行以下操作:

在应用修补程序时,patchadd 命令会在 /var/sadm/patch/patch-id/log 文件中记录相应的信息。


注 –

已改进 patchadd - M 命令。在使用此命令向系统应用修补程序时,不再需要按数值顺序指定修补程序 ID。如果在使用 patchadd -M 命令时未指定修补程序 ID,则该目录中的所有修补程序都将安装到系统上。有关这些更改的更多信息,请参见 patchadd(1M) 手册页。


在以下情况下,不能对修补程序或软件更新应用 patchadd 命令:

在 Oracle Solaris 操作系统中管理修补程序

使用以下信息来标识管理修补程序的任务。每个任务指向其他任务。

任务 

说明 

参考 

确定是应用已签名的修补程序还是应用未签名的修补程序。 

确定应当向您的环境应用已签名的修补程序还是未签名的修补程序。 

确定要向系统应用已签名的修补程序还是未签名的修补程序

向系统应用修补程序。 

在 Solaris 2.6、Solaris 7、Solaris 8、Solaris 9 或 Oracle Solaris 10 系统中使用 patchadd 命令来应用未签名的修补程序。

使用 patchadd 命令管理修补程序(任务图)

确定要向系统应用已签名的修补程序还是未签名的修补程序

在确定要向系统应用已签名的修补程序还是未签名的修补程序时,关键因素在于您是否信任修补程序源。

如果您信任修补程序源(例如,修补程序 CD 来自已知的发行人,或者 HTTPS 连接到可信的站点),则可以使用未签名的修补程序。但是,如果您不信任修补程序源,请使用已签名的修补程序。

如果不确定是否信任修补程序源,请使用已签名的修补程序。

导入和导出可信的证书到您的软件包密钥存储区

要使用 patchadd 命令将 已签名的修补程序 应用于系统,必须至少添加 Oracle 的根 CA 证书,以检验已签名修补程序的签名。可以将该证书从 Java 密钥库导入到软件包密钥库中。

有关导入和导出可信证书的说明,请转至 http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/tooldocs/solaris/keytool.html

修补程序管理术语和定义

以下术语用于涉及到修补程序管理的所有章中。

apply(应用)

将修补程序安装到系统上。

back out(回退)

删除系统上的修补程序。

backout data(回退数据)

应用修补程序时创建的数据,以便在删除(回退)修补程序之后使系统恢复到其以前状态。

backout directory(回退目录)

用来存储回退数据的目录。缺省情况下,这是由修补程序安装的每个软件包的 save 目录。

dependency(相关性)

请参见修补程序相关性

digital signature(数字签名)

电子签名,可用来确保文档自应用签名以来尚未进行修改。

download

将一个或多个修补程序从修补程序源(如 Sun 修补程序服务器)复制到要应用修补程序的系统。

download directory(下载目录)

用来存储从修补程序源下载的修补程序的目录。这也是从中应用修补程序的目录。缺省位置是 /var/sadm/spool

keystore(密钥库)

在尝试应用已签名的修补程序时,要对其进行查询的证书和密钥的系统信息库。

nonstandard patch(非标准修补程序)

不能使用 patchadd 命令安装非标准修补程序。非标准修补程序通常用于提供不以软件包形式提供的固件或软件应用程序修复,必须使用该修补程序自述文件中指定的说明进行安装。

order(顺序)

按照适合应用修补程序的顺序对一组修补程序进行排序。

软件包

在系统上安装的软件产品的提供形式。软件包中包含一系列具有所定义格式的文件和目录。

patch(修补程序)

对软件进行的更新,目的在于更正现有问题或引进新功能。

patch analysis(修补程序分析)

用来检查系统以确定哪些修补程序适于系统的一种方法。

patch dependency(修补程序相关性)

一个实例,其中一个修补程序依赖于另一个修补程序是否存在于系统上。对于依赖一个或多个修补程序的修补程序,只能将其应用到已经应用那些所依赖修补程序的系统。

patch ID(修补程序 ID)

一个唯一的字母数字字符串,以修补程序主版本号开头,中间是连字符,最后是代表修补程序修订版本号的数字。

patch incompatibility(修补程序不兼容性)

很少会出现两个修补程序不能存在于同一个系统上的情况。该关系中的每个修补程序都与另一个修补程序不兼容。如果希望在已经应用了某个修补程序的系统上应用与该修补程序不兼容的修补程序,则必须首先删除系统上已经应用的修补程序。然后,即可以应用新修补程序。

patch list(修补程序列表)

包含一系列修补程序的文件,每行有一个修补程序 ID。这样的列表可用来执行修补程序操作。该列表可基于对系统或用户输入的分析而生成。

修补程序列表中的每一行上都有两列。第一列是修补程序 ID,第二列是该修补程序的概述。

patch obsolescence(修补程序的废弃)

一个实例,其中一个修补程序会替换另一个修补程序,即使另一个修补程序尚未应用到系统中也是如此。可废弃一个或多个修补程序的修补程序会完全替换这些修补程序,并且不需要在应用替换修补程序之前应用废弃的修补程序。

patch server(修补程序服务器)

修补程序源,可以供系统用来执行修补程序分析并从中获取相应的修补程序。

signed patch(已签名的修补程序)

使用有效数字签名签署的修补程序。已签名的修补程序比未签名的修补程序提供的安全性要高。可在将修补程序应用到系统之前检验修补程序的数字签名。有效数字签名可确保自应用签名以来,已签名的修补程序尚未经过修改。已签名的修补程序存储在 Java 归档 (Java Archive, JAR) 格式文件中。

software update(软件更新)

应用于软件的更改,用于更正现有问题或引入新功能。

special handling(特殊处理)

其属性表明其必须在单用户模式下安装的修补程序。此外,要求在应用之后重新启动系统的修补程序被称为是具有特殊处理要求

standard patch(标准修补程序)

标准修补程序是指遵循 Oracle Solaris 修补程序规范并且使用 patchadd 命令安装的修补程序。请注意,不能使用 patchadd 命令安装非标准修补程序。

SunSolve Online(SunSolve 在线)

提供对修补程序、修补程序信息和修补程序簇的访问的修补程序门户站点。有关更多信息,请参见 http://sunsolve.sun.com

unsigned patch(未签名的修补程序)

未使用数字签名签署的修补程序。

web proxy(Web 代理)

用来将您的系统连接到 Internet 的系统。您的系统不能直接连接到 Internet,而必须使用 Web 代理来建立连接。

使用 patchadd 命令管理修补程序(任务图)

任务 

说明 

参考 

2. (可选)指定 Web 代理。 

如果系统位于具有 Web 代理的防火墙之后,则必须指定 Web 代理,以便从修补程序服务器中获取修补程序。 

如何指定 Web 代理

3. 下载并应用修补程序。 

可以使用 patchadd 命令将修补程序下载并应用到系统上。

如何下载和应用修补程序

4. (可选)显示有关已应用于系统的修补程序的信息。 

如需有关已应用于系统的修补程序的信息,请使用 patchaddshowrevpkgparam 命令。

如何显示有关修补程序的信息

5. (可选)将修补程序从系统中删除。 

如有必要,请使用 patchrm 命令将修补程序从系统中删除。

如何使用 patchrm 命令删除修补程序

Procedure如何指定 Web 代理

如果系统位于具有 Web 代理的防火墙之后,则必须指定 Web 代理,以便使用 patchadd应用修补程序。

  1. 成为超级用户或同等角色。

  2. 使用以下方法之一指定 Web 代理:

    • 使用 http_proxyHTTPPROXYHTTPPROXYPORT 环境变量指定 Web 代理。

      例如:


      # setenv http_proxy http://mycache.domain:8080
      

      或者指定以下内容之一:


      # setenv HTTPPROXY mycache.domain
      # setenv HTTPPROXYPORT 8080
      
    • patchadd 命令行上指定 Web 代理。

      例如:


      # patchadd -x mycache.domain:8080 \
      -M http://www.sun.com/solaris/patches/latest 101223-02 102323-02
      

对使用 patchadd -R 创建备用 root 路径的限制

在运行不支持区域的 Oracle Solaris 发行版的系统中,使用 patchadd 命令(或接受 -R 选项的任何命令)来为已安装非全局区域的全局区域指定备用 root 路径将不奏效。

如果备用根环境配置了的非全局区域,但没有已安装的非全局区域,可使用 -R 选项来添加和删除软件包和修补程序。

为避免潜在的问题,应限制 -R 选项在创建备用根路径中的使用。

如果运行的是 Oracle Solaris 10,也可以选择以下方法之一:

有关更多信息,请参见 patchadd(1M)patchrm(1M)pkgadd(1M)pkgrm(1M) 手册页。

Procedure如何下载和应用修补程序

使用此过程下载未签名的 Solaris 修补程序,然后将其应用到系统。

如果要应用已签名的修补程序,必须首先设置软件包密钥库。有关更多信息,请转至 http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/tooldocs/solaris/keytool.html

  1. 通过以下方法之一获取对系统的访问权限:

    • 登录要向其应用修补程序的系统。

    • 下载修补程序并使用 ftp 命令将该修补程序复制到目标系统。

  2. 启动 Web 浏览器并转至位于 http://sunsolve.Sun.COM 上的 SunSolve 在线修补程序门户。

  3. 确定是要下载特定的修补程序还是要下载修补程序簇,然后执行以下操作之一:

    • 在 "Find Patch" 搜索字段中键入修补程序编号 (patch-id),然后单击 "Find Patch"。

      输入 patch-id 即可下载最新的修补程序修订版。

      如果此修补程序可免费使用,则会出现其自述文件。如果此修补程序不能免费使用,则会出现一则 ACCESS DENIED 消息。

      请注意,基于 SPARC 的系统和基于 x86 的系统的修补程序编号是不同的。修补程序自述文件中列出了修补程序 ID。请确保应用与您的系统体系结构相匹配的修补程序。

    • 选择与要修补的系统上所运行的 Oracle Solaris 发行版相匹配的建议的修补程序簇。

  4. 按照以下说明下载该修补程序:

    • 要下载已签名的修补程序的副本,请单击 "Download Signed Patch (n bytes)" 按钮。

    • 要下载未签名的修补程序,请单击 "Download Patch (n bytes)" 按钮。

    当修补程序成功下载之后,关闭 Web 浏览器。

  5. 转到包含已下载修补程序的目录。

  6. 成为超级用户或同等角色。

  7. 未签名的修补程序)如果下载的是未签名的修补程序,请解压缩该修补程序。


    # unzip patch-id
    
  8. 应用已签名或未签名的修补程序。

    例如:


    # patchadd /tmp/111879-01
    
    • 如果下载的是已签名的修补程序,请应用它。

      例如:


      # patchadd /tmp/111879-01.jar
      
    • 如果下载的是未签名的修补程序,请应用它。

      例如:


      # patchadd /tmp/111879-01
      
  9. 检验修补程序是否已成功应用。

    例如:


    # patchadd -p | grep 111879
    Patch: 111879-01 Obsoletes:  Requires:  Incompatibles:  Packages: SUNWwsr

Procedure如何显示有关修补程序的信息

在应用修补程序之前,您可能希望了解有关以前已应用的修补程序的更多信息。

以下命令提供了有关已应用于系统的修补程序的有用信息。

  1. 使用以下 patchadd 命令行之一显示有关已应用于系统的修补程序的信息。

    • 要获取有关已应用于系统的所有修补程序的信息,请键入以下命令:


      $ patchadd -p
      
    • 要检验是否已经将特定的修补程序应用于系统,请键入如下的命令:


      $ patchadd -p | grep 111879
      

Procedure如何使用 patchrm 命令删除修补程序

  1. 成为超级用户。

  2. 删除修补程序。


    # patchrm 111879-01
    Checking installed patches...
    
    Backing out patch 111879-01...
    
    Patch 111879-01 has been backed out.
  3. 检验修补程序是否已删除。


    # patchadd -p | grep 111879
    #