JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 管理:基本管理     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

关于本书

1.  Oracle Solaris 管理工具(任务列表)

2.  使用 Solaris Management Console(任务)

3.  使用 Oracle Java Web Console(任务)

4.  管理用户帐户和组(概述)

5.  管理用户帐户和组(任务)

6.  管理客户机/服务器支持(概述)

7.  管理无盘客户机(任务)

8.  关闭和引导系统简介

9.  关闭和引导系统(概述)

10.  关闭系统(任务)

11.  修改 Oracle Solaris 引导行为(任务)

12.  引导 Oracle Solaris 系统(任务)

13.  管理 Oracle Solaris 引导归档文件(任务)

14.  Oracle Solaris 系统引导的故障排除(任务)

15.  x86: 基于 GRUB 的引导(参考)

16.  x86: 引导未实现 GRUB 的系统(任务)

17.  使用 Oracle Configuration Manager

18.  管理服务(概述)

19.  管理服务(任务)

20.  管理软件(概述)

21.  使用 Oracle Solaris 系统管理工具管理软件(任务)

22.  使用 Oracle Solaris 软件包命令管理软件(任务)

使用软件包命令管理软件包(任务列表)

使用软件包命令管理软件包

如何添加软件包 (pkgadd)

将软件包添加到假脱机目录中

如何将软件包添加到假脱机目录中 (pkgadd)

如何列出有关所有已安装软件包的信息 (pkginfo)

如何检查已安装软件包的完整性 (pkgchk)

如何检查已安装对象的完整性 ( pkgchk -p, pkgchk -P)

删除软件包

如何删除软件包 (pkgrm)

列出软件包的依赖软件包

23.  管理修补程序

A.  SMF 服务

索引

使用软件包命令管理软件包

下列过程介绍如何使用软件包命令管理软件包。

如何添加软件包 (pkgadd)

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有特权的命令。有关角色的更多信息,请参见《System Administration Guide: Security Services》中的"Configuring RBAC (Task Map)"

  2. 删除与要添加的软件包同名的已安装软件包。

    该步骤可确保系统对于已添加和删除的软件保留正确的记录。有时,您可能希望在系统上维护同一应用程序的多个版本。有关维护多个软件副本的策略,请参见删除软件包的原则 (pkgrm)。有关任务的信息,请参见如何删除软件包 (pkgrm)

  3. 向系统中添加软件包。
    # pkgadd -a admin-file 
    -d device-name pkgid ...
    -a admin-file

    (可选)指定在安装期间应当由 pkgadd 命令检查的管理文件。有关使用管理文件的详细信息,请参见使用管理文件

    -d device-name

    指定软件包的绝对路径。device-name 可以是设备、目录或假脱机目录的路径。如果未指定软件包所在的路径, pkgadd 命令将检查缺省的假脱机目录 (/var/spool/pkg )。如果软件包不在缺省的假脱机目录中,软件包的安装将失败。

    pkgid

    (可选)一个或多个要安装的软件包的名称,用空格分隔。如果省略,pkgadd 命令会从指定的设备、目录或假脱机目录安装所有可用的软件包。

    如果 pkgadd 命令在软件包安装期间遇到问题,则会在该提示符后面显示一则与该问题有关的消息:

    Do you want to continue with this installation?

    可以回答 yesnoquit。如果指定了多个软件包,请键入 no 停止安装正在安装的软件包。pkgadd 命令会继续安装其他软件包。键入 quit 可停止安装。

  4. 检验软件包是否已成功安装。
    # pkgchk -v pkgid

    如果未出现错误,则会返回已安装文件的列表。否则,pkgchk 命令将报告错误。

示例 22-1 从已挂载 CD 添加软件包

以下示例说明如何从已挂载的 Oracle Solaris 10 CD 安装 SUNWpl5u 软件包。还说明如何检验软件包文件是否已正确安装。

# pkgadd -d /cdrom/cdrom0/Solaris_10/Product SUNWpl5u

    .
    .
    .
Installation of <SUNWpl5u> was successful.
# pkgchk -v SUNWpl5u
/usr
/usr/bin
/usr/bin/perl
/usr/perl5
/usr/perl5/5.8.4
.
.
.

此示例说明当运行的是 Solaris 10 10/08 发行版或更高版本时所要使用的路径。

# pkgadd -d /cdrom/cdrom0/s0/Solaris_10/Product SUNWpl5u

    .
    .
    .
Installation of <SUNWpl5u> was successful.
# pkgchk -v SUNWpl5u
/usr
/usr/bin
/usr/bin/perl
/usr/perl5
/usr/perl5/5.8.4
.
.
.

示例 22-2 从远程软件包服务器安装软件包

如果要安装的软件包位于远程系统上,则可以(以软件包格式)手动挂载包含该软件包的目录,并在本地系统上安装软件包。

