上一主题: Ubuntu Linux 分发的组件安装

下一主题: Windows 的组件工具包安装

RedHat 和 CentOS Linux 分发的组件工具包安装

文件
兼容性

apk-*-linux-rh 版本与下列操作系统 distro 兼容:

要安装 APK,您需要下面两项之一:

如果将使用 APK 提供的内核和 initrd 文件,则映像必须与 ext3 文件系统在一起。

准备映像

重要信息! APK 的 Linux 版本仅使用 CA 3Tera AppLogic 提供的 Linux 内核内部版本支持 PVM 虚拟机设置。 安装脚本将清除在目标映像上找到的任何 GRUB 配置文件,使其无法以 HVM 模式启动。 保存 GRUB 文件(并且不清除下面列出的默认操作系统内核)也许可以在 HVM Linux 域上使用 APK,但这不受支持,且不保证能工作。 特别要指出的是,干净的组件关闭将不会在 HVM 模式下工作,而且根据 CA 3Tera AppLogic 类描述符中指定的挂接路径自动挂接卷的操作也不会在 HVM 模式下工作。

下列步骤可能有所不同,具体取决于操作系统最初是如何安装的。 它们不会由 APK 设置脚本执行,而是会留待管理员处理,因为如果在实际系统上(而不是在正在准备的映像上)被意外完成的话,其中一些操作可能具有攻击性,甚至可能具有破坏性-因此在自动化脚本中运行它们可能是不可取的。 跳过任何不适当的步骤。

准备映像

  1. 确认磁盘映像是 ext3 文件系统。

    如果操作系统安装为 ext2,请执行以下命令将映像转换为 ext3。

    tune2fs -j
    

    要使用 ext2(或除 ext3 之外的任何文件系统),需要重新构建 APK 附带的 initrd 文件。

  2. 执行以下命令删除网络配置文件:
    rm /etc/sysconfig/network-scripts/ifcfg-eth* 
    
  3. 编辑 etc/fstab 文件,并将根设备的名称更改为 /dev/hda1。

    如果安装程序发现根设备是由标签或 UUID 指定的,还将进行检查并显示警告。

  4. 执行以下命令删除内核程序包(如果您构建的是要在硬件模拟模式下运行的映像,请跳过此步骤)。
    rpm --root path/to/image -e --nodeps kernel
    

    或者,如果在 vol manage shell 中执行这一操作:

    chroot  path/to/image rpm -e --nodeps kernel 
    
  5. 卸载不再使用的任何操作系统服务

注意:在清理之后,卷可能会缩小,从而为组件生成一个较小的启动卷映像,但是请确认至少剩余 10-15MB 的可用空间,从而有空间安装 XEN DomU 内核和 APK,并为日志文件、临时文件等留出一些净空。

安装 APK

此处提供的安装说明假定:正在通过安装干净的操作系统、将其关闭再创建启动磁盘映像,或者使用新版本的 APK 升级现有 CA 3Tera AppLogic 组件,在一个并未实际运行、但已提前准备好的操作系统映像上执行 APK 安装。

也可以进行实际安装(在运行的操作系统上),并且可以与 CA 3Tera AppLogic Service Pack 2.4.5 及更高版本中提供的 iso2class 实用工具一起使用。 不过请注意:iso2class 将为您创建 HVM 组件,且 APK 不会以 HVM 模式工作;必须在安装 APK 后将组件更改为并行虚拟化模式。 要安装在实际系统上,请遵循以下步骤,但是使用 / 作为所有操作的当前目录。 最好是在 XEN 虚拟机中完成这一操作(例如:使用 iso2class),在裸机系统上进行这一操作将导致计算机不可启动。

安装 APK

  1. 将操作系统映像挂接到您的文件系统中。

    如果映像已在 CA 3Tera AppLogic 网格上安装为卷,就可以使用 vol manage 命令访问此映像。

  2. 将 APK 文件复制到映像本身的 /tmp 目录或挂接映像的主机上的临时目录。 如果映像已位于网格上,使用 Web 界面将文件复制到映像本身。 (如果不在网格上执行这一操作:请注意必须以根用户身份完成下列操作。)

重要信息:APK 的操作需要 dhclient 程序包。 默认情况下它不会安装到 CentOS5 上。 安装 APK 前在您的映像上安装 dhclient 程序包。

