服务器 频道

用软件包命令管理Solaris软件系统

    【IT168 专稿】所有作为操作环境的一部分要安装的软件都包含在称为软件包(package)的压缩文件里。Solaris 10软件包提供了简单的方法将应用可执行程序、配置文件以及在其他系统上发布的文档集成在一起。除了Solaris 10软件包之外,Solaris 10还提供了标准的UNIx文档和压缩工具,例如Tar(磁带文档)和compress。在本文中我们将介绍如何使用标准的Solaris 10命令行界面(Command Line Interface,CLI)工具来管理软件包、显示包信息以及卸载软件包。

    Solaris 10命令行界面(Command Line Interface,CLI)工具命令包括几个命令:

 pkginfo 命令:用来列出有关已安装软件包的信息。
 pkgadd 命令:用来添加和删除已签名的软件包;
 pkgrm 命令:用来删除不需要的软件包。
 pkgchk 命令:用来检验已安装软件包的完整性。

    下面依次介绍。另外还包括两个不常用命令:

 Pkgproto命令: 创建一个原理文件说明软件包中所包含的文件。
 Pkgmk命令: 创建一个软件包目录。

一、 pkginfo命令的使用

    可以使用 pkginfo 命令列出有关已安装软件包的信息。

    1.pkginfo 命令格式:
    pkginfo -d device [-x|1][options][pkg_name]
    主要参数:
    -q:安静的方式
    -p:选择部分安装包
    -i:选择全部安装包
    -x:压缩列表
    -l:长列表
    -r:重新分配
    -c :目录[目录...]
    -a :结构
    -v :版本
    -d:软件包在的设备路径
    pkg_name:软件包名称

    2 命令实例
 分页显示所有已经安装的软件包
    使用命令即可:“pkginfo|more ”命令输出如图1 。

图1 分页显示所有已经安装的软件包
 显示有关软件包的详细信息

    使用命令即可:“pkginfo -l name ”。以下示例说明如何通过指定长格式列出系统上已安装的所有软件包,长格式中包括有关指定软件包的所有可用信息。pkginfo -l SUNWPython命令输出如下:
    #pkginfo -l SUNWPython
    PKGINST: SUNWPython
    NAME: The Python interpreter, libraries and utilities
    CATEGORY: GNOME2,application,JDS3
    ARCH: i386
    VERSION: 2.3.3,REV=10.0.3.2004.12.16.14.40
    BASEDIR: /usr
    VENDOR: Sun Microsystems, Inc.
    DESC: The Python interpreter, libraries and utilities
    PSTAMP: swanson20041216144036
    INSTDATE: Oct 19 2006 13:13
    HOTLINE: Please contact your local service provider
    STATUS: 全部安装
    FILES: 2468个 已安装的路径名
    3 个共享的路径名
    28 目录
106 可执行文件
58058 个已使用的块(近似)
pkginfo -l 输出包括以下信息
二、 使用pkgadd安装软件包

    1 命令格式:pkgadd[-d[device|pathname]]pkg_name
    主要参数:
    pkg_name:软件包名称
    -a admin-file :(可选)指定在安装期间应当由 pkgadd 命令检查的管理文件。有关使用管理文件的详细信息,请参见使用管理文件。
    -d device :指定软件包的绝对路径。device-name 可以是设备、目录或假脱机目录的路径。如果未指定软件包所在的路径,   pkgadd 命令将检查缺省的假脱机目录 (/var/spool/pkg)。如果软件包不在缺省的假脱机目录中,软件包的安装将失败。
    pkgid :(可选)一个或多个要安装的软件包的名称,用空格分隔。如果省略,pkgadd 命令会从指定的设备、目录或假脱机目录安装所有可用的软件包。

    2 为pkgadd设置代理服务器的方法
    如果系统位于具有代理的防火墙之后,则需要首先设置代理服务器,然后才能使用 pkgadd 命令从 HTTP 服务器添加软件包。使用 http_proxy、HTTPPROXY 或 HTTPPROXYPORT 环境变量指定代理服务器。例如:
    # setenv http_proxy http://mycache.domain:8080
    或者指定以下内容之一:
    # setenv HTTPPROXY mycache.domain
    # setenv HTTPPROXYPORT 8080
    然后,使用 pkgadd -a 命令标识管理文件。如:
    # pkgadd -a /tmp/admin -d http://myserver.com/pkg SUNWpkg

    3 添加光盘中的一个软件包
    如添加Sun的SUNWpl5u软件包,首先使用上面介绍的命令查看一下:
    #pkinfo -d /cdrom/cdrom0/s0/Solaris_10/Product SUNWpl5u
    然后使用pkgadd安装软件包

    # pkgadd –d -d /cdrom/cdrom0/s0/Solaris_10/Product SUNWpl5u 
   
     of <SUNWpl5u> was successful.

    4 建立一个spool目录
    为方便起见,可以将经常安装的软件包复制到假脱机目录中。如果将软件包复制到缺省的假脱机目录 (/var/spool/pkg) 中,那么,在使用 pkgadd 命令时无需指定软件包的源位置(-d device-name 参数)。缺省情况下,pkgadd 命令会检查在命令行上指定的软件包是否存在于 /var/spool/pkg 目录中。请注意,将软件包复制到假脱机目录中不同于在系统上安装软件包。
    #pkgadd –d device-name –s spooldir pkgid
    使用建立spool目录的方法,在客户机上安装SunWman软件包
    #pkgadd –d /cdrom/cdrom0/s0/Solaris_10/Product –s /var/spool/pkg SunWman
    在客户机上安装软件包命令:
    #mount –F nfs –o ro package-server:/var/spool/pkg /mnt

    5 安装一个第三方软件的详细步骤
    Wget是GNU的一个免费的多线程下载软件,官方网址是:http://www.gnu.org/software/wget/ 。Wget支持HTTP, HTTPS和FTP协议,是一个非交互式的命令行工具,所以可以无需借助X-windows就能够从多种脚本语言、cron tabs、终端窗口中调用。Wget的最新版本是1.10.2,Solaris 10 Sparc版本的安装包是wget-1.10.2-sol10-sparc-local.gz,Solaris 10 x86版本的安装包是wget-1.10.2-sol10-x86-local.gz,下载后的安装步骤如下(以下X86版本为例。)
 解压缩

    #gzip -d ./ wget-1.10.2-sol10-x86-local.gz

 安装命令:

    #pkgadd -d ./ wget-1.10.2-sol10-x86-local.gz

    默认安装路径是/,首先系统提示是否安装,如图2 。

