2. 安装

不同版本的 Linux 版 ASE 在安装和配置步骤上略有不同。产品附带的安装文档非常详细,因此我将尝试侧重于一些替代方案,以避免常见问题。 特别是,我将描述如何在不使用 RPM 的情况下进行安装,因为 RPM 实用程序是 Linux 独有的功能,大多数具有其他类型 UNIX 背景的 Sybase DBA 更喜欢避免使用这种格式,而是使用传统的安装方式。 但是,我也将描述在使用 RPM 时如何更安全地操作。

2.1. 针对心急用户的超快速 RPM 安装

如果您只是进行测试,只需安装sybase-commonsybase-aseRPM,使用 rpm -ihv 作为 root 用户。安装程序应创建 sybase 用户并自动启动配置脚本。 对于 11.0.3.3 版本,只需要sybase-ase软件包。
bash$ su - root
Password:
bash# rpm -ihv sybase-common-12.5-1.rpm sybase-ase-12.5-1.rpm
我强烈建议您通读软件附带的任何文本文件(例如README),以及 Sybase 文档网站(也称为 SyBooks)上的 “Release Bulletin” 和 “Installation Guide” 文档。 这些文档将包含大量重要信息,我已尽力避免重复这些工作。

2.2. 所有安装的预安装步骤

  1. 首先要检查的是您的 Linux 安装是否能够运行您选择的 ASE 版本。 RPM 实用程序将在安装期间尝试检查这一点,但您可以使用 rpm -qRp <package> 提前检查依赖项。 RPM 将对照您机器上已安装产品的 RPM 数据库进行检查,如果这些产品的版本号低于要求,您将收到错误消息,并且首先需要更新这些软件包才能进行安装。 请注意,如果 RPM 数据库中找不到软件包名称,您也会收到错误消息。 如果您在不使用 RPM 的情况下安装了软件(例如,从源代码编译,而不是 SRPM),或者软件包的名称与 ASE 软件包列出的依赖项的名称不同(例如,RedHat 将 Linux 内核放在名为 “kernel” 的软件包中,SuSE 对默认内核使用 k_deflt,对其他提供的内核(如 k_smp)使用其他名称),则可能会发生这种情况。 然后,您可以使用 uname -r 检查内核版本,glibc 版本很可能就是 ldd --version 报告的版本,但也要执行 ls -l /lib/ 并检查符号链接/lib/libc.so, /lib/libpthread.so/lib/librt.so链接到的实际文件名。

    Note认证的操作系统级别
     

    Sybase 选择认证的发行版是 RedHat。 对于 11.0.3.3 或 11.9.2 的安装,您可能可以使用任何发行版,对于较新的 12.5.0.x 企业版功能,您必须准确检查认证的发行版,并且仅使用该特定的 Linux 发行版和发行级别。 不要期望除认证的操作系统级别之外的任何其他系统都能工作。 安装文档列出了最低要求的内核和 glibc 版本。

    ImportantGlibc 特定问题
     

    glibc 存在一些已知问题,这些问题会导致 ASE 出现严重问题。 基本上,您会在启动服务器时看到段错误(错误日志会显示有关进程感染了信号 11 的信息,然后转储堆栈跟踪)。 在任何未认证的平台上,包括当前的 RedHat 9.0,在 12.5.0.1 以上的版本中都会看到这些问题。 您必须使用经过认证的 Linux 发行版和版本(RedHat 7.2、RedHat Advanced Server 2.1),并确保 i686 glibc 库中包含适当的修复程序(从 RedHat Network 更新它们)。 特别是,在撰写本文时,当前的 ASE 版本 (12.5.0.3) 在当前的 RedHat 版本 (9.0) 上以及下一个企业服务器 (3.0) 的 beta 版上都无法工作,原因是 glibc 问题! RedHat 正在努力解决这个问题,企业服务器的发布应该是有序的。 请参阅 RedHat 错误 90002 和 102995 以及 Sybase 在 CR 326398 下进行的研究。 希望这最终会渗透到 FSF/GNU glibc 发行点,然后渗透到各种其他发行版。

  2. 检查可用磁盘空间。 您最初需要空间来安装二进制文件和系统数据库。 这在安装指南中列出,但是您将需要额外的空间来创建数据库,并且您必须估算您需要的空间大小。

    表 1. 默认安装目录

    版本专用于 ASE 的最小 RAM应用程序磁盘空间系统数据库设备
    11.0.3.3˜15 MB110 MB17 MB master 12 MB sysprocsdev
    11.9.2.x˜32 MB140 MB25 MB master 45 MB sysprocsdev
    12.5.0.x˜50 MB215 MB30 MB master 100 MB sysprocsdev

  3. 在检查 ASE 可以安装之后,创建 sybase 用户组,然后创建 sybase 用户作为其成员。 这是一个普通用户,主要用于启动数据库服务器,因此该用户必须拥有所有与 ASE 相关的文件。 我建议您将该用户的 home 目录与其他普通用户的 home 目录放在一起,而不是将 ASE 软件的安装目录用作 home 目录。 使用 adduseruseradd 或您的发行版提供的任何 GUI 实用程序。
    bash$ su - root
    bash# groupadd sybase
    bash# useradd -g sybase -d /home/sybase -c "Sybase ASE DBA account" -p Hard2Guess sybase
    
    如果您先自行创建了用户,则安装脚本不会尝试创建用户。

