系统管理指南:基本管理

第 20 章 管理软件(概述)

软件管理包括在独立系统、服务器及其客户机上添加和删除软件。本章介绍各种可用于安装和管理软件的工具。

本章既不介绍在新系统上安装 Oracle Solaris 操作系统 (Solaris OS),也不介绍安装或升级至新版本的 Oracle Solaris OS。有关安装或升级 Oracle Solaris OS 的信息,请参见《Oracle Solaris 10 9/10 安装指南:基本安装》

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

有关管理软件的逐步说明,请参见第 21 章第 22 章

有关在已安装 Oracle Solaris 区域的系统上管理软件的信息,请参见 《系统管理指南:Oracle Solaris Containers-资源管理和 Oracle Solaris Zones》中的第 26  章 “在安装了区域的 Solaris 系统上添加和删除软件包和修补程序(任务)”

Oracle Solaris 操作系统中的新增功能

本节介绍此 Oracle Solaris 发行版中新增的软件管理功能。

有关新增功能的完整列表以及 Oracle Solaris 发行版的说明,请参见《Oracle Solaris 10 9/10 新增功能》

Oracle Solaris 自动注册

Oracle Solaris 10 9/10:自动注册是一项内置机制,用于收集配置数据并自动通过 Oracle 产品注册系统注册以达到管理系统产品清单和支持的目的。特权系统管理员可使用 regadm 命令,独立于安装或升级过程管理自动注册功能和直接注册系统。

有关更多信息,请参见第 17 章

用于支持 Oracle Solaris 区域的软件包和修补工具增强功能

Oracle Solaris 10 10/09:从此发行版开始,软件包和修补工具的功能已得到如下增强,可支持安装了多个非全局区域的系统:

有关在区域环境中支持使用软件包和修补工具的上述增强功能和其他增强功能的详细信息,请参见以下文档:

延迟激活修补

修补工具已进行了更改,可以处理较大的修补程序。从修补程序 119254-42 和 119255-42 开始,已对修补程序安装命令 patchaddpatchrm 进行了修改,以更改某些提供新功能的修补程序的处理方式。此修改会影响这些修补程序在任何 Oracle Solaris OS 上的安装。这些延迟激活修补程序能够更好地处理功能修补程序中提供的大范围更改。

有关更多详细信息,请参见 http://www.sun.com/bigadmin/sundocs/articles/patch-wn.jsp

Oracle Solaris OS 中包含的 Common Agent Container

Common Agent Container 是一个独立的 Java 程序,可为 Java 管理应用程序提供容器。此程序提供了一个为基于 Java 管理扩展 (Java Management Extension, JMX) 和 Java 动态管理工具包 (Java Dynamic Management Kit, Java DMK) 的管理功能设计的管理基础结构。此软件由 SUNWcacaort 软件包安装,它驻留在 /usr/lib/cacao 目录中。

通常,容器是不可见的。

但在以下两种情况下,您可能需要与容器守护进程交互:

有关如何解决这些问题的信息,请参见 《系统管理指南:高级管理》中的“Oracle Solaris OS 中 Common Agent Container 问题的疑难解答”

patchadd -M 命令处理多个修补程序的方式的改进

Oracle Solaris 10:从此发行版开始,改进了patchadd -M 命令的功能,可以更有效、更快速地处理多个修补程序和各修补程序之间的任何相关性。因此,在使用 patchadd 命令时,不必再按照数值顺序指定修补程序 ID。

请注意,如果在使用 patchadd -M 命令时没有指定修补程序 ID,该目录中的所有修补程序都将自动安装到系统上。要安装特定的修补程序,在使用 patchadd -M 命令时必须指定修补程序 ID。

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

软件包和修补程序工具增强功能

Oracle Solaris 10:Oracle Solaris 10 中的软件包和修补程序工具已得到增强:性能更高,功能更广。