以下示例说明如何从远程系统安装软件包。在本示例中,假设名为 package-server 的远程系统的 /latest-packages 目录中有软件包。mount 命令用来在 /mnt 上以本地方式挂载软件包。pkgadd 命令用来安装 SUNWpl5u 软件包。

# mount -F nfs -o ro package-server:/latest-packages /mnt
# pkgadd -d /mnt SUNWpl5u
    .
    .
    .
Installation of <SUNWpl5u> was successful.

如果站点上运行的是自动安装程序,则无需手动挂载远程软件包服务器,而会使用自动安装程序路径(在本示例中为 /net/package-server/latest-packages)作为 -d 选项的参数。

# pkgadd -d /net/package-server/latest-packages SUNWpl5u
    .
    .
    .
Installation of <SUNWpl5u> was successful.

示例 22-3 通过指定管理文件从远程软件包服务器安装软件包

以下示例与上面的示例相似,区别在于本示例使用 -a 选项并指定了一个名为 noask-pkgadd 的管理文件,在添加软件包时避免用户交互 (pkgadd)中对此进行了说明。在本示例中,假设 noask-pkgadd 管理文件位于缺省位置 (/var/sadm/install/admin)。

# pkgadd -a noask-pkgadd -d /net/package-server/latest-packages SUNWpl5u

    .
    .
    .
Installation of <SUNWpl5u> was successful.

示例 22-4 从 HTTP URL 安装软件包

以下示例说明如何使用 HTTP URL 作为设备名称来安装软件包。该 URL 必须指向流格式的软件包。

# pkgadd -d http://install/xf86-4.3.0-video.pkg

## Downloading...
..............25%..............50%..............75%..............100%
## Download Complete


The following packages are available:
  1  SUNWxf86r     XFree86 Driver Porting Kit (Root)
                   (i386) 4.3.0,REV=0.2003.02.28
  2  SUNWxf86u     XFree86 Driver Porting Kit (User)
                   (i386) 4.3.0,REV=0.2003.02.28

.
.
.

将软件包添加到假脱机目录中

为方便起见,可以将经常安装的软件包复制到假脱机目录中。如果将软件包复制到缺省的假脱机目录 (/var/spool/pkg) 中,那么,在使用 pkgadd 命令时无需指定软件包的源位置(-d device-name 参数)。缺省情况下,pkgadd 命令会检查在命令行上指定的软件包是否存在于 /var/spool/pkg 目录中。请注意,将软件包复制到假脱机目录中不同于在系统上安装软件包。

如何将软件包添加到假脱机目录中 (pkgadd)

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有特权的命令。有关角色的更多信息,请参见《System Administration Guide: Security Services》中的"Configuring RBAC (Task Map)"

  2. 删除与要添加的软件包同名的任何已假脱机的软件包。

    有关删除假脱机软件包的信息,请参见示例 22-16

  3. 将软件包添加到假脱机目录中。
    # pkgadd -d device-name 
    -s spooldir pkgid ...
    -d device-name

    指定软件包的绝对路径。device-name 可以是设备、目录或假脱机目录的路径。

    -s spooldir

    指定该软件包进行假脱机的假脱机目录名称。必须指定 spooldir

    pkgid

    (可选)要添加到假脱机目录中的一个或多个软件包的名称,用空格分隔。如果省略,pkgadd 命令将复制所有可用的软件包。

  4. 检验软件包是否已成功复制到假脱机目录中。
    $ pkginfo -d spooldir
    | grep pkgid

    如果 pkgid 已正确复制,pkginfo 命令将返回一行与 pkgid 相关的信息。否则,pkginfo 命令将返回系统提示符。

示例 22-5 从已挂载 CD 设置假脱机目录

以下示例说明如何将 SUNWman 软件包从基于 SPARC 的已挂载 Oracle Solaris 10 CD 传送到缺省的假脱机目录 (/var/spool/pkg)。

# pkgadd -d /cdrom/cdrom0/Solaris_10/Product -s /var/spool/pkg SUNWman

Transferring <SUNWman> package instance

示例 22-6 从远程软件包服务器设置假脱机目录

如果要复制的软件包位于远程系统上,则可以(以软件包格式)手动挂载包含该软件包的目录,并将它们复制到本地的假脱机目录中。

以下示例说明了此方案中使用的命令。在本示例中,假设名为 package-server 的远程系统的 /latest-packages 目录中有软件包。mount 命令用来在 /mnt 上以本地方式挂载软件包目录。pkgadd 命令用来将 SUNWpl5p 软件包从 /mnt 复制到缺省的假脱机目录 (/var/spool/pkg)。