图2首先系统提示是否安装
    选择all或者确省配置开始安装,系统提示是否建立/usr/local/目录,选择y 继续,如图3 。

图3系统提示是否建立/usr/local/目录
    如果出现图4 界面表示安装成功。

图4 安装成功界面


    6从 HTTP URL 安装软件包
    以下示例说明如何使用 HTTP URL 作为设备名称来安装软件包。该 URL 必须指向流格式的软件包。
    # pkgadd -d http://install/xf86-4.3.0-video.pkg

     7 pkgadd应用说明
    如果 pkgadd 命令在软件包安装期间遇到问题,则会在该提示符后面显示一则与该问题有关的消息: “Do you want to continue with this installation? ”可以回答 yes、no 或 quit。如果指定了多个软件包,请键入 no 停止安装正在安装的软件包。pkgadd 命令会继续安装其他软件包。键入 quit 可停止安装。
三、 pkgchk命令的使用

    1 命令格式:pkgchk[-lacvp path1[path2…]]
    主要参数:
    -a :指定仅审计文件属性(权限),而不是像缺省情况下那样既审计文件属性又审计文件内容。
    -c:指定仅审计文件内容,而不是像缺省情况下那样既审计文件内容又审计文件属性。
    -v:指定详细模式,该模式会显示正在处理的文件的名称。

    -d spooldir :指定假脱机目录的绝对路径。

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

    2 命令实例1
    以下示例说明如何检查软件包的内容。
    # pkgchk -c SUNWbash
    如果未出现错误,将返回系统提示符。否则, pkgchk 命令将报告错误。

    3 检查已安装对象的完整性
    使用新的 -P 选项,可以指定部分路径。添加此选项有助于将文件映射到软件包。将此选项与 -l 选项结合使用,可以列出有关包含部分路径的文件的信息。使用 -p 选项,可以通过指定全路径来检查已安装对象的完整性。
    要通过指定一个或多个全路径名来检验已安装对象的完整性,使用命令:
    # pkgchk -lp path-name
    要使用部分路径名(可以是一个或多个)来检验已安装对象的完整性,使用命令:
    # pkgchk -lP partial-path-name
    -p path :仅检查所列出的一个或多个路径名是否正确。路径可以是一个或多个用逗号分隔的路径名。指定仅审计文件属性(权限),而不是像缺省情况下那样既审计文件属性又审计文件内容。

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

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

    4 命令实例2 :
    使用 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): 189448
Expected sum(1) of contents: 25716
Expected last modification: 12月 07 10时±00•47秒 2005
Referenced by the following packages:
SUNWpkgcmdsu
Current status: installed

四、 使用pkgrm命令删除软件包

    1命令格式:pkgrm package_name
    package_name 即软件包名称。

    2 命令实例1
    如果希望删除刚刚安装wget 可以使用命令:
    # pkgrm SMCwget
    首先系统提示是否删除,选择y 即可删除。
    如果出现图5 界面表示删除成功。

图5删除成功界面

    3 命令实例2
    以下示例说明如何删除假脱机软件包。
# 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>

    4 应用说明:
    要删除或卸载软件包,请使用添加或安装软件包时所使用的相关工具。例如,如果软件是使用 Solaris 安装程序 GUI 安装的,请使用 Solaris 安装程序 GUI 卸载软件。请勿使用 传统的Unix 命令rm 删除软件包,否则将导致用来跟踪系统上所有已安装软件包的数据库不准确。

本文总结:本文中我们将介绍如何使用标准的Solaris 10命令行界面(Command Line Interface,CLI)工具来管理软件包、显示包信息以及卸载软件包。和GUI方式相比CLI命令更加快速和适合远程操作。
0
相关文章