使用 chroot,dhclient RPM 可以安装到非实际的操作系统映像上(例如:挂接到 vol manage shell 中)。 RPM 应该可用于任何 CentOS 镜像站点(例如: http://mirror.stanford.edu/yum/pub/centos/5.1/os/i386/CentOS/dhclient-3.0.5-7.el5.i386.rpm)

安装 dhclient 程序包

  1. 将 DomU 内核和 APK 二进制存档拆包到映像的根目录中。 以下是要执行的命令的一个示例:
    cd /mnt/vol 
    tar -zxf tmp/domu-linux-2.6.18.8.386.tar.gz # ** 请看下面的备注! 
    tar -zxf tmp/apk-2.0.14-rh.tar.gz 
    

    设置脚本将拆包到 ./tmp 目录中。

    重要信息! 请使用与您的 distro 体系结构相对应的 domu-linux 存档。 无法在 64 位 distro 上安装 32 位内核。

  2. 运行以下设置脚本:
    tmp/apk-install 
    

    现在可通过执行以下命令删除设置脚本和 tar 文件(如果它们已复制到映像本身):0

    rm tmp/apk-install tmp/domu-linux-*.tar.gz tmp/apk-*.tar.gz 
    

    注意:APK 提供的 init 脚本不再支持 /appliance 内安装的组件特定脚本。 如果有这样的脚本存在,则安装脚本将停止并提示用户输入信息。 如果没有在此目录中进行组件特定的自定义(即,其内容与在 LUX 上找到的相同或相似),则可以放心地将其删除。 现在由 APK 提供所有用于在那里安装的标准功能。 否则,单击“保存到 /tmp”,并继续安装。

  3. 取消挂接映像并将其导入您的 CA 3Tera AppLogic 网格(或关闭 vol manage shell,如果此映像已经位于您的网格上并且是使用 vol manage 编辑的)。
  4. 如果映像属于现有的组件,请执行以下操作:
    1. 编辑类(使用 GUI 编辑器)并删除内核和 initrd 文件名。
    2. 将配置模式设置为 dhcp。
组件 Init 配置

如果文件 /etc/sysconfig/applogic_init 存在,APK init 脚本会将其读取为 shell include 脚本(使用 "." 命令)。 下列参数可在 /etc/sysconfig/applogic_init 中定义:

APK_AUTH_KEY_PATH

存储组件 SSH 访问公钥的位置。 3t comp ssh 命令使用匹配的私钥连接到组件。 默认值是 /root/.ssh。 设置为空字符串的密钥不会存储在任何位置。
如果指定的位置是现有的文件,将保留其所有者和权限。 否则将使用所有者 root 创建此文件。

APK_CONFIG_FILES

要应用组件属性的文件的列表(以空格分隔)。 这将替换在 GUI 的“修改边界”对话框中指定的配置文件列表(对于不使用 APK 的组件)。 配有 APK 的组件使用在此组件上找到的 APK_CONFIG_FILES 列表,而不是在 GUI 中指定的列表。
重要信息:如果在现有组件中安装 APK-请使用编辑器 GUI 检查类描述符中是否存在“查看类/修改边界”对话框“配置文件”选项卡中找到的配置文件。 将文件列表传输到组件中的 APK_CONFIG_FILES 设置。

 重要信息! /etc/sysconfig/applogic_init 文件是在检索或应用任何配置数据之前执行的,因此脚本不能依赖于组件的任何配置文件的存在。 不要使用此文件来执行初始化代码,而只能将其用于以上定义的配置变量。

示例 /etc/sysconfig/applogic_init:

APK_CONFIG_FILES=/etc/httpd/conf.d/myconfig.conf 
APK_AUTH_KEY_PATH=/root/.ssh/alternate_keys 
组件启动后检查

如果文件 /etc/sysconfig/applogic_appliance 存在,APK late init 脚本会在组件上的所有服务都启动后将该文件读取为 shell include 脚本(使用 "." 命令)。 脚本的返回状态表示该组件将被视为启动成功还是失败。 如果脚本将消息输出至 stderr 并返回错误,则此消息的最后一行将被用作发送至控制器的错误消息。

Web 服务器组件的启动后检查文件示例-确认服务器已启动并响应主页的 HTTP GET:

if ! wget -q -O /dev/null http://localhost/ ; then
echo "start failed - Web server is not responding" >&2
return 1
fi
return 0

重要信息! 系统目录中的一些组件使用位于 /appliance 中的自定义脚本来初始化服务。 这不再受支持。 在安装 APK 时此目录会被删除,以保持根目录结构简洁且符合文件系统层次结构标准。 可以将这些脚本中的代码移动到 /etc/sysconfig/applogic_appliance,以模仿旧的行为,但这不是启动后检查文件的意图,所以不建议这么做。 相反,已安装的服务应当有自己的 init 脚本,并且通常应当完全能在 CA 3Tera AppLogic 以外工作。