# mount -F nfs -o ro package-server:/latest-packages /mnt
# pkgadd -d /mnt -s /var/spool/pkg SUNWpl5p
Transferring <SUNWpl5p> package instance

如果站点上运行的是自动安装程序,则不必手动挂载远程软件包服务器,而会使用自动安装程序路径(在本示例中为 /net/package-server/latest-packages)作为 -d 选项的参数。

# pkgadd -d /net/package-server/latest-packages -s /var/spool/pkg SUNWpl5p

Transferring <SUNWpl5p> package instance

示例 22-7 从缺省的假脱机目录安装软件包

以下示例说明如何从缺省的假脱机目录安装 SUNWpl5p 软件包。如果不使用任何选项,pkgadd 命令将在 /var/spool/pkg 目录中搜索已命名的软件包。

# pkgadd SUNWpl5p
    .
    .
    .
Installation of <SUNWpl5p> was successful.

如何列出有关所有已安装软件包的信息 (pkginfo)

示例 22-8 列出已安装的软件包

以下示例说明如何列出本地系统上安装的所有软件包,无论本地系统是独立系统还是服务器。输出中显示了主类别、软件包名称和软件包的说明。

$ pkginfo
system      SUNWaccr       System Accounting, (Root)
system      SUNWaccu       System Accounting, (Usr)
system      SUNWadmap      System administration applications
system      SUNWadmc       System administration core libraries
.
.
.

示例 22-9 显示有关软件包的详细信息

以下示例说明如何通过指定长格式列出系统上已安装的所有软件包,长格式中包括有关指定软件包的所有可用信息。

$ pkginfo -l SUNWcar
  PKGINST:  SUNWcar
      NAME:  Core Architecture, (Root)
  CATEGORY:  system
      ARCH:  i386.i86pc
   VERSION:  11.10.0,REV=2005.01.21.16.34
   BASEDIR:  /
    VENDOR:  Oracle Corporation
      DESC:  core software for a specific hardware platform group
    PSTAMP:  on10ptchfeatx20110211045100
  INSTDATE:  Mar 03 2011 10:57
   HOTLINE:  Please contact your local service provider
    STATUS:  completely installed
     FILES:        2 installed pathnames
                   2 shared pathnames
                   2 directories

如何检查已安装软件包的完整性 (pkgchk)

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有特权的命令。有关角色的更多信息,请参见《System Administration Guide: Security Services》中的"Configuring RBAC (Task Map)"

  2. 检查已安装软件包的状态。
    • 要检查文件的属性和内容,请键入以下命令:

      # pkgchk -a| -c -v pkid ...
    • 要指定假脱机目录的绝对路径,请键入以下命令:

      # pkgchk -d spooldir pkgid ...
    -a

    指定仅审计文件属性(权限),而不是像缺省情况下那样既审计文件属性又审计文件内容。

    -c

    指定仅审计文件内容,而不是像缺省情况下那样既审计文件内容又审计文件属性。

    -v

    指定详细模式,该模式会显示正在处理的文件的名称。

    -d spooldir

    指定假脱机目录的绝对路径。

    pkgid

    (可选)一个或多个软件包的名称,用空格分隔。如果未指定 pkgid,则会检查系统上已安装的所有软件包。

示例 22-10 检查已安装软件包的内容

以下示例说明如何检查软件包的内容。

# pkgchk -c SUNWbash

如果未出现错误,将返回系统提示符。否则,pkgck 命令将报告错误。

示例 22-11 检查已安装软件包的文件属性

以下示例说明如何检查软件包的文件属性。

# pkgchk -a SUNWbash

如果未出现错误,将返回系统提示符。否则,pkgck 命令将报告错误。

示例 22-12 检查已在假脱机目录中安装的软件包

以下示例说明如何检查已复制到假脱机目录 (/export/install/packages) 中的软件包。

# pkgchk -d /export/install/packages
## checking spooled package <SUNWadmap>
## checking spooled package <SUNWadmfw>
## checking spooled package <SUNWadmc>
## checking spooled package <SUNWsadml>

对于假脱机软件包的检查有一定的限制,因为并非所有的信息都可以在未安装软件包的情况下进行审计。

如何检查已安装对象的完整性 ( pkgchk -p, pkgchk -P)

