手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

pkgadd(1M)

名称

pkgadd - 将软件包传输到系统

用法概要

pkgadd [-nv] [-a admin] [-G] [-x proxy] 
     [ [-M] -R root_path] [-r response] [-k keystore] 
     [-P passwd] [-V fs_file] 
     [-d device | -d datastream pkginst | all] 
     [pkginst | -Y category [, category]...]
pkgadd -s [-d device | -d datastream pkginst | all] 
     [pkginst | -Y category [, category]...]

描述

pkgadd 传输分发介质或目录中的软件包的内容,以便将该软件包安装到系统上。未使用 –d device 源说明符时,pkgadd 将在缺省假脱机目录 (/var/spool/pkg) 中查找软件包。使用 –s 选项时,该命令会将软件包写入假脱机目录而不安装该软件包。

pkgadd 实用程序需要一定量的临时空间,其大小为要安装的软件包大小。pkgadd 通过检查是否存在 $TMPDIR 环境变量来确定要使用的临时目录。如果未定义 $TMPDIR,pkgadd 将使用 stdio.h 中的 P_tmpdirP_tmpdir 的缺省值为 /var/tmp/

某些非随附软件包和第三方软件包不再与 pkgadd 的最新版本完全兼容。这些软件包在整个安装过程中都需要用户交互而不只是在开始阶段需要这样做,或者需要以 root 用户身份运行其请求脚本。

要安装这些较早的软件包(在 Solaris 2.4 之前发行),请设置以下环境变量:NONABI_SCRIPTS=TRUE

只要设置了此环境变量,pkgadd 即允许在整个安装过程中进行键盘交互,并且软件包请求脚本以 root 用户身份运行。

如果您的软件包请求脚本要求以 root 用户(而不是 noaccess [缺省] 或 install 用户)身份运行,请在 admin(4) 文件中使用 rscript_alt 参数做出适当的选择。请参见 admin(4)

请注意,在 Solaris 8 和 Solaris 9 中,运行请求脚本的缺省用户为 rootnobody,具体取决于操作系统的修补程序级别。在当前发行版中,缺省用户为 noaccess

软件包命令可识别 largefile(5)。它们处理大于 2 GB 的文件的方法与处理较小文件的方法相同。在当前实现中,pkgaddpkgtrans(1) 和其他软件包命令可以处理最大为 4 GB 的数据流。

“用法概要”中显示的 –d–Ypkginst 参数将在“选项”后的“操作数”部分中介绍。

选项

受支持的选项如下所述。–d device 源说明符将在下文中的“操作数”部分介绍。

–a admin

定义安装管理文件 admin,该文件用来替代缺省的管理文件。标记 none 将覆盖使用的任何 admin 文件,因此将强制与用户进行交互。除非提供了全路径名,否则 pkgadd 将首先在当前工作目录中查找管理文件。如果当前工作目录中不存在指定的管理文件,pkgadd 将在 /var/sadm/install/admin 目录中查找该管理文件。

–G

此选项已过时。

–k keystore

验证软件包中发现的数字签名时,使用 keystore 作为获取可信证书颁发机构证书的位置。如果未指定密钥库,将在缺省的密钥库位置搜索有效的可信证书。有关更多信息,请参见“密钥库位置”

–M

指示 pkgadd 不使用 $root_path/etc/vfstab 文件来确定客户机的挂载点。此选项假设服务器上的挂载点正确,并且其行为方式与 Solaris 2.5 和早期发行版一致。

–n

以非交互模式进行安装。不输出已安装文件列表。缺省模式是交互模式。

–P passwd

该口令用于在需要时解密使用 –k 指定的密钥库。有关此选项参数格式的更多信息,请参见“传递密码短语参数”

–r response

标识包含之前的 pkgask(1M) 会话输出的文件或目录。在交互模式下,此文件可提供软件包请求的交互响应。response 必须是全路径名。

–R root_path

定义要用作 root_path 的目录的全路径名。所有文件,包括软件包系统信息文件,都重定位到指定的 root_path 下开始的目录树。从服务器安装到客户机时,可以指定 root_path(例如 /export/root/client1)。


