2023年12月14日发(作者:)
3.4.2 软件包的安装与管理
软件包的常见管理命令如表3-3所示。
表3-3 软件包管理的常见命令
pkgtrans
source
destination
pkg1 [pkg2…]
pkginfo <-d
pkgname > <-l
specific-software>
pkgadd <-d
pkgname > <-s
spool-path>
specific-software
pkgchk [-l ] <-v
pkgname > | <-p
filename>
pkgrm <-s
spool-path>
对软件包进行格式转换
查看软件包和软件的说明
添加软件包
检查包或文件的安装状态
删除已安装的软件包
1.软件安装包的格式转换
(1)把标准的文件系统格式的软件安装包转换成数据流格式。
把Solaris安装介质放入光驱中。然后按以下示例操作,生成一个包含SUNWadmap、SUNWadmc、SUNWadmr这三个软件包的数据流格式的大包:
# cd /cdrom/cdrom0/Solaris*
# pkgtrans ./Product /tmp/ SUNWadmap SUNWadmc
SUNWadmr
# file /tmp/
/tmp/: 软件包数据流
# head /tmp/
# PaCkAgE DaTaStReAm
SUNWadmap 1 618
SUNWadmc 1 928
SUNWadmr 1 68
# end of header
BASEDIR=/
CATEGORY=system
DESC=Software used to perform system administration tasks
EMAIL=
HOTLINE=Please contact your local service provider
(2)把数据流格式的软件安装包转换成标准的文件系统格式。
仅提取SUNWadmap软件包,并保存在/var/spool/pkg目录
# pkgtrans /tmp/ /var/spool/pkg SUNWadmap 提取所有的软件包,并保存在/tmp目录
# pkgtrans /tmp/ /tmp all
如果pkgtrans命令的最后不指定具体的软件包的话,则命令运行后会显示所有可转换的包的列表并提示进行选择。
2.查看软件包的描述信息
pkginfo命令可以显示所有安装在本地系统磁盘的的软件包信息。在/var/sadm/pkg/目录中保留了一个所有已安装包的记录,可用以下两条命令查看安装的包总数。
# ls /var/sadm/pkg | wc -l.
# pkginfo | wc –l 仅查看完整安装的软件包数量,等同于pkginfo
–i | wc –l
其他常见用法:
# pkginfo | more 查看系统安装了哪些包
# pkginfo –l | more
# pkginfo –l SUNWxxx 特定包的具体信息,SUNW代表SUN系统的软件
# pkginfo –d ./top-3.6-sol10-x86-local 查看安装包中包含的软件包信息
application SMCtop top #软件包为SMCtop,SMC说明是第三方软件
# pkginfo –d ./top-3.6-sol10-x86-local –l SMCtop 查看SMCtop的信息
3.添加软件包
(1)在默认情况下,pkgadd命令会查看/var/spool/pkg目录中是否有标准格式的软件包并列出所有可安装的软件包,是否安装进行安装(关于/var/spool/pkg目录的使用详见下文“使用spool目录”):
# pkgadd
pkgadd: ERROR: 在中没有发现包
(2)如果标准软件包在其他目录(非/var/spool/pkg)中,可用-d选项,示例如下。
# pkgadd -d /tmp/soft ---------自动寻找/tmp/soft目录中可安装的软件包
# pkgadd -d . SMCtop ---------仅安装SMCtop软件包
(3)如果要直接安装数据流格式的软件包,可用以下命令:
# pkginfo -d $HOME/top-3.6-sol10-x86-local -------查看包含哪些软件包
application SMCtop top
# pkgadd -d ./top-3.6-sol10-x86-local [all] -------“[ ]”中为可选项
(4)可以把数据流格式的软件包都导到/var/spool/pkg目录并以标准格式存放:
# pkgadd -d $HOME/top-3.6-sol10-x86-local -s
/var/spool/pkg SMCtop
Transferring
或者使用pkgtrans命令把软件包从数据流格式转换成标准文件系统格式:
#
pkgtrans $HOME/top-3.6-sol10-x86-local /var/spool/pkg [SMCtop]
Transferring
然后用pkgadd命令进行安装。
4.检查已安装的软件包
(1)检查自系统安装以来,所有有变动的文件:
# pkgchk
ERROR: /etc/default/login
modtime <01/22/05 07:28:36 AM> expected <04/16/07 02:26:23
PM> actual
file size <2258> expected <2259> actual
file cksum <57347> expected <57382> actual
<……>
(2)检查特定软件包的变动情况:
# pkgchk SUNWbash (3)查看软件包中包括哪些文件:
# pkgchk -v SUNWcarx
(4)检查特定文件自安装以来的变化修改时间、文件大小、checksum等:
# pkgchk -p /etc/shadow
(5)查看特定文件的信息,特别是属于哪个软件包,必须全路径:
# pkgchk -l -p /usr/bin/showrev
pkgchk的其他参数选项说明:
-a:只审核文件属性。
-c:只审核文件内容,默认是都审核。
-f:尝试进行纠正。
5.删除软件包
# pkgrm SUNWapchr
The following package is currently installed:
SUNWapchr Apache Web Server (root)
(sparc) 11.9.0,REV=2002.01.18.00.45
Do you want to remove this package? [y,n,?,q] y
## Removing installed package instance
## Verifying package dependencies.
WARNING:
The
being removed.
WARNING:
The
being removed.
Dependency checking failed.
Do you want to continue with the removal of this package
[y,n,?,q] y
……
/var
……
## Updating system information. Removal of
如果在删除软件包时遇到以下错误信息:
## 在类别
svc:/network/http:apache2 remains enabled; aborting
pkgrm: ERROR: 类别活动正文没有成功地完成
删除
这些信息表明,要删除的软件包正在作为系统服务之一受SMF管理,需要先删除对应的服务实例,根据上面的信息显示服务实例为“svc:/network/http:apache2”,用以下命令删除这个服务实例后再执行软件包的删除操作。
# svccfg delete /network/http:apache2
关于服务实例以及SMF的详细信息,将在后述章节《预测性自愈》中讲解。
6.查看帮助手册
许多第三方软件都自带有帮助手册,如果想用man查看第三方软件包的帮助手册,你需要设置环境变量。假设第三方软件包安装后的帮助手册页都放置在/usr/local/man目录下:
# MANPATH=/usr/share/man:/usr/local/man
# export MANPATH
# man top
或者直接使用man的-M选项:
# man –M /usr/local/man top
把帮助手册页导成文本文件:
# man –M /usr/local/man top | col -b >


发布评论