Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1196323
  • 博文数量: 245
  • 博客积分: 10185
  • 博客等级: 上将
  • 技术积分: 2744
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-30 17:07
文章分类

全部博文(245)

文章存档

2015年(1)

2014年(1)

2013年(1)

2012年(1)

2011年(37)

2010年(20)

2009年(14)

2008年(38)

2007年(88)

2006年(44)

分类:

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

 

注:TLTechnical 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
阅读(3631) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~