以下过程介绍如何使用 pkgchk 命令检查已安装对象的完整性。使用新的 -P 选项,可以指定部分路径。添加此选项有助于将文件映射到软件包。将该选项与 -l 选项一起使用,可以列出包含部分路径的所有文件的信息。使用 -p 选项,可以通过指定全路径来检查已安装对象的完整性。有关更多信息,请参见 pkgchk(1M) 手册页。

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有特权的命令。有关角色的更多信息,请参见《System Administration Guide: Security Services》中的"Configuring RBAC (Task Map)"

  2. 检查已安装对象的完整性。
    • 要通过指定一个或多个完整路径名来检验已安装对象的完整性,请键入以下命令:

      # pkgchk -lp path-name
    • 要使用部分路径名(可以是一个或多个)来检验已安装对象的完整性,请键入以下命令:

      # pkgchk -lP  partial-path-name
    -p path

    仅检查所列出的一个或多个路径名是否正确。路径可以是一个或多个用逗号分隔的路径名。指定仅审计文件属性(权限),而不是像缺省情况下那样既审计文件属性又审计文件内容。

    -P partial-path

    仅检查所列出的一个或多个部分路径名是否正确。部分路径可以是一个或多个用逗号分隔的部分路径名。它可匹配任何包含特定字符串(即部分路径中所包含的字符串)的路径名。指定仅审计文件内容,而不是像缺省情况下那样既审计文件内容又审计文件属性。

    -l

    列出有关构成软件包的选定文件的信息。此选项与 -a-c-f-g-v 选项不兼容。指定详细模式,该模式会显示正在处理的文件的名称。

示例 22-13 通过指定完整路径名检查已安装对象的完整性

以下示例说明如何使用 pkgchk -lp 命令,通过指定完整路径名来检查文件系统上对象的内容/属性。-l 选项列出了有关构成软件包的选定文件的信息。

# pkgchk -lp /usr/sbin/pkgadd
Pathname: /usr/sbin/pkgadd
Type: regular file
Expected mode: 0555
Expected owner: root
Expected group: sys
Expected file size (bytes): 867152
Expected sum(1) of contents: 45580
Expected last modification: Jul 02 02:20:34 2004
Referenced by the following packages:
        SUNWpkgcmdsu   
Current status: installed

示例 22-14 通过指定部分路径名检查已安装对象的完整性

以下示例说明如何使用 pkgchk -lP 命令,通过指定部分路径名(如文件名或目录名)来检查文件系统上对象的内容/属性。-l 选项列出了有关构成软件包的选定文件的信息。

# pkgchk -lP /sbin/pkgadd
Pathname: /usr/sbin/pkgadd
Type: regular file
Expected mode: 0555
Expected owner: root
Expected group: sys
Expected file size (bytes): 867152
Expected sum(1) of contents: 45580
Expected last modification: Jul 02 02:20:34 2004
Referenced by the following packages:
        SUNWpkgcmdsu   
Current status: installed

Pathname: /usr/sbin/pkgask
Type: linked file
Source of link: ../../usr/sbin/pkgadd
Referenced by the following packages:
        SUNWpkgcmdsu   
Current status: installed

删除软件包

要删除或卸载软件包,请使用添加或安装软件包时所使用的相关工具。例如,如果软件是使用 Oracle Solaris 安装程序 GUI 安装的,请使用 Oracle Solaris 安装程序 GUI 卸载软件。


注意

注意 - 请勿使用 rm 命令删除软件包。否则将导致用来跟踪系统上所有已安装软件包的数据库不准确。


如何删除软件包 (pkgrm)

  1. 成为超级用户或承担等效角色。

    角色包含授权和具有特权的命令。有关角色的更多信息,请参见《System Administration Guide: Security Services》中的"Configuring RBAC (Task Map)"

  2. 删除已安装的软件包。
    # pkgrm pkgid ...

    pkgid 标识一个或多个要删除的软件包的名称,用空格分隔。如果省略,pkgrm 命令将删除所有可用的软件包。

示例 22-15 删除软件包

以下示例说明如何删除软件包。

# pkgrm SUNWctu

The following package is currently installed:
   SUNWctu         Netra ct usr/platform links (64-bit)
                   (sparc.sun4u) 11.9.0,REV=2001.07.24.15.53

Do you want to remove this package? y

## Removing installed package instance <SUNWctu>
## Verifying package dependencies.
## Processing package information.
## Removing pathnames in class <none>
.
.
.

示例 22-16 删除假脱机软件包

以下示例说明如何删除假脱机软件包。

# pkgrm -s /export/pkg SUNWaudh
The following package is currently spooled:
   SUNWaudh        Audio Header Files
                   (sparc) 11.10.0,REV=2003.08.08.00.03
Do you want to remove this package? y
Removing spooled package instance <SUNWaudh>

列出软件包的依赖软件包

要列出某个软件包的依赖软件包,请使用 pkgdep 命令。该命令的语法如下:

# pkgdep package-name

以下示例说明了如何列出 SUNWzsh 软件包的依赖软件包。

示例 22-17 列出依赖软件包

# pkgdep SUNWzsh
SUNWcar
SUNWcsd
SUNWcsl
SUNWcsr
SUNWcsu
SUNWkvm

有关可以随 pkgdep 命令指定的选项的信息,请参见 pkgdep(1M) 手册页。