分类:
2008-10-30 14:47:27
如何安装软件
由第 3 章我们知道软件包在被安装后,可以处于 applied 和 committed 两种状态。applied 状态会在 /usr/lpp/PackageName
目录保留软件包的前一个版本。当软件包的新版本出现问题时,用户可以方便的回滚到前一个稳定版本。而 committed 状态则会删除软件所有以前的版本,用户不再可以进行回滚操作。下面,我们就分别介绍如何将软件包安装为 applied 状态和 committed 状态。
在 AIX 中,用户可以通过命令行和 SMIT 来进行软件包的安装。由于篇幅关系,我们在这里只介绍命令行方式。
在命令行模式下,软件包安装通过 installp 命令来完成,下面列出了将软件包安装成 applied 模式的 installp 命令语法:
installp -a [ -eLogFile ] [ -V Number ] [ -dDevice ] [ -b ] [ -S ] [ -B ] [ -D ] [ -I ] [ -p ] [ -Q ] [ -q ] [ -v ] [ -X ] [ -F | -g ] [ -O { [ r ] [ s ] [ u ] } ] [ -tSaveDirectory ] [ -w ] [ -zBlockSize ] { FilesetName [ Level ]...| -f ListFile | all} |
例如:要安装放置在 /usr/sys/inst.images 目录中的 bos.net 软件包中的所有 filesets,在安装中使用 checksum 检查,并使软件包处于 applied 状态。使用下面这个命令:
installp -avX -d/usr/sys/inst.images bos.net |
将软件安装为 commited 状态,请使用下边的语法:
installp -ac [ -N ] [ -eLogFile ] [ -V Number ] [ -dDevice ] [ -b ] [ -S ] [ -B ] [ -D ] [ -I ] [ -p ] [ -Q ] [ -q ] [ -v ] [ -X ] [ -F | -g ] [ -O { [ r ] [ s ] [ u ] } ] [ -tSaveDirectory ] [ -w ] [ -zBlockSize ] { FilesetName [ Level ]... | -f ListFile | all } |
例如:要模拟安装放置在 /usr/sys/inst.images 目录中的 bos.net 软件包中的所有 filesets,在安装前进行磁盘容量检查,并使软件包处于 committed 状态。使用下面这个命令:
installp -acpX -d/usr/sys/inst.images bos.net |
installp 命令的输出记录可以在 /var/adm/sw/installp.summary 文件中找到
如何 commit applied 软件包
commit 一个处于 applied 状态的软件包,也是使用 installp 命令来完成的。语法如下:
installp -c [ -eLogFile ] [ -VNumber ] [ -b ] [ -g ] [ -p ] [ -v ] [ -X ] [ -O { [ r ] [ s ] [ u ] } ] [ -w ] { FilesetName [ Level ]... | -f ListFile | all } |
例如:commit 所有的软件包更新
installp -cgX all |
如何 reject applied 软件包
reject 一个处于 applied 状态的软件包,是使用 installp 命令来完成的。语法如下:
installp -r [ -eLogFile ] [ -VNumber ] [ -b ] [ -g ] [ -p ] [ -v ] [ -X ] [ -O { [ r ] [ s ] [ u ] } ] [ -w ] { FilesetName [ Level ]... | -f ListFile } |
例如:reject 所有写在 ./reject.list 文件中的 applied 状态的软件包
installp -rBfX ./reject.list |
如何卸载软件包
卸载软件包,也是使用 installp 命令来完成的。语法如下:
installp -u [ -eLogFile ] [ -VNumber ] [ -b ] [ -g ] [ -p ] [ -v ] [ -X ] [ -O { [ r ] [ s ] [ u ] } ] [ -w ] { FilesetName [ Level ]... | -f ListFile } |
例如:模拟卸载 bos.net.ipsec.rte 和所以他依赖的包
installp -ugp -V2 bos.net.ipsec.rte |
这个命令将显示所有将被卸载的文件列表,但是并不会真的删除它们。
安装失败后如何清理环境
如果一个软件包安装失败,installp 将不能够再次安装这个软件包,直到用户删除了在失败点之前的成功安装。要清理失败的环境可以使用下面的命令:
installp -C [ -b ] [ -eLogFile ] |
软件包管理 FAQ
问 1:如何得到目前的 system level ?
答:使用 oslevel 命令,例如:
-bash-2.05b# oslevel -s 5300-01-00-0000 5300—VR 01---TL 00---SP 0000—SPdate |
注:TL(Technical Level)指 AIX 操作系统的技术版本(以前称为 ML, Maintenance Level),包括硬件、软件的新功能和传统的补丁。SP( Service Pack) 是服务补丁版本,包括一些不能等到下一个 TL 推出的关键的补丁及非常有限的新硬件驱动。如果想了解具体有关信息,请参照《IBM AIX Operating System Service Strategy Details and Best
Practices》()。
问 2:在将系统到新的 TL 后,如果 oslevel 命令仍然报告是老的 TL,怎么办?
答:首先使用 oslevel –s 命令查看当前的 TL,例如:
bash-2.05b# oslevel -s 5300-01-00-0000 |
接下来,使用 oslevel –rl 命令查看哪些 fileset 版本低于新的 TL,需要升级
bash-2.05b# oslevel -rl 5300-03 Fileset Actual Level Recommended ML ----------------------------------------------------------------------------- X11.adt.ext 5.3.0.0 5.3.0.30 X11.adt.include 5.3.0.0 5.3.0.30 X11.base.lib 5.3.0.10 5.3.0.30 X11.base.smt 5.3.0.10 5.3.0.30 X11.compat.lib.X11R5 5.3.0.10 5.3.0.30 |
接下来使用 installp 命令升级 oslevel 列出的 fileset 就可以了。
问 3: 列出一个 fileset 中的所有文件 ?
答:使用 lslpp 命令,例如:
bash-2.05b# lslpp -f bos.rte Fileset File ---------------------------------------------------------------------------- Path: /usr/lib/objrepos bos.rte 5.3.7.0 / /usr/aix /usr/lpp /usr/lpp/bos /usr/lpp/bos/inst_root …
Path: /etc/objrepos bos.rte 5.3.7.0 /usr /lib -> /usr/lib /dev /etc … |
问 4: 如何列出一个文件属于哪个 fileset ?
答:使用 lslpp 命令,例如:
bash-2.05b# lslpp -w /opt/csm/pm/CSMDefs.pm File Fileset Type ---------------------------------------------------------------------------- /opt/csm/pm/CSMDefs.pm csm.core File |
问 5:如何列出一个 fileset 中没有被安装的文件?
答:使用 restore -qTvf 命令,例如:
bash-2.05b# restore -qTvf U805874.csm.hpsnm.bff New volume on U805874.csm.hpsnm.bff: Cluster 51200 bytes (100 blocks). Volume number 1 Date of backup: Tue Oct 11 13:01:35 2005 Files backed up by name User BUILD 0 ./ 1113 ./lpp_name 0 ./usr 0 ./usr/lpp 0 ./usr/lpp/csm.hpsnm/csm.hpsnm/1.4.1.12 16682 ./usr/lpp/csm.hpsnm/csm.hpsnm/1.4.1.12/liblpp.a 0 ./usr/lpp/csm.hpsnm/csm.hpsnm/1.4.1.12/inst_root 1178 ./usr/lpp/csm.hpsnm/csm.hpsnm/1.4.1.12/inst_root/liblpp.a … 6812032 ./usr/websm/codebase/pluginjars/hsc.jar total size: 78826891 files archived: 54 |
问 6:如何从一个 fileset 中直接得到文件?
答:使用 restore -qxvdf 命令,例如:
bash-2.05b# ls -al csm.core -rw-r--r-- 1 root system 2744320 Feb 11 17:02 csm.core -bash-2.05b# restore -qxvdf csm.core New volume on csm.core: Cluster 51200 bytes (100 blocks). Volume number 1 Date of backup: Thu Sep 7 08:04:51 2006 Files backed up by name User BUILD x 0 ./ x 3804 ./lpp_name x 0 ./usr x 0 ./usr/lpp … x 774 ./opt/csm/samples/mkres/IBM.Sensor/MySensor.pm total size: 3868461 files restored: 166 -bash-2.05b# du -m opt/ 0.03 opt//csm/install/defs 0.71 opt//csm/install/pkgdefs 0.76 opt//csm/install 0.03 opt//csm/pm/Rpm/Child 0.10 opt//csm/pm/Rpm 1.38 opt//csm/pm 0.05 opt//csm/lib 0.00 opt//csm/samples/mkres/IBM.Association 0.00 opt//csm/samples/mkres/IBM.Condition 0.02 opt//csm/codebase 0.00 opt//csm/man/cat1 0.00 opt//csm/man/cat5 0.04 opt//csm/man/man1 0.01 opt//csm/man/man5 0.05 opt//csm/man 3.83 opt// |
问 7. 如何列出一个 archive 文件中的内容 ?
答:使用 ar –t 命令,例如:
bash-2.05a# ar -v -t /usr/lib/libcfg.a rwxr-x--- 300/300 122917 Oct 5 02:58 2007 shr.o |
问 8. 如何从一个 archive 中得到文件 ?
答:使用 ar –x 命令,例如
bash-2.05a# ar -v -x /usr/lib/libcfg.a x - shr.o bash-2.05a# ls shr.o shr.o |