完成这些步骤后,我们就可以将软件卸载到 ASE 将要安装的基础目录中。 默认情况下,RPM 软件包配置为将此目录放在/opt/<sybase-directory>其中 <sybase-directory> 是

表 2. 默认安装目录

版本目录
11.0.3.3/opt/sybase/
11.9.2.x/opt/sybase-11.9.2/
12.5.0.x/opt/sybase-12.5/
如果您愿意,可以选择不同的位置,可以使用--relocate参数传递给 rpm,或者如果您首先转换为 .tgz 文件,则解压缩到不同的目录。 同样,我建议为 sybase 用户保留一个正常的 home 目录,一个用于 ASE 软件的目录,以及第三个用于数据库存储的位置。

2.3. 将软件卸载到磁盘,第 1 部分:做出经过深思熟虑的决定

在准备好环境之后,就该将软件写入磁盘了。 您可以使用 RPM 安装,也可以先将 RPM 软件包转换为另一种格式。 这里将介绍这些选项,以及您为什么要选择其中一种。

2.3.1. RPM 的问题以及如何避免这些问题

那么,为什么说 RPM 不好呢? 好吧,只要您在最新的可用 RedHat 版本上安装最新的 ASE 补丁,您可能不会遇到太多问题。 但是,您也可能会发现,RPM 安装会根据您在哪个 RedHat 版本(或其他发行版)上安装哪个版本的 ASE(或 EBF)而导致以下问题。

RPM 的已知问题及其解决方法

问题: RPM 安装 ASE 或应用 EBF 将截断/etc/ld.so.conf文件。

症状: 在 RPM 安装 ASE 后,如果截断您的/etc/ld.so.conf文件为 0 字节,使您的操作系统安装忘记在哪里可以找到共享库。 这可能会影响 X、sshd 和其他几个程序。

原因: 安装后脚本。 您可以使用 rpm -qp -scripts <package> 查看它们。 它们尝试使用名为$RPM_INSTALL_PREFIX的变量,但该变量显然未由较新版本的 RPM 实用程序设置。

临时解决方法 1: 首先复制所有将被安装程序破坏的文件。/etc/ld.so.conf, .profile.cshrcsybase 用户的这两个文件应该在安装前复制到安全位置。 然后按照 Sybase 说明进行安装,并在完成后将文件复制回去。 当正确的/etc/ld.so.conf就位后,以 root 用户身份运行 ldconfig

临时解决方法 2: 首先设置$RPM_INSTALL_PREFIX到 ASE 文件将要安装的顶层目录(将成为$SYBASE).

临时解决方法 3: 使 RPM 在不运行脚本的情况下安装;rpm -ihv --noscripts

问题: .profile 和 .cshrc 被覆盖

症状: RPM 安装将覆盖 $SYBASE 目录中的.profile.cshrc文件。 如果这是 sybase 用户的 home 目录,并且您已个性化这些文件以包含首选设置,则您将不得不在之后重写它们。

原因: 这些文件位于 ASE 12.5 中的 $SYBASE/install/ 目录中。 在 RPM 安装期间调用的脚本 $SYBASE/install/sybinstall.sh 会将这些文件复制到 $SYBASE。

