Chinaunix首页 | 论坛 | 博客
  • 博客访问: 210549
  • 博文数量: 54
  • 博客积分: 2771
  • 博客等级: 少校
  • 技术积分: 495
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-14 10:19
文章分类

全部博文(54)

文章存档

2013年(1)

2012年(1)

2011年(9)

2010年(19)

2009年(15)

2008年(9)

我的朋友

分类:

2010-11-18 13:46:16

在任何操作系统中安装部署软件,都会要求所安装的软件产品具有特定的格式,比如在 Linux 中,RPM 是最常见的软件安装格式 , 而在 AIX 中,installp 是最常见的软件安装格式。

installp 格式的软件产品根据粒度大小,可以划分为文件集、软件包,许可程序产品等等。这些不同粒度的安装包可以同时安装,也可以分别独立安装。

文件集(fileset)

文件集是 AIX 操作系统中最小独立可安装的基础单元。文件集既可以包括一个完整产品的所有文件和功能(如 bos.rte.edit),也可以是一个软件包中可单独安装,具有相对独立功能的部分(如 bos.sysmgt.nim.master)。

软件包(package)

软件包是一组可单独安装的文件集的集合,该集合提供了一系列相关的功能。例如,bos.sysmgt 是 aix 中系统管理相关的软件包,它包括了 bos.sysmgt.nim.master 等一系列系统管理文件集。

许可程序产品(Licensed Program Products,LPP)

许可程序产品(LPP)是指一个包含了所有和这个许可程序相关的软件包的完整软件产品。例如,BOS 就是一个许可程序产品。

软件集(Installp Bundles)

软件集是一组包含了文件集,软件包或许可程序产品的软件,它们组合在一起为了实现一个特定的功能,例如提供一个安全监控系统或者是网络聊天工具。软件集的存在为安装自定义文件集的组合提供了可能。

这篇文章我们着重介绍有关 Installp Bundle 安装的内容。


之前的内容提到过,在 AIX 上最常见的软件安装格式是 installp,而且它也是 AIX 默认的安装文件格式。在 AIX 5.1 以前,AIX 不支持 installp 以外的软件安装格式,如果一些软件没有创建对应的 installp 安装包,那么这些软件就无法在 AIX 上安装使用,这造成了很多优秀的软件产品在 AIX 上的缺失。

值得庆幸的是,从 5.1 开始,AIX 允许用户通过 SMIT 或者 geninstall(General Install) 命令来进行多种文件格式软件的安装工作。新增的支持格式包括 RPM 格式和 InstallShield MultiPlatform (ISMP) 格式。与此同时,AIX 的安装光盘中也开始包含 installp 格式以外的安装程序。用户可以在安装光盘的 installp/ppc 目录上找到 installp 安装文件,在光盘的 RPMS/ppc 上找到 RPM 安装文件,在光盘的 ISMP/ppc 找到 ISMP 安装文件。

Installp Bundle 安装就是一种支持多种软件格式的安装方式。用户可以编辑 Bundle 文件,指定所要安装软件的名称,相应软件格式等信息,通过 SMIT,geninstall 或者 NIM 等安装工具调用 Bundle 文件,实现软件安装。


Bundle 文件是以 .bnd 为后缀的文本格式的文件,可以通过使用任意的文本编辑器(比如 vi, emacs 等)来进行创建。此外,为了能够被安装程序正常使用,Bundle 文件至少要具有 read 权限。

Bundle 文件的内容包括注释部分和文件集列表部分,如下所示:

#example bundle file

R:zip-2.3-3.aix4.3.ppc.rpm
I:bos.sysmgt.nim.master

其中注释部分的行首以“#”开头,所要指定安装的软件名分列每行,以指代该软件名的安装格式的字母开头。Bundle 文件目前只支持 4 种如软件格式,下面列出了这 4 种格式和其对应的前缀字母:

  • I: installp 格式
  • R: RPM 格式
  • J: ISMP 格式
  • E: interim fix 格式

Bundle 文件通常分为系统 Bundle 文件和用户 Bundle 文件两类,其中系统 Bundle 文件是操作系统安装完成后预设的 Bundle 文件,为方便用户安装那些操作系统没有默认安装的系统软件;用户 Bundle 文件是用户根据自身软件安装需求,自定义的 Bundle 文件。

下面列出了系统 Bundle 文件的一些具体分类:

  • Server Bundle. 这是一组包括了能够使 AIX 操作系统具有多用户,网络管理以及性能工具等服务器特性的软件包。例如 /usr/sys/inst.data/sys_bundles/Server.bnd 就是这种类型的系统 Bundle 文件。
  • Graphics Bundle. 这是一组提供图形环境支持的软件包。这些软件在某些系统上随着 BOS(基础操作系统)一起进行安装。
  • Migration Bundle. 当在 BOS 安装过程中由于没有足够的磁盘空间来完成一个迁移安装的情况下,安装程序会生成一个 Bundle 文件。这个文件的内容包括了一系列需要完成迁移安装而必须安装的软件包。可以使用”smitty update_all”的快捷方式来安装这一类 Bundle。

