`
xiaolong0211
  • 浏览: 334279 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

AIX 软件包理论与实践(转)

 
阅读更多
转自:http://www.ibm.com/developerworks/cn/aix/
对软件包的管理是系统管理员日常工作中的一个重要部分 , 而一套优秀的软件包管理机制可以在极大程度上帮助系统管理员维护系统并降低系统维护的开支。

 

AIX 操作系统可以安装包括 rpm 及 installp 格式的软件包。其中 installp 是 AIX 系统特有的软件包格式,它提供了强大的管理能力,但是,同时它也包含了很多容易混淆的概念(如 fileset, package, lpp 等等),许多有经验的系统管理员仍经常不能正确地理解它们的含义及相互关系。本文通过探讨一些 AIX installp 软件包的基本概念及内部机理,使管理员对 AIX installp 软件包有较深入的理解,并能在实践中灵活的运用 installp 的强大功能。

 

另外,本文的最后部分总结了一些在日常管理 AIX installp 软件包中经常遇到的问题并给出了解决方案,留给 AIX 系统管理员参考使用。

 

AIX installp 软件包基本概念

 

fileset

 

在 AIX 5L 操作系统的文件打包结构中,把文件分成了许多 fileset 。每个 fileset 包含的是一组逻辑上相关的文件。例如:与 TCP/IP 客户端功能相关的文件都打包在 bos.net.tcp.client fileset 中。fileset 是最小的可独立安装实体,每个 fileset 都是可以单独安装、升级、卸载的。Fileset 的版本号由四个域组成,分别是:Version, Release, Maintenance level 和 Fix level 组成,称作 VRMF。(例如: bos.rte 5.3.0.0 表示 version 域为 5, release 域为 3, Maintenance level 域为 0 , Fix level 域为 0)。

 

package

 

多个相关的 fileset 可以被打包到一起,形成一个安装镜像或者一个 BFF(Backup Format File),也被称为 package 。通常,一个 package 里可以包含一个或者多个 fileset。

 

LPP(Licensed Program Product)

 

LPP 就像他的英文定义一样,对于用户来说 LPP 是用户可以用来购买的产品。它可以是一系列的 package 或者只是一个单独的 package。一般情况下,用户可以选择不一次购买整个 LPP 而只是购买其中的几个 package。


图 1 fileset/package/LPP 之间的关系

由图 1 可以清楚的看到,例子中的每个 package 都只包含有一个 fileset,而 CSM LPP 包含 csm.core, csm.deploy 及 csm.server 3 个 package.


图 2

 

图 2 是一个更加复杂的软件包关系图。可以看到每个 package 中都包含了大量的 fileset,而一个 LPP 中又包含了大量的 package。这也是 AIX 中最普遍的情况。

 

VRMF

 

VRMF 是系统版本号(Version)、发行版本号 (Release)、改进版本号 (Modification level) 和修正版本号 (Fix level) 的首字母的集合。这四个数字组合再一起,表示了软件包的版本。下面我们分别对这四个版本号进行详细的解释 .

 

系统版本号(Version)——一个两位的数字用来表示产品的发布版本。例如:AIX5L,其中的 5 就是操作系统的版本号。

 

发行版号(Release)——发行版号也是由一个两位数字表示,它代表了软件的发行版本。例如 :AIX5.3,其中的 3 就是发行版号,我们在这里省略了十位的 0,将 03 简写为 3.

 

改进版号(Modification level)——是由一个四位数字组成,表示最新的改进版级别。一般情况下,每过一段时间,软件发布者会将大量的更新打包成一个安装镜像并发布,此时改进版本级别会被改变。

 

修正版本号(fix level)——是由一个四位数字组成,表示最新的 fileset 修正版本。软件每经过一次修正,其修正版本号都会增加一次,直到改进版本号升高,修正版本号将被重置为 0。

 

AIX 软件包结构

 

usr 部分、root 部分和 share 部分

 

AIX 为了实现在客户机 / 服务器环境下安装的灵活性将安装包划分为 usr 部分 (usr part)、root 部分 (root part) 和 share 部分 (share part)。

 

a)usr 部分 : 这个部分包括了 lpp_name 和 liblpp.a 两个控制文件以及软件包中可以被多个同构硬件共享的文件。在一个标准的 AIX 系统中,这些文件被放置在 /usr 目录树下。

 

b)root 部分这个部分包含了 liblpp.a 归档文件以及产品中不能被多个机器共享的部分。换句话说,每个机器必须有它自己的一个独立拷贝,这个部分和每台机器的配置相关联。在一个标准的 AIX 系统中,这些文件被放置在根(/)目录树下。如果一个 fileset 包含一个 root 部分那它也必须包含一个 usr 部分。

 

./usr/lpp/PackageName/liblpp.a 这是一个归档文件,它包括了安装或升级软件的 root 部分时所需要的控制文件。

 

c)share 部分 : 这个部分包括了软件包中可以被多个异构硬件共享的文件。一般这个部分包括软件包中的非可执行文件,例如:文档和数据文件。在一个标准的 AIX 系统中,这些文件被放置在 /usr/share 目录树下。share 部分必须和 usr/root 部分分开打包,即包括 share 部分的 fileset 里不能包含 usr/root 部分,并且包含 share 部分的 fileset 不能和包含 usr/root 部分的 fileset 同名。


图 3 AIX 包结构

在图 3 中,我们可以看到,一个典型的 AIX 软件包中包含 usr 部分和 root 部分。每个部分中又包含着控制文件和安装文件。下面我们将对图 3 中的内容做详细的介绍。

 

上一节我们已经提到安装包的 usr 部分包含两个安装控制文件:lpp_name 和 liblpp.a 以及所有在安装和升级 usr 部分时将被安装的文件。下面我们分别对两个控制文件做一个简单的介绍:

 

  • ./lpp_name

 

这个文件提供了软件包安装和升级的信息 .

 

  • ./usr/lpp/PackageName/liblpp.a

 

这是一个库文件,它包括了安装或升级软件的 usr 部分时所需要的所有控制文件。

 

安装包的 root 部分包含 ./usr/lpp/PackageName/inst_root/liblpp.a 库文件以及所有在安装和升级 root 部分时将被安装的文件。

 

  • ./usr/lpp/PackageName/inst_root/liblpp.a

 

这也是一个库文件,它包括了安装或升级软件的 root part 时所需要的所有控制文件。

 

如果软件产品中包含 share 部分,share 部分必须独立于 usr 和 root 部分被单独的打包。这个部分和 usr 部分非常相似也包换 ./lpp_name 和 liblpp.a 以及所有在安装和升级 share 部分时将被安装的文件。

 

installp 的包管理流程


图 4

 

图 4 显示了 installp 对包进行操作中,所牵涉的资源和文件。下面,我们将对 installp 操作包的流程做详细的介绍。请大家参考图 4 进行理解。

 

installp 对包提供了如下四种主要的操作:

 

  • Apply
  • Commit
  • Reject
  • Remove

 

下面我们分别对 Apply/Reject/Remove 的流程做详细的介绍:

 

installp 处理 Apply 操作的流程:

 

a. 检查所需的 filesets 是否在安装媒介上存在。

 

b. 检查所需的 filesets 的版本,以确定他们是否已经被安装在系统上。

 

c. 解包 liblpp.a 文件,将其中的控制文件按照包的类型拷贝到相应目录。(usr 部分拷贝到 /usr/lpp/Package_Name,share 部分拷贝到 /usr/share/lpp/Package_Name,root 部分拷贝到 /usr/lpp/Package_Name/inst_root/liblpp.a)

 

d. 检查磁盘空间。

 

e. 检查所依赖的包是否已经安装或者在即将安装的软件包列表上。

 

f. 检查 license 。

 

h. 执行安装(拷贝文件,运行安装脚本)并生成 status 文件。

 

g. 如果 status 文件显示 apply 操作成功,更新 ODM 数据库中的 SWVPD 信息,否则清除并显示所有失败的文件。

 

installp 处理 Reject 操作的流程

 

  1. 检查软件包之间的依赖关系,保证所有被依赖的包都已被 Reject 。
  2. 如果 ./lpp.reject 存在则执行 ./lpp.reject,否则执行系统缺省的 /usr/lib/instl/reject 脚本,进行和 Apply 反向的 Reject 操作
  3. 更新 SWVPD 数据

 

installp 处理 Remove 操作的流程

 

a. 检查包之间的依赖关系,保证所有被依赖的包也都被 Remove 。

 

b. 如果 ./lpp.deinstall 存在则执行 ./lpp.deinstall ,否则执行系统缺省的 /usr/lib/instl/deinstall 脚本。

 

c. 删除属于此 fileset 的文件。

 

d. 从 SWVPD 中删除相关信息。

 

e. 删除软件 license 许可。

 

AIX 上的软件包基本维护

 

如何安装软件

 

由第 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 ]

 

AIX 软件包管理 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》(https://www14.software.ibm.com/webapp/set2/sas/f/best/home.html)。

 

问 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

 

总结

 

AIX 对软件包的管理功能非常强大,lpp 结构的软件包使用起来也非常灵活。但是,和其他 UNIX 上的软件包使用上还是有很大的不同之处,由于篇幅所限,本文所涉及的内容非常有限,作为 AIX 系统管理员,只有在日常的工作做多总结,才能做到随心所欲对 AIX 软件包进行管理。



分享到:
评论

相关推荐

    aix32位转换

    对于AIX系统,从64位环境转换到32位环境并非一个简单的任务,它涉及到底层硬件兼容性、软件包重编译以及系统配置的全面调整。以下是对这一过程的深入解析,基于给定文件中的信息,我们将详细探讨如何在AIX下执行64位...

    IBM AIX 文档大礼包

    总的来说,这个IBM AIX的大礼包提供了从理论到实践,从基础到进阶的全方位学习资源,对于任何想在AIX领域提升技能的人来说,都是一个不可多得的学习宝库。通过这些资料,学习者不仅可以了解AIX的基本架构和操作,还...

    AIX.UNIX系统管理、维护与高可用集群建设

    书中详细地从AIX系统的安装与配置、软件包的使用和维护、克隆盘的创建、网络设置与管理以及用户权限管理等基础操作入手,逐步深入到系统架构与工程实践的高级内容。作者不仅在内容上力求系统全面、深入浅出,而且在...

    aix 237试题 aix认证

    000-237试题作为AIX认证的一部分,将涵盖这些领域的实践问题,旨在测试考生的理论知识与实际操作能力。通过这个考试,考生不仅能获得专业的认证,还能深入理解AIX系统的精髓,提升在企业环境中解决复杂问题的能力。...

    AIX初学者入门与提高

    总的来说,《AIX初学者入门与提高》将带领读者全面深入地了解AIX操作系统,从基础操作到高级应用,从理论知识到实践技能,为成为合格的AIX管理员打下坚实基础。通过不断的学习和实践,读者将能够在企业环境中熟练...

    AIX考试题(有答案)

    【AIX操作系统基础】 AIX(Advanced Interactive eXecutive)是IBM开发的一...在准备AIX相关的认证考试时,这样的资源尤其宝贵,因为它提供了实践性的学习材料,帮助考生更好地理解理论知识,并将之应用到实际场景中。

    ibm aix 入门与提高

    【IBM AIX 系统入门与提高】 IBM AIX,全称为“International Business Machines Advanced Interactive ...记住,理论结合实践是提升技能的关键,多动手操作,不断探索AIX的每一个角落,你将成为一名出色的AIX管理员。

    ibm AIX教程

    【IBM AIX教程】 IBM AIX,全称是Advanced Interactive eXecutive,是由IBM开发的一款基于UNIX操作系统的版本,专为...记得理论结合实践,多动手操作,才能更好地掌握这些知识。祝你在AIX的学习旅程上取得丰硕的成果!

    AIX命令索引(PDF英文)_2

    掌握AIX命令不仅需要理论学习,更重要的是通过实际操作来加深理解。你可以尝试在AIX环境中执行这些命令,观察它们的效果,或者在模拟器如QEMU上进行练习。此外,结合"AIX命令索引"中的详细说明,解决实际问题将使你...

    IBM-AIX学习资料经典

    总之,这份"IBM AIX学习经典"资料集全面覆盖了AIX的学习路径,从基础到高级,从理论到实践,是AIX初学者的宝贵教材。通过深入学习和实践,你将能够熟练掌握AIX操作系统,为你的职业生涯打下坚实的基础。

    AIX 学习资料 AU16 课件

    AIX,全称为Advanced ...这些课件可能会包含理论讲解、实践案例和实战练习,有助于理论与实践相结合,快速提升AIX操作技能。同时,学习者还应关注AIX的最新版本和更新,以了解最新的特性和改进,保持知识的时效性。

    AIX最佳实习指导手册

    总的来说,《AIX最佳实习指导手册》将引导你逐步了解并掌握AIX的各个方面,无论是在日常维护还是问题解决上,都将为你提供坚实的理论基础和实践经验。通过深入学习和实践,你将能够熟练地驾驭这个强大的UNIX系统,为...

    AIX系统管理培训资料V4

    这份培训资料应该会包含大量实例和实践操作,帮助学员将理论知识转化为实际技能。对于想要在AIX环境中工作的系统管理员来说,这些都是必不可少的知识点。通过深入学习和实践,可以有效地提升对AIX系统的管理和维护...

    AIX学习总结笔记一

    6. **软件安装与管理**:AIX使用Package Management Facility (PMF) 或RPM(Red Hat Package Manager)进行软件包安装和管理。installp工具负责软件的安装、升级和卸载。 7. **硬件管理**:AIX具有强大的硬件管理...

    IBM+AIX5L+PPT培训教程

    【IBM AIX 5L PPT培训教程】涵盖了AIX操作系统的多个核心方面,包括安装、用户管理、存储管理、性能分析与故障管理、系统服务...每个主题都包含了丰富的实践操作和理论知识,是成为一名合格的AIX系统管理员的必要基础。

    aix sg246191

    在学习过程中,学生应注重实践操作,通过实际动手来加深理论理解。"sg246191.pdf"可能是IBM提供的详细指导手册,建议学生仔细阅读并按照其中的步骤进行练习,同时,配合实验环境进行操作,以提高实际操作技能。 ...

    AIX管理员快速入门

    【AIX管理员快速入门】 AIX(Advanced Interactive eXecutive)是IBM开发的一款高性能、稳定且安全的Unix操作系统,...记住,熟练的AIX管理员不仅需要理论知识,更需要实践能力,以便在复杂的IT环境中应对各种挑战。

    NIM 红皮书 NIM from A to Z in AIX 5L

    《NIM红皮书:AIX 5L中的NIM从A到Z》是一本深入讲解IBM Network Installation Manager...它不仅提供了理论知识,更重要的是,通过丰富的实践案例,展示了如何在真实环境中有效运用NIM,提升AIX系统的部署和管理效率。

    aixII操作系统培训教程

    综上所述,《AIX II操作系统培训教程》全面覆盖了AIX操作系统的学习路径,从基础知识到高级技巧,从理论到实践,为学习者提供了扎实的AIX知识基础。通过深入研读并实践其中的案例,你将能够熟练掌握AIX操作系统,...

    中兴华为面试原题UNIX系列

    【UNIX操作系统基础】 UNIX操作系统是一种强大的多用户、多任务的操作系统,广泛应用于企业级服务器、科研机构以及网络设备中。...在准备过程中,考生应注重理论与实践的结合,提升自己的综合能力。

Global site tag (gtag.js) - Google Analytics