管理软件包的工具

 

管理软件包的工具或命令

工具或命令

说明

手册页

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)

 

 

向系统中添加软件包。

# 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?

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

 

检验软件包是否已成功安装。

# pkgchk -v pkgid

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

 

从已挂载 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

.

.

 

从远程软件包服务器安装软件包

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

以下示例说明如何从远程系统安装软件包。在本示例中,假设名为 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.

 

 

通过指定管理文件从远程软件包服务器安装软件包

以下示例与上面的示例相似,区别在于本示例使用 -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.

 

 

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

 

.

.

.

 

 

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

 

 

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

# pkgadd -d device-name

-s spooldir pkgid ...

-d device-name

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

-s spooldir

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

pkgid

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

 

检验软件包是否已成功复制到假脱机目录中。

$ pkginfo -d spooldir

| grep pkgid

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

 

从已挂载 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

 

从远程软件包服务器设置假脱机目录

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

以下示例说明了此方案中使用的命令。在本示例中,假设名为 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

 

从缺省的假脱机目录安装软件包

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

# pkgadd SUNWpl5p

    .

    .

    .

Installation of <SUNWpl5p> was successful.

 

 

 

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

 

列出已安装的软件包

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

$ pkginfo

system      SUNWaccr       System Accounting, (Root)

system      SUNWaccu       System Accounting, (Usr)

system      SUNWadmap      System administration applications

system      SUNWadmc       System administration core libraries

.

.

.

 

显示有关软件包的详细信息

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

$ 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)

 

检查已安装软件包的状态。

  • 要检查文件的属性和内容,请键入以下命令:

# pkgchk -a| -c -v pkid ...

  • 要指定假脱机目录的绝对路径,请键入以下命令:

# pkgchk -d spooldir pkgid ...

-a

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

-c

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

-v

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

-d spooldir

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

pkgid

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

 

检查已安装软件包的内容

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

# pkgchk -c SUNWbash

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

 

检查已安装软件包的文件属性

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

# pkgchk -a SUNWbash

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

 

检查已在假脱机目录中安装的软件包

以下示例说明如何检查已复制到假脱机目录 (/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 -lp path-name

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

# pkgchk -lP  partial-path-name

-p path

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

-P partial-path

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

-l

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

 

通过指定完整路径名检查已安装对象的完整性

以下示例说明如何使用 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

 

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

以下示例说明如何使用 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

 

 

 

删除软件包

 

删除已安装的软件包。

# pkgrm pkgid ...

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

 

删除软件包

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

# 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>

.

.

.

 

删除假脱机软件包

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

# 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

 

列出依赖软件包

# pkgdep SUNWzsh

SUNWcar

SUNWcsd

SUNWcsl

SUNWcsr

SUNWcsu

SUNWkvm