此外,一些系统 bundle 文件可能需要引用多种外部输入设备作为安装介质。在进行 Bundle 安装的过程中,如果发现系统提示“文件集不存在”之类的错误,那么需要查看一下指定的安装介质是否包含 bundle 中列举的那些文件集。如果没有的话,需要找到包含这些文件集的正确的安装介质再继续进行安装。

用户 Bundle 文件通常是某些用户 ( 通常是高级用户 ) 根据自己的使用习惯或者工作需要而创建的。通常把这些文件放置在 /usr/sys/inst.data/user_bundles/ 目录下。这样当使用 SMIT 工具进行安装的时候可以自动发现这些 Bundle 文件。


从 AIX 5.2 第一个推荐维护版本 (5200-01) 开始,AIX 采用 geninstall 和 gencopy 命令来处理多种安装格式文件的安装。因此,Bundle 文件也增加了一些相应的功能支持。我们知道,在 bundle 文件中以 # 开始的一行内容表示注释 , 而从 AIX 5200-01 开始,又引入了“#MEDIA=”的符号,这个符号后面跟随的内容被操作系统解释为 CD 的名称(如 Install Media Volume 1 or AIX LinuxU+00AE. Toolbox CD),或者是一个本地目录的名称(比如 /usr/sys/inst.images),用来提示用户安装包的安装介质或者存储位置。这个功能避免了在安装 bundle 时被提示指定路径或者存储介质上面没有发现相关内容,却又不知道需要插入哪张光盘的尴尬局面。

举个例子来说,bundle 文件 BaseAndLinuxCD.bnd 包含下面的信息:

# BaseAndLinuxCDBundle contains packages on volume 1 of base media and on the AIX
# Linux Toolbox CD
#MEDIA=Base Install Media Volume 1
I:bos.adt.prof
#MEDIA=AIX Linux Toolbox CD
R:mtools
R:vim-common

当 geninstall 和 gencopy 试图提示需要哪些安装介质来安装 bundle 文件中列出的文件集的时候,将会使用 #MEDIA= 后面使用的词句。在上面的例子中,geninstall 和 gencopy 命令会显示一条信息来通知你 bos.adt.prof 文件集存在于 CD“Base Install Media Volume 1”;mtools and vim-common 的 RPM 包存在于“AIX Linux Toolbox CD”。

“#MEDIA=”后面还可以跟着一个本地目录的名字。举例来说,bundle 文件 CD_Directory 包含下面的内容:

# CD_DirectoryBundle contains packages on volume 1 of base install media
# and in /usr/sys/inst.images

#MEDIA=/usr/sys/inst.images
I:bos.games

#MEDIA=Base Install Media Volume 1	
I:bos.adt.prof
R:cdrecord-1.9-4

和前面的例子相似,geninstall 和 gencopy 命令会提示 bos.games 软件包在 /usr/sys/inst.images 目录下,而 RPM 包 cdrecord-1.9-4 以及 installp 包 bos.adt.prof 存在于 CD Base Install Media Volume 1 中。

从 AIX 5.3 第三个推荐维护版本 (5300-03) 开始,Bundle 文件中可以加入通配符“%L”,它用来指代操作系统的语言环境变量。geninstall 和 gencopy 命令会在 bundle 安装过程中会根据实际环境变量对它进行替换,它们会首先检查的是 LC_ALL 环境变量,如果没有设置这个变量,就会检查 LC_MESSAGES 环境变量,最后,检查 LANG 环境变量。这个功能给软件在多语言环境下的安装带来了很大的方便,它允许使用一个 Bundle 文件可以根据实际语言配置情况,安装相应语言的软件包。

假设有一个叫做 SUPER_SOFT 的产品,里面包括 super_soft.rte 和 super_soft.com 的文件集,同时还包括一个消息文件集和文档文件集,它们包括了英文,法文,德文等不同的版本:

  • super_soft.cat.en_US
  • super_soft.cat.de_DE
  • super_soft.doc.en_US
  • super_soft.doc.de_DE

下面的 bundle 文件会就根据系统语言环境变量对目标系统安装适合的文件集:

  • I: super_soft.rte
  • I: super_soft.com
  • I: super_soft.cat.%L
  • I: super_soft.doc.%L

如果通配符替换为 $LC_ALL,$LC_MESSAGES,$LANG 都没有找到相对应的文件集,那么还会再测试 UTF-8,en_US 和 EN_US 等。