临时解决方法 1: 在安装前备份这些文件,并在安装完成后复制回去。

临时解决方法 2: 使 RPM 在不运行脚本的情况下安装;rpm -ihv --noscripts

临时解决方法 3: 为 sybase 用户创建一个与安装目录 ($SYBASE) 分开的 home 目录 ($HOME)。

问题: RPM 声称已安装的库甚至内核不是批准的版本或未安装。

问题: RPM 安装报告说必须安装某些版本的操作系统 rpm,例如内核或 glibc,但是您验证它们是正常的。

原因: 如果 RPM 无法确定您是否安装了正确版本的内核和 glibc,则 RPM 安装可能会失败。 例如,SuSE 将其默认内核 rpm 软件包称为 “k_deflt”,其他内核以其主要功能命名(smp、athlon 等)。 Sybase RPM 搜索 “kernel”,因为那是 RedHat 使用的名称。

临时解决方法: 绝对确保您确实拥有这些软件包的所需级别。 然后使用 rpm -ihv --nodeps --force 强制安装。

2.4. 将软件卸载到磁盘,第 2 部分:完成工作

除非上述问题描述吓到了您,否则您可能希望使用 RPM 并进行一些额外的修改。 我们将禁用 RPM 尝试提供的帮助但最终导致麻烦的行为,而必须在之后手动进行一些更正。

2.4.1. 手动 RPM 安装

为了安全起见,我们首先复制出有风险的文件;/etc/ld.so.conf, <sybase 用户 home 目录>/.profile<sybase 用户 home 目录>/.cshrc。 我选择添加的开关是

--relocate
--nodeps
--noscripts

现在,挂载 CD 或使用 FTP 下载文件,然后 cd 到此目录。 以 root 用户身份,使用以下命令安装文件
rpm -ihv --relocate /opt/sybase-12.5=/opt/sybase --nodeps --noscripts sybase-common* sybase-ase*
作为服务器配置的一部分,我们现在需要进行我们在停止 RPM 脚本执行时禁用的更改,使用--noscripts.

2.4.2. 使用 RPM 替代方案

用于在不使用 RPM 的情况下进行安装的几个常用实用程序是 rpm2tgz 和 alien。 您可以使用其中任何一个首先转换为 tgz 软件包,然后解压缩文件,而无需运行任何 RPM 脚本。 RPM 实用程序的发行版还附带一个名为 rpm2cpio 的程序,该程序将转换为 cpio 归档文件。

  • alien: http://www.kitenet.net/programs/alien/

  • rpm2tgz: 这显然是 Slackware 和 TurboLinux 附带的实用程序的名称。 TurboLinux 文件表明它只是 rpm2cpio 和 cpio2tgz 的包装器,后者实际上会将 cpio 归档文件解压缩到临时目录中,然后将其重新打包为 tgz。

  • rpm2cpio: 这是 RedHat Package Manager (RPM) 发行版的一部分,因此如果您安装了 rpm,则应该已安装它。 您将需要 cpio 以及它。

alien 实用程序可以使用 alien -g 解压缩 rpm,也可以使用 alien -t 创建 tgz 归档文件。
bash$ su -
Password:
bash# alien -t sybase-ase*.rpm sybas-common*.rpm
sybase-common-12.5.tgz generated
sybase-ase-12.5.tgz generated

rpm2tgz 实用程序执行相同的操作,将 rpm 转换为 tgz 归档文件。
rpm2tgz sybase-ase*.rpm
rpm2tgz sybase-common*.rpm

RPM 的发行版包含 rpm2cpio 实用程序,它从文件或 STDIN 读取 rpm,并在 STDOUT 上输出 cpio 归档文件。
rpm2cpio sybase-ase-12.5-3.i386.rpm > sybase-ase-12.5-3.i386.cpio
rpm2cpio sybase-common-12.5-3.i386.rpm > sybase-common-12.5-3.i386.cpio

从 RPM 创建 .tgz 归档文件后,您可以解压缩它。 由于归档文件中的路径是相对于 / 的,因此您需要以 root 用户身份执行此操作。
bash$ su -
Password:
bash# tar -xvzf sybase-ase*.tgz
bash# tar -xvzf sybase-common*.tgz
对于 cpio 归档文件,请使用 cpio 命令解压缩它
cpio --extract --make-directories --verbose