注 - 不得使用 –R 选项引用任何非全局区域的根文件系统。否则,可能会损坏全局区域的文件系统,危及全局区域的安全性,或者损坏非全局区域的文件系统。请参见 zones(5)
–s spool

将软件包写入 spool 目录而不安装该软件包。

–v

跟踪 pkgadd 已执行的所有脚本(位于 pkginst/install 目录中)。此选项用于调试过程脚本和非过程脚本。

–V fs_file

指定备用 fs_file 以映射客户机的文件系统。例如,在 $root_path/etc/vfstab 文件不存在或不可靠的情况下使用。

–x proxy

指定下载软件包时要使用的 HTTP[S] 代理。代理的格式为 host:port,其中 host 是 HTTP[S] 代理的主机名,port 是与该代理关联的端口号。此切换项将覆盖用于指定代理的其他所有方法。有关指定缺省代理的其他方法的更多信息,请参见“环境变量”。

如果执行时未使用选项或操作数,pkgadd 将使用 /var/spool/pkg(缺省假脱机目录)。

操作数

支持下列操作数:

缺省情况下,pkgadd 搜索要安装或假脱机的软件包的实例时,会在 /var/spool/pkg 目录中进行查找。或者,可以使用以下方式指定要安装或假脱机的软件包实例的源:

–d device
–d datastream pkgname,... | all

安装或复制 device 中的软件包。device 可以是以下任一项:

  • 目录的全路径名或者磁带或可移除介质的标识符(例如 /var/tmp)。

  • pkgtrans 所创建的数据流(请参见 pkgtrans(1))。

  • 指向 pkgtrans 所创建的数据流的 URL。受支持的通用资源标识符 (Universal Resource Identifier, URI) 为 http:https:

上述 –d 说明符的第二种形式指示了在指定数据流时要使用的语法。在这种情况下,必须指定软件包名称的逗号分隔列表或关键字 all

实例

缺省情况下,pkgadd 搜索指定的源,并显示一个交互式菜单供用户选择要安装源上的哪个软件包实例。还可以选择使用以下方式指定要安装的软件包实例:

pkginst

要安装的软件包实例或实例列表。可使用标记 all 引用源介质上的所有可用软件包。可使用 pkginst.* 格式指示某个软件包的所有实例。