其中包括对 pkgchk 命令的增强,该命令现在提供一个新的选项,可帮助您将文件映射到软件包。要将文件映射到软件包,请使用 pkgchk -P 选项来替代 grep pattern/var/sadm/install/contents-P 选项允许您使用部分路径。将该选项与 -l 选项一起使用,可以列出包含部分路径的所有文件的信息。有关更多信息,请参见如何检查已安装对象的完整性 ( pkgchk -p, pkgchk -P)pkgchk(1M) 手册页。

软件管理任务所在的位置

使用下表可以查找用于管理软件的逐步说明。

软件管理主题 

更多信息 

安装 Oracle Solaris 10 

《Oracle Solaris 10 9/10 安装指南:基本安装》

安装完成后添加或删除软件包 

第 21 章第 22 章

安装完成后添加或删除 Solaris 修补程序 

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

对软件包问题进行故障排除 

《系统管理指南:高级管理》中的第 21  章 “软件包问题疑难解答(任务)”

软件包概述

软件管理涉及到安装或删除软件产品。Sun 及其第三方 ISV 以一个或多个软件包的集合的形式提供软件。

打包一词通常是指在将软件产品分发和安装到将使用它们的系统上时所使用的方法。软件包中包含一组具有所定义格式的文件和目录。该格式符合应用程序二进制接口 (application binary interface, ABI),ABI 是对系统 V 接口定义的补充。Solaris OS 提供了一组可解释此格式的实用程序,并提供了用来安装软件包、删除软件包或校验软件包安装情况的方法。

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

稀疏软件包仅包含自此软件包初次作为 Solaris 分发中的一部分提供以后有更改的对象。与作为完整的软件包重新分发来提供软件更新相比,稀疏软件包中存储的修补程序较小。提供稀疏软件包还可使对用户环境的更改降到最小。有关修补程序的更多信息,请参见 在 Oracle Solaris 操作系统中管理修补程序

已签名的软件包、修补程序和软件更新

软件包可以包含数字签名。带有有效数字签名的软件包可确保在向软件包应用签名之后,未曾对该软件进行过修改。使用已签名的软件包是下载或添加软件包较为安全的方法,因为在将软件包添加到系统之前可以对数字签名进行检验。

对于已签名的修补程序同样如此。带有有效数字签名的修补程序可确保在向修补程序应用签名之后,未曾对该修补程序进行过修改。使用已签名的修补程序是下载或应用修补程序较为安全的方法,因为在将修补程序应用于系统之前可以对数字签名进行检验。

有关向系统应用已签名的修补程序的更多信息,请参见 使用 patchadd 命令管理修补程序(任务图)

有关创建已签名软件包的信息,请参见《应用程序包开发者指南》

除了数字签名,已签名的软件包与未签名的软件包完全相同。使用现有的 Solaris 打包工具可以安装、查询或删除软件包。带签名的软件包还与不带签名的软件包二进制兼容。

必须用受信任证书设置软件包密钥库,才能使用 pkgaddpatchadd 将带有数字签名的软件包或修补程序添加到系统中。这些证书用来识别软件包或修补程序的数字签名是否有效。

对软件包密钥存储区的访问由专门的口令保护,该口令由您在向系统的软件包密钥存储区导入 Oracle 证书时指定。

有关使用证书验证已签名的软件包和修补程序的说明,请转至 http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/tooldocs/solaris/keytool.html

下面介绍与已签名的软件包和修补程序相关的一般术语。

Keystore(密钥库)

根据需要查询的证书和密钥的系统信息库。

  • Java 密钥库-在缺省情况下随 Solaris 发行版安装的证书的系统信息库。Java 密钥库通常存储在 /usr/j2se/jre/lib/security 目录中。

  • 软件包密钥库-在将已签名的软件包和修补程序添加到系统时所导入证书的系统信息库。

    缺省情况下,软件包密钥库存储在 /var/sadm/security 目录中。

Trusted certificate(受信任证书)

用来存放属于另一个实体的公钥的证书。之所以这样命名受信任证书,是因为密钥库属主相信证书中的公钥确实属于由证书的主题或拥有者所标识的身份。证书的颁发者通过对证书进行签名来确保证书的真实性。