我们可以通过命令 lslpp -Lb 来查看一个 Bundle 包含的文件集是否被安装以及安装后的当前状态。比如,假如希望了解 /usr/sys/inst.data/sys_bundles/CDE.bnd 的状态,我们可以使用如下的命令:

lslpp -Lb CDE.bnd

将会得到如下类似的结果:

Fileset Level State Type Description (Uninstaller)
 ----------------------------------------------------------------------------
 X11.Dt.ToolTalk 6.1.1.0 C F AIX CDE ToolTalk Support
 X11.Dt.bitmaps 6.1.0.0 C F AIX CDE Bitmaps
 X11.Dt.helpmin 6.1.0.0 C F AIX CDE Minimum Help Files
 X11.Dt.helprun 6.1.1.0 C F AIX CDE Runtime Help
 X11.Dt.lib 6.1.1.0 C F AIX CDE Runtime Libraries
 X11.Dt.rte 6.1.1.0 C F AIX Common Desktop Environment
 (CDE) 1.0
State codes:
 A -- Applied.
 B -- Broken.
 C -- Committed.
 E -- EFIX Locked.
 O -- Obsolete. (partially migrated to newer version)
 ? -- Inconsistent State...Run lppchk -v.

Type codes:
 F -- Installp Fileset
 P -- Product
 C -- Component
 T -- Feature
 R -- RPM Package
 E -- Interim Fix


假设所要安装的 bundle 文件叫做 example.bnd,文件内容如下:

#example bundle file

#MEDIA=BASIC BUNDLE INSTALL TEST
R:zip-2.3-3.aix4.3.ppc.rpm
I:bos.sysmgt.nim.master
I:openssl.base
I:openssl.license

包含这些文件集的安装文件如下:

zip-2.3-3.aix4.3.ppc.rpm
bos.sysmgt
openssl.base
openssl.license

不妨将安装文件拷贝到 /home/Bundle_TEST 目录,将 example.bnd 拷贝到 /usr/sys/inst.data/user_bundles

下面的应用实例都此作为基础。

1. 在命令行输入“smitty easy_install”;

2. 输入安装文件所在的设备或者目录,我们这里输入 /home/Bundle_TEST,如下图所示:



3. 选择 bundle,这里选择我们自定义的 bundle 文件 (example.bnd),如下图所示:



4. 设置安装选项,通常我们只需要选择接受 license,其他参数保持默认值。如下图所示:



5. 回车完成设置,开始并完成安装。

在命令行提示符输入下面的命令:

geninstall -I acXY -d /home/BundleTest/ -f example.bnd

  • -I 选项传入 installp 所支持的命令;
  • -d 选项指定安装文件所在的设备或者本地路径;
  • -f 选项指定 bundle 文件的名称。如果该 bundle 文件在 /usr/sys/inst.data/sys_bundles/ 或者 /usr/sys/inst.data/user_bundles/ 路径下,那么无需指定该文件的全路径。

使用 NIM(Network Installation Management) 安装 bundle, 首先需要配置 NIM 环境。NIM 需要两台机器作为 NIM 环境的服务器端和客户端。NIM 环境配置的详细信息请参阅相关文档。

在这种安装方式下,安装文件和 bundle 文件都存在于 NIM 服务器端。

1. 在 nim 服务器上定义 lpp_source:

nim -o define –t lpp_source -a server=master -a 
    location=/home/BundleTest BundleTest_lppsrc

命令执行成功后,在 /home/BundleTest 路径下下的安装文件集合就被定义成了一个名为“BundleTest_lppsrc”的 NIM 对象,类型是 lpp_source。

2. 在 nim 服务器上注册 bundle:

nim -o define -t installp_bundle -a server=master -a 
   location=/usr/sys/inst.data/user_bundles/example.bnd BundleTest_bundle

命令执行成功后,example.bnd 成为一个名为“BundleTest_bundle”的 NIM 对象,类型是 installp_bundle。

3. 在 nim 客户机上安装 bundle:

nimclient -o cust -a lpp_source=BundleTest_lppsrc -a 
    installp_bundle=BundleTest_bundle -a accept_licenses=yes

命令通过指定上面两步定义的 lpp_source 对象和 installp_bundle 对象完成 NIM 安装 bundle。


Bundle 的引入为在 AIX 操作系统安装软件提供了多一种选择。用户可以使用系统定义的 bundle 来安装系统软件,也可以自定义一些 bundle 来满足自己特定的要求。特别是对于多种安装文件格式的情形,bundle 安装带来了很大的方便和灵活性。

阅读(1147) | 评论(0) | 转发(0) |
0

上一篇:粤J-2

下一篇:n-series storage

给主人留下些什么吧!~~