星号字符(*) 对于某些 shell 来说是特殊字符,可能需要转义。在 C-Shell 中,星号必须放在单引号 (') 中或者前面加上反斜杠 (\)。

–Y category[,category...]

基于存储在软件包的 pkginfo(4) 文件中的 CATEGORY 参数的值安装软件包。将选择源介质上 CATEGORY 与指定类别之一匹配的所有软件包进行安装或假脱机。

密钥库位置

密钥库位置

pkgadd 等软件包实用程序使用一组可信证书对软件包中发现的签名执行签名验证。如果软件包中未包含任何签名,将跳过签名验证。证书可以来自各种位置。如果指定了 –k keystore,且 keystore 是一个目录,则会假定 keystore 是要使用的证书的基目录。如果 keystore 是一个文件,则会假定该文件本身包含所有必需的密钥和证书。如果未指定 –k,将使用 /var/sadm/security 作为基目录。

在指定的基目录内,搜索的存储位置会因执行搜索的应用程序和要搜索的存储类型而有所不同。将按指定顺序搜索以下目录:

  1. <store_dir>/<app_name>/<store_type>

  2. <store_dir>/<store_type>

其中,<store_dir> 是由 –k 指定的目录,<app_name> 是执行搜索的应用程序的名称,<store_type>keystore(适用于私钥)、certstore(适用于不可信公钥证书)或 truststore(适用于可信证书颁发机构证书)之一。

例如,当使用 –k /export/certs 运行 pkgadd 时,将依次搜索以下位置来查找信任存储:

  1. /export/certs/pkgadd/truststore

  2. /export/certs/truststore

此搜索顺序允许管理员对大多数应用程序使用一个地址,而对特定的应用程序使用特殊的证书地址。

密钥库和证书格式

密钥库和证书格式

pkgtrans 等软件包管理实用程序需要对一组密钥和证书具有访问权限,以便签署软件包以及(可选)对软件包进行验证。

按照“密钥库位置”中指定的搜索模式找到的密钥库文件必须都是自包含的 PKCS#12 格式文件。

使用 pkgtrans 签署软件包时,如果 certstore 具有多个公钥证书,则每个公钥都必须具有 friendlyName 属性,以便在签署软件包时使用 –a 选项进行标识和选择。此外,使用 –a 选择的 certstore 中的公钥证书必须在密钥库中具有关联的私钥。

有多个浏览器和实用程序可用于导出证书和密钥以及将其导入 PKCS#12 密钥库中。例如,可以从 Mozilla 中导出可信证书,然后将该证书导入 PKCS#12 密钥库中以供 pkgadd 结合 OpenSSL Toolkit 使用。

传递密码短语参数

传递密码短语参数

pkgtranspkgadd 可接受口令参数,通常使用 –p 指定口令。允许从各种源获取口令。这两个选项都将采用单个参数,参数的格式如下所述。如果需要口令但未提供口令参数,系统将提示用户输入一个口令:通常在关闭回显的情况下从当前终端读取口令。

pass:password

实际口令为 password。由于该口令对于 ps 等实用程序可见,只应在安全性不是很重要的场合使用此形式。

env:var

从环境变量 var 中获取口令。由于其他进程的环境在特定平台上可见,应谨慎使用此选项。

file:pathname

pathname 中包含的第一行为口令。pathname 不需要引用常规文件,可以引用设备或指定管道等。例如,要从标准输入中读取口令,请使用 file:/dev/stdin

console

/dev/tty 中读取口令。

示例

示例 1 安装 Solaris DVD 中的软件包

以下示例将安装 Solaris DVD 中的软件包。系统将提示您提供要安装的软件包的名称。


example# pkgadd -d /cdrom/cdrom0/s0/Solaris_10/Product
示例 2 安装数据流中的一组软件包

下面所示的示例命令将安装由 –d 源说明符指定的数据流中的所有软件包。在执行此命令之前,必须已使用 pkgtrans(1) 命令创建了此数据流。

example# pkgadd -d /var/tmp/datastream all 

关键字 all 指明安装指定数据流中的所有软件包。

退出状态

0

成功完成

1

致命错误。

2

警告。

3

中断。

4

管理。

5

管理。需要进行交互。请勿使用 pkgadd –n

10

安装所有软件包后重新引导。

20

安装此软件包后重新引导。

环境变量

HTTPPROXY

指定 HTTP 代理主机。覆盖管理文件设置和 http_proxy 环境变量。

HTTPPROXYPORT

指定在联系 HTTPPROXY 所指定的主机时要使用的端口。如果未设置 HTTPPROXY,则忽略此项。

http_proxy

用于指定代理主机和端口的 URL 格式。覆盖管理文件设置。

文件

/var/sadm/install/logs/

pkgadd 记录软件安装实例的位置。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
package/svr4
接口稳定性
Committed(已确定)

另请参见

pkginfo(1)pkgmk(1)pkgparam(1)pkgproto(1)pkgtrans(1)installf(1M)pkgadm(1M)pkgask(1M)pkgchk(1M)pkgrm(1M)removef(1M)admin(4)pkginfo(4)attributes(5)largefile(5)zones(5)

在 Oracle Solaris 11.2 中使用映像包管理系统打包和交付软件

http://www.openssl.org

附注

将软件包传输到假脱机目录时,无法使用 –r–n–a 选项。

–r 选项可用于指示目录名称和文件名。目录可包含大量响应文件,每个文件都使用应与其关联的软件包的名称。例如,通过调用一次 pkgadd 来添加多个交互式软件包时可以使用目录。在这种情况下,每个软件包都需要一个响应文件。如果使用与软件包相同的名称创建了响应文件(例如 pkinst1pkinst2),请在 –r 后面指定这些文件所在的目录。

–n 选项会导致安装停止,可用于需要进行交互来完成安装的情况。

如果缺省的 admin 文件包含过多限制,则可能需要修改该管理文件以允许在安装软件包期间完全不进行交互。有关详细信息,请参见 admin(4)

如果使用 –d 指定软件包流,并在该流中发现了数字签名,则缺省行为是尝试验证发现的证书和签名。可使用 admin 文件设置覆盖此行为。有关更多信息,请参见 admin(4)