修补程序管理包括将修补程序和软件更新应用到系统中。修补程序管理还可能包括删除不需要或错误的修补程序。删除修补程序也称为回退修补程序。
本章提供有关如何使用 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 命令管理修补程序(任务图)。
有关签名修补程序的其他概述信息,请参见已签名的软件包、修补程序和软件更新。
可从 http://sunsolve.sun.com 站点获取修补程序。要从 SunSolve Patch Portal 站点访问修补程序,您的系统必须连接到 Internet 并能够运行 Web 浏览器,如 Mozilla 浏览器。
您可以从修补程序簇访问一个或一组修补程序,也可以查阅修补程序报告。
修补程序是通过唯一的修补程序 ID 来标识的。修补程序 ID 是一个字母数字字符串,由修补程序主版本号和表示修补程序修订版本号的数字组成,二者之间用连字符连接。例如,修补程序 118833-10 是 SunOS 5.10 内核更新修补程序第 10 次修订版的修补程序 ID。
本节说明如何使用可用的修补程序工具来管理 Oracle Solaris 修补程序。
修补程序工具可执行以下操作:
在应用修补程序时,patchadd 命令会在 /var/sadm/patch/patch-id/log 文件中记录相应的信息。
已改进 patchadd - M 命令。在使用此命令向系统应用修补程序时,不再需要按数值顺序指定修补程序 ID。如果在使用 patchadd -M 命令时未指定修补程序 ID,则该目录中的所有修补程序都将安装到系统上。有关这些更改的更多信息,请参见 patchadd(1M) 手册页。
在以下情况下,不能对修补程序或软件更新应用 patchadd 命令:
软件包未完全安装到系统上。
修补程序包的体系结构与系统的体系结构不同。
修补程序包的版本与所安装的修补程序的版本不一致。
已经应用了具有相同主版本号的修补程序或修订版本号更高的修补程序。
已经应用了废弃该修补程序的修补程序。
该修补程序与已经应用于该系统的某个修补程序不兼容。已经应用的每个修补程序都将该信息保存在其 pkginfo 文件中。
正在应用的修补程序取决于尚未应用的另一个修补程序。
使用以下信息来标识管理修补程序的任务。每个任务指向其他任务。
任务 |
说明 |
参考 |
---|---|---|
确定是应用已签名的修补程序还是应用未签名的修补程序。 |
确定应当向您的环境应用已签名的修补程序还是未签名的修补程序。 | |
向系统应用修补程序。 |
在 Solaris 2.6、Solaris 7、Solaris 8、Solaris 9 或 Oracle Solaris 10 系统中使用 patchadd 命令来应用未签名的修补程序。 |
在确定要向系统应用已签名的修补程序还是未签名的修补程序时,关键因素在于您是否信任修补程序源。
如果您信任修补程序源(例如,修补程序 CD 来自已知的发行人,或者 HTTPS 连接到可信的站点),则可以使用未签名的修补程序。但是,如果您不信任修补程序源,请使用已签名的修补程序。
如果不确定是否信任修补程序源,请使用已签名的修补程序。
要使用 patchadd 命令将 已签名的修补程序 应用于系统,必须至少添加 Oracle 的根 CA 证书,以检验已签名修补程序的签名。可以将该证书从 Java 密钥库导入到软件包密钥库中。
有关导入和导出可信证书的说明,请转至 http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/tooldocs/solaris/keytool.html。
以下术语用于涉及到修补程序管理的所有章中。
将修补程序安装到系统上。
删除系统上的修补程序。
应用修补程序时创建的数据,以便在删除(回退)修补程序之后使系统恢复到其以前状态。
用来存储回退数据的目录。缺省情况下,这是由修补程序安装的每个软件包的 save 目录。
请参见修补程序相关性。
电子签名,可用来确保文档自应用签名以来尚未进行修改。
将一个或多个修补程序从修补程序源(如 Sun 修补程序服务器)复制到要应用修补程序的系统。
用来存储从修补程序源下载的修补程序的目录。这也是从中应用修补程序的目录。缺省位置是 /var/sadm/spool。
在尝试应用已签名的修补程序时,要对其进行查询的证书和密钥的系统信息库。
不能使用 patchadd 命令安装非标准修补程序。非标准修补程序通常用于提供不以软件包形式提供的固件或软件应用程序修复,必须使用该修补程序自述文件中指定的说明进行安装。
按照适合应用修补程序的顺序对一组修补程序进行排序。
在系统上安装的软件产品的提供形式。软件包中包含一系列具有所定义格式的文件和目录。
对软件进行的更新,目的在于更正现有问题或引进新功能。
用来检查系统以确定哪些修补程序适于系统的一种方法。
一个实例,其中一个修补程序依赖于另一个修补程序是否存在于系统上。对于依赖一个或多个修补程序的修补程序,只能将其应用到已经应用那些所依赖修补程序的系统。
一个唯一的字母数字字符串,以修补程序主版本号开头,中间是连字符,最后是代表修补程序修订版本号的数字。
很少会出现两个修补程序不能存在于同一个系统上的情况。该关系中的每个修补程序都与另一个修补程序不兼容。如果希望在已经应用了某个修补程序的系统上应用与该修补程序不兼容的修补程序,则必须首先删除系统上已经应用的修补程序。然后,即可以应用新修补程序。
包含一系列修补程序的文件,每行有一个修补程序 ID。这样的列表可用来执行修补程序操作。该列表可基于对系统或用户输入的分析而生成。
修补程序列表中的每一行上都有两列。第一列是修补程序 ID,第二列是该修补程序的概述。
一个实例,其中一个修补程序会替换另一个修补程序,即使另一个修补程序尚未应用到系统中也是如此。可废弃一个或多个修补程序的修补程序会完全替换这些修补程序,并且不需要在应用替换修补程序之前应用废弃的修补程序。
修补程序源,可以供系统用来执行修补程序分析并从中获取相应的修补程序。
使用有效数字签名签署的修补程序。已签名的修补程序比未签名的修补程序提供的安全性要高。可在将修补程序应用到系统之前检验修补程序的数字签名。有效数字签名可确保自应用签名以来,已签名的修补程序尚未经过修改。已签名的修补程序存储在 Java 归档 (Java Archive, JAR) 格式文件中。
应用于软件的更改,用于更正现有问题或引入新功能。
其属性表明其必须在单用户模式下安装的修补程序。此外,要求在应用之后重新启动系统的修补程序被称为是具有特殊处理要求。
标准修补程序是指遵循 Oracle Solaris 修补程序规范并且使用 patchadd 命令安装的修补程序。请注意,不能使用 patchadd 命令安装非标准修补程序。
提供对修补程序、修补程序信息和修补程序簇的访问的修补程序门户站点。有关更多信息,请参见 http://sunsolve.sun.com。
未使用数字签名签署的修补程序。
用来将您的系统连接到 Internet 的系统。您的系统不能直接连接到 Internet,而必须使用 Web 代理来建立连接。
任务 |
说明 |
参考 |
---|---|---|
2. (可选)指定 Web 代理。 |
如果系统位于具有 Web 代理的防火墙之后,则必须指定 Web 代理,以便从修补程序服务器中获取修补程序。 | |
3. 下载并应用修补程序。 |
可以使用 patchadd 命令将修补程序下载并应用到系统上。 | |
4. (可选)显示有关已应用于系统的修补程序的信息。 |
如需有关已应用于系统的修补程序的信息,请使用 patchadd、showrev 或 pkgparam 命令。 | |
5. (可选)将修补程序从系统中删除。 |
如有必要,请使用 patchrm 命令将修补程序从系统中删除。 |
如果系统位于具有 Web 代理的防火墙之后,则必须指定 Web 代理,以便使用 patchadd 来应用修补程序。
成为超级用户或同等角色。
使用以下方法之一指定 Web 代理:
使用 http_proxy、HTTPPROXY 或 HTTPPROXYPORT 环境变量指定 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 |
在运行不支持区域的 Oracle Solaris 发行版的系统中,使用 patchadd 命令(或接受 -R 选项的任何命令)来为已安装非全局区域的全局区域指定备用 root 路径将不奏效。
如果备用根环境配置了的非全局区域,但没有已安装的非全局区域,可使用 -R 选项来添加和删除软件包和修补程序。
为避免潜在的问题,应限制 -R 选项在创建备用根路径中的使用。
如果运行的是 Oracle Solaris 10,也可以选择以下方法之一:
运行低于 Solaris 10 1/06 OS 版本的任何系统均需升级。
如果运行的是 Oracle Solaris 10 初始 3/05 发行版,可安装以下修补程序,以启用可接受 -R 选项以便创建备用根路径的命令。
对于基于 SPARC 的系统-最低安装为修补程序 119254 的 19 修订版。
对于基于 x86 的系统-最低安装为修补程序 119255 的 19 修订版。
引导备用根(例如 Oracle Solaris OS)作为活动 OS。然后,不使用 -R 选项便可安装和卸载软件包以及修补程序。
有关更多信息,请参见 patchadd(1M)、patchrm(1M)、pkgadd(1M) 和 pkgrm(1M) 手册页。
使用此过程下载未签名的 Solaris 修补程序,然后将其应用到系统。
如果要应用已签名的修补程序,必须首先设置软件包密钥库。有关更多信息,请转至 http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/tooldocs/solaris/keytool.html。
通过以下方法之一获取对系统的访问权限:
启动 Web 浏览器并转至位于 http://sunsolve.Sun.COM 上的 SunSolve 在线修补程序门户。
确定是要下载特定的修补程序还是要下载修补程序簇,然后执行以下操作之一:
在 "Find Patch" 搜索字段中键入修补程序编号 (patch-id),然后单击 "Find Patch"。
输入 patch-id 即可下载最新的修补程序修订版。
如果此修补程序可免费使用,则会出现其自述文件。如果此修补程序不能免费使用,则会出现一则 ACCESS DENIED 消息。
请注意,基于 SPARC 的系统和基于 x86 的系统的修补程序编号是不同的。修补程序自述文件中列出了修补程序 ID。请确保应用与您的系统体系结构相匹配的修补程序。
选择与要修补的系统上所运行的 Oracle Solaris 发行版相匹配的建议的修补程序簇。
按照以下说明下载该修补程序:
要下载已签名的修补程序的副本,请单击 "Download Signed Patch (n bytes)" 按钮。
要下载未签名的修补程序,请单击 "Download Patch (n bytes)" 按钮。
当修补程序成功下载之后,关闭 Web 浏览器。
转到包含已下载修补程序的目录。
成为超级用户或同等角色。
(未签名的修补程序)如果下载的是未签名的修补程序,请解压缩该修补程序。
# unzip patch-id |
应用已签名或未签名的修补程序。
例如:
# patchadd /tmp/111879-01 |
如果下载的是已签名的修补程序,请应用它。
例如:
# patchadd /tmp/111879-01.jar |
如果下载的是未签名的修补程序,请应用它。
例如:
# patchadd /tmp/111879-01 |
检验修补程序是否已成功应用。
例如:
# patchadd -p | grep 111879 Patch: 111879-01 Obsoletes: Requires: Incompatibles: Packages: SUNWwsr |
在应用修补程序之前,您可能希望了解有关以前已应用的修补程序的更多信息。
以下命令提供了有关已应用于系统的修补程序的有用信息。
patchadd -p 或 showrev -p
显示已应用于系统的所有修补程序。
pkgparam pkgid PATCHLIST
显示已应用于由 pkgid 所标识的软件包(例如,SUNWadmap)的所有修补程序。
patchadd -S Oracle Solaris-OS - p
显示已应用于 OS 服务器的所有 /usr 修补程序。
使用以下 patchadd 命令行之一显示有关已应用于系统的修补程序的信息。
要获取有关已应用于系统的所有修补程序的信息,请键入以下命令:
$ patchadd -p |
要检验是否已经将特定的修补程序应用于系统,请键入如下的命令:
$ patchadd -p | grep 111879 |