我也遇到过这种情况。如果你也遇到过这种情况,也许这个可以帮你节省一点时间。
我正在包含 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_PATH
和LD_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++6
和lib32stdc++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:感谢您的提问,它节省了我数小时的尝试和错误。