Ubuntu 12.04 上的 64 位 DB2 10.5 缺少 32 位 libpam 和 64 位 libaio

Ubuntu 12.04 上的 64 位 DB2 10.5 缺少 32 位 libpam 和 64 位 libaio

我也遇到过这种情况。如果你也遇到过这种情况,也许这个可以帮你节省一点时间。

我正在包含 LAMP 堆栈的 SoftLayer 64 位 Ubuntu 12.04 Linux 系统上安装 64 位 DB2 10.5 服务器(不确定具体是什么产品包 - 有人给了我)。

首先,结论是:事实证明我缺少 32 位 libpam 和 64 位 libaio,因此需要执行以下操作:

   apt-get install libpam0g:i386 libaio1

大多数人的经历无疑会有所不同。如果只有部分经验适用于您,并对您有帮助,这里有更多详细信息。

安装之前,db2prereqcheck抱怨:

   DBT3514W  The db2prereqcheck utility failed to find the following
   32-bit library file: "/lib/libpam.so*".

果然,我得到的只有:

   /lib/x86_64-linux-gnu/libpam.so.0.83.0
   /lib/x86_64-linux-gnu/libpamc.so.0
   /lib/x86_64-linux-gnu/libpam.so.0
   /lib/x86_64-linux-gnu/libpam_misc.so.0.82.0
   /lib/x86_64-linux-gnu/libpamc.so.0.82.1
   /lib/x86_64-linux-gnu/libpam_misc.so.0

在网上浏览了一下之后,我这样做了:

   apt-get install libpam0g:i386

之后我还得到了:

   /lib/i386-linux-gnu/libpam.so.0.83.0
   /lib/i386-linux-gnu/libpamc.so.0
   /lib/i386-linux-gnu/libpam.so.0
   /lib/i386-linux-gnu/libpam_misc.so.0.82.0
   /lib/i386-linux-gnu/libpamc.so.0.82.1
   /lib/i386-linux-gnu/libpam_misc.so.0

但 db2prereqcheck 仍然提出同样的抱怨。

网络上推荐了一些地方:

   ln -s /lib/i386-linux-gnu/libpam.so.0 /lib/libpam.so.0

但在我看来,这似乎是一种可怕的黑客行为,这肯定会让我在以后的不同应用程序中陷入不同的麻烦。

我尝试了许多使用环境变量的方法,包括 LD_LIBRARY_PATHLD_LIBRARY_PATH_32,但都对没有任何帮助db2prereqcheck

我信任的人说无论如何都要继续安装。所以我就这么做了

   db2_install

(它是一个远程无头系统),尽管作为安装的一部分运行的 db2prereqcheck 发出了抱怨,但安装做过工作。

遗憾的是,db2start 抱怨道:

   sqllib/adm/db2start: error while loading shared libraries:
   libaio.so.1: wrong ELF class: ELFCLASS32

我信任的一个人推荐道:

   apt-get install libaio1

安装了 64 位 libaio (之前我的系统只包含 32 位),之后我得到:

   /lib/i386-linux-gnu/libaio.so.1.0.1
   /lib/i386-linux-gnu/libaio.so.1
   /lib/x86_64-linux-gnu/libaio.so.1.0.1
   /lib/x86_64-linux-gnu/libaio.so.1

此后,一切都很顺利。

再次强调,底线是:我缺少 32 位 libpam 和 64 位 libaio。

顺便说一句,我的系统映像已经包含了软件包libstdc++6lib32stdc++6 ——许多人似乎在他们的环境中缺少的东西。

希望这可以帮助。

答案1

在 Ubuntu 服务器 14.04.02(64 位)上,我必须在安装 DB2 10.5 之前安装以下软件包:

  • libx32stdc++6
  • libpam0g:i386
  • libaio1

答案2

您可能必须ldconfig在安装 i386 版本的 pam 库后运行;DB2 会在链接器缓存中搜索它的依赖项,因此如果它已安装并且中有一个条目/etc/ld.so.cache.d/,它应该会找到它(如果ldconfig已运行)。

运行类似的程序strace db2 connect to sample将会给你提供很多信息。

答案3

ln -s /lib/i386-linux-gnu/libpam.so.0 /lib/libpam.so.0

尽管有点丑陋,但这对我来说还是很有效的。

apt-get install libpam0g表示一切都已安装并更新。

答案4

尝试使用 Ubuntu 20.04 LTS 安装 DB2 时,可以使用以下命令安装缺少的软件包:

sudo apt-get install libpam0g-dev:i386

注意:libpam0g-dev 包比 libpam0g 包安装更安全,因为它可以安全地仅用于开发编译和要安装的设置软件。

注2:amd64 已经存在 20 多年了,也许 IBM 有一天会将 DB2 更新到 amd64。

注3:感谢您的提问,它节省了我数小时的尝试和错误。

相关内容