在检验签名时,或者在启动到安全 (SSL) 服务器的连接时,可以使用受信任证书。

User key(用户密钥)

用来存放敏感的加密密钥信息。加密密钥信息以受保护的格式存储,可防止进行未经授权的访问。用户密钥中既包含用户的私钥又包含与私钥相对应的公钥证书。

    使用 pkgaddpatchadd 命令向系统中添加已签名的软件包或修补程序的过程涉及到以下三个基本步骤:

  1. 通过使用 pkgadm 命令来将证书添加到系统的软件包密钥库中。

  2. (可选)通过使用 pkgadm 命令来列出证书。

  3. 通过使用 pkgadd 命令来添加软件包或者通过使用 patchadd 命令来应用修补程序。

有关使用 patchadd 命令向系统中应用已签名修补程序的逐步说明,请参见 使用 patchadd 命令管理修补程序(任务图)

用于管理软件包的工具

下表介绍了在系统上完成 Oracle Solaris 的安装后,用于从该系统添加和删除软件包的工具。

表 20–1 用于管理软件包的工具或命令

工具或命令  

说明 

手册页 

installer

启动用于从 Oracle Solaris 安装介质添加软件的安装程序(如 Oracle Solaris 安装程序 GUI)。安装程序要么位于本地,要么位于远程位置。 

installer(1M)

prodreg (GUI)

启动用于添加、删除或显示软件产品信息的安装程序。使用 Oracle Solaris 产品注册表删除或显示软件产品的有关信息,这些软件产品最初通过使用 Oracle Solaris 安装程序 GUI 或 pkgadd 命令安装。

prodreg(1M)

Oracle Solaris 产品注册表 prodreg 查看器 (CLI)

使用 prodreg 命令删除或显示软件产品的有关信息,这些软件产品最初通过使用 Oracle Solaris 安装程序 GUI 或 pkgadd 命令安装。

prodreg(1M)

pkgadd

 

安装软件包。 

pkgadd(1M)

pkgchk

检查软件包的安装情况。 

pkgchk(1M)

pkginfo

列出软件包信息。 

pkginfo(1)

pkgparam

 

显示软件包的参数值。 

pkgparam(1)

pkgrm

删除软件包。 

pkgrm(1M)

pkgtrans

将可安装的软件包从一种格式转换为另一种格式。-g 选项指示 pkgtrans 命令在所得到的数据流中生成和存储签名。

pkgtrans(1)

有关这些命令的更多信息,请参见第 21 章第 22 章

添加或删除软件包 (pkgadd)

表 20–1 中列出的所有软件管理工具可用于添加、删除或查询有关已安装软件的信息。通过“Solaris 产品注册”prodreg 查看器和 Solaris 安装程序 GUI 均能访问存储在“Solaris 产品注册”中的安装数据。使用软件包工具(如 pkgaddpkgrm 命令)也可以访问或修改安装数据。

添加软件包时,pkgadd 命令会将安装介质中的文件解压缩并复制到系统的本地磁盘上。删除软件包时,pkgrm 命令会删除与该软件包相关的所有文件,除非其他软件包在共享这些文件。

软件包文件采用包的形式传送,并且在传送过程中不可用。pkgadd 命令解释软件包的控制文件,然后将产品文件解压缩并安装到系统的本地磁盘上。

尽管 pkgaddpkgrm 命令不会将其输出记录到标准位置,但确实会跟踪已安装或删除的软件包。pkgaddpkgrm 命令在软件产品数据库中存储有关已安装或已删除软件包的信息。

通过更新该数据库,pkgaddpkgrm 命令将记录系统中已安装的所有软件产品。

软件包的添加要点 (pkgadd)

在系统上安装或删除软件包时,请牢记以下要点:

删除软件包的原则 (pkgrm)

