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

网络整理 - 06-30

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

  Solaris 命令行界面(Command Line InterfaceCLI)工具命令包括几个命令

  * pkginfo 命令用来列出有关已安装软件包的信息

  * pkgadd 命令用来添加和删除已签名的软件包

  * pkgrm 命令用来删除不需要的软件包

  * pkgchk 命令用来检验已安装软件包的完整性

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

  * Pkgproto命令 创建一个原理文件说明软件包中所包含的文件

  * Pkgmk命令 创建一个软件包目录

  一 pkginfo命令的使用

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

  pkginfo 命令格式

  pkginfo d device [x|][options][pkg_name]

  主要参数

  q安静的方式

  p选择部分安装包

  i选择全部安装包

  x压缩列表

  l长列表

  r重新分配

  c 目录[目录……]

  a 结构

  v 版本

  -d软件包在的设备路径

  pkg_name软件包名称

   命令实例

  * 分页显示所有已经安装的软件包

  使用命令即可pkginfo|more 命令输出如图

  

  图 分页显示所有已经安装的软件包

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

  使用命令即可pkginfo -l name 以下示例说明如何通过指定长格式列出系统上已安装的所有软件包长格式中包括有关指定软件包的所有可用信息pkginfo -l SUNWPython命令输出如下

  

  #pkginfo l SUNWPython PKGINST: SUNWPython NAME: The Python interpreter libraries and utilities CATEGORY: GNOMEapplicationJDS ARCH: i VERSION: REV= BASEDIR: /usr VENDOR: Sun Microsystems Inc DESC: The Python interpreter libraries and utilities PSTAMP: swanson INSTDATE: Oct : HOTLINE: Please contact your local service provider STATUS: 全部安装 FILES: 个 已安装的路径名 个共享的路径名 目录 可执行文件 个已使用的块(近似)

  pkginfo l 输出包括以下信息

  

  二 使用pkgadd安装软件包

   命令格式pkgadd[d[device|pathname]]pkg_name

  主要参数

  pkg_name软件包名称

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

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

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

   为pkgadd设置代理服务器的方法

  如果系统位于具有代理的防火墙之后则需要首先设置代理服务器然后才能使用 pkgadd 命令从 HTTP 服务器添加软件包使用 http_proxyHTTPPROXY 或 HTTPPROXYPORT 环境变量指定代理服务器例如

  # setenv http_proxy

  或者指定以下内容之一

  # setenv HTTPPROXY mycachedomain

  # setenv HTTPPROXYPORT

  然后使用 pkgadd a 命令标识管理文件如

  # pkgadd a /tmp/admin d SUNWpkg

   添加光盘中的一个软件包

  如添加Sun的SUNWplu软件包首先使用上面介绍的命令查看一下

  #pkinfo d /cdrom/cdrom/s/Solaris_/Product SUNWplu

  然后使用pkgadd安装软件包

  # pkgadd –d d /cdrom/cdrom/s/Solaris_/Product SUNWplu

  of <SUNWplu> was successful

   建立一个spool目录

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

  #pkgadd –d devicename –s spooldir pkgid

  使用建立spool目录的方法在客户机上安装SunWman软件包

  #pkgadd –d /cdrom/cdrom/s/Solaris_/Product –s /var/spool/pkg SunWman

  在客户机上安装软件包命令

  #mount –F nfs –o ro packageserver/var/spool/pkg /mnt

   安装一个第三方软件的详细步骤

  Wget是GNU的一个免费的多线程下载软件官方网址是 Wget支持HTTP HTTPS和FTP协议是一个非交互式的命令行工具所以可以无需借助Xwindows就能够从多种脚本语言cron tabs终端窗口中调用Wget的最新版本是Solaris Sparc版本的安装包是wgetsolsparclocalgzSolaris x版本的安装包是wgetsolxlocalgz下载后的安装步骤如下(以下X版本为例)

  * 解压缩

  #gzip d / wgetsolxlocalgz

  * 安装命令

  #pkgadd d / wgetsolxlocalgz

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

  

  图首先系统提示是否安装

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

  

  图系统提示是否建立/usr/local/目录

  如果出现图 界面表示安装成功

  

  图 安装成功界面

  从 HTTP URL 安装软件包

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

  # pkgadd d

   pkgadd应用说明

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

  三 pkgchk命令的使用

   命令格式pkgchk[lacvp path[path…]]

  主要参数

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

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

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

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

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

   命令实例

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

  # pkgchk c SUNWbash

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

   检查已安装对象的完整性

  使用新的 P 选项可以指定部分路径添加此选项有助于将文件映射到软件包将此选项与 l 选项结合使用可以列出有关包含部分路径的文件的信息使用 p 选项可以通过指定全路径来检查已安装对象的完整性

  要通过指定一个或多个全路径名来检验已安装对象的完整性使用命令

  # pkgchk lp pathname

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

  # pkgchk lP partialpathname

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

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

  l 列出有关构成软件包的选定文件的信息此选项与 acfg 和 v 选项不兼容指定详细模式该模式会显示正在处理的文件的名称

   命令实例

  使用 pkgchk lp 命令通过指定全路径名来检查文件系统上对象的内容/属性l 选项列出了有关构成软件包的选定文件的信息

  

  # pkgchk lp /usr/sbin/pkgadd Pathname: /usr/sbin/pkgadd Type: regular file Expected mode: Expected owner: root Expected group: sys Expected file size (bytes): Expected sum() of contents: Expected last modification: 月 时±*秒 Referenced by the following packages: SUNWpkgcmdsu Current status: installed

  四 使用pkgrm命令删除软件包

  命令格式pkgrm package_name

  package_name 即软件包名称

   命令实例

  如果希望删除刚刚安装wget 可以使用命令

  # pkgrm SMCwget

  首先系统提示是否删除选择y 即可删除

  如果出现图 界面表示删除成功

  

  图删除成功界面

   命令实例

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

  

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

   应用说明

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

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