尽管您可能试图使用 rm 命令来删除软件包,但是您应当使用 表 20–1 中列出的工具之一。例如,可以使用 rm 命令来删除二进制可执行文件。但是,这与使用 pkgrm 命令来删除包括该二进制可执行文件的软件包不同。如果使用 rm 命令来删除软件包的文件,则会破坏软件产品数据库。如果确实需要删除某个文件,可以使用 removef 命令。此命令将能够正确更新软件产品数据库,以便该文件不再属于软件包。有关更多信息,请参见 removef(1M) 手册页。

如果要保留软件包的多个版本,请使用 pkgadd 命令将新版本安装到与已安装的软件包不同的目录中。例如,如果要保留文档处理应用程序的多个版本。安装有软件包的目录称为基目录。可以通过在名为管理文件的特殊文件中设置 basedir 关键字来处理基目录。有关使用管理文件和设置基目录的更多信息,请参见在添加软件包时避免用户交互 (pkgadd)admin(4) 手册页。


注 –

如果在安装 Solaris 软件时使用升级选项,则 Solaris 安装软件会检查软件产品数据库,以确定已在系统上安装的产品。


对添加和删除不支持区域的软件包及 Solaris 发行版修补程序的限制

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

这些命令包括:

请参见 pkgadd(1M)pkgrm(1M)patchadd(1M)patchrm(1M) 手册页。

有关其他信息,请参见对使用 patchadd -R 创建备用 root 路径的限制

在添加软件包时避免用户交互 (pkgadd)

本节提供有关在用 pkgadd 命令添加软件包时避免用户交互的信息。

使用管理文件

在使用 pkgadd -a 命令时,该命令会在一个特殊的管理文件中查找有关如何继续安装的信息。通常,pkgadd 命令会执行几项检查,并在实际添加指定软件包之前提示用户进行确认。但是,您也可以创建一个管理文件,指示 pkgadd 命令应忽略这些检查并且无需用户确认即安装软件包。

缺省情况下,pkgadd 命令会在当前工作目录中查找管理文件。如果 pkgadd 命令在当前工作目录中未找到管理文件,便会在 /var/sadm/install/admin 目录中查找指定的管理文件。pkgadd 命令还接受管理文件的绝对路径。


注 –

明智地使用管理文件。在使用管理文件之前,为了避免执行这些检查并避免出现 pkgadd 命令通常提供的提示,您应当知道软件包文件的安装位置以及软件包安装脚本的运行方式。


以下示例显示了一个管理文件,该管理文件禁止 pkgadd 命令在安装软件包之前提示用户进行确认。


mail=
instance=overwrite
partial=nocheck
runlevel=nocheck
idepend=nocheck
rdepend=nocheck
space=nocheck
setuid=nocheck
conflict=nocheck
action=nocheck
networktimeout=60
networkretries=3
authentication=quit
keystore=/var/sadm/security
proxy=
basedir=default

管理文件可用来在添加软件包时避免用户交互,除此之外,它还有几种其他用途。例如,使用管理文件,可以在出错时退出软件包安装(无用户交互),或者避免在通过 pkgrm 命令删除软件包时进行用户交互。

还可以为软件包指定一个特殊的安装目录,当您希望在系统上维护同一个软件包的多个版本时,您可能需要这样做。为此,可通过使用 basedir 关键字来在管理文件中设置备用基目录。该关键字指定要将软件包安装到的位置。有关更多信息,请参见 admin(4) 手册页。

使用响应文件 (pkgadd)

响应文件中包含由交互式软件包询问的特定问题的答案。交互式软件包中有一个 request 脚本,该脚本会在安装软件包之前询问您几个问题,如是否应当安装软件包的可选部分。

如果在安装之前知道要安装的是交互式软件包,而且希望存储答案,以免在以后安装时进行用户交互,请使用 pkgask 命令保存您的答案。有关此命令的更多信息,请参见 pkgask(1M)

在存储了 request 脚本所询问问题的答案之后,可以使用 pkgadd -r 命令来安装软件包,而无需用户交互。