15

我正在使用 Ubuntu 12.04 - 服务器并不断获得:

/usr/lib/libcrypto.so.1.0.0:没有可用的版本信息(/usr/lib/libpython2.7.so.1.0 需要)

/usr/lib/libssl.so.1.0.0:没有可用的版本信息(/usr/lib/libpython2.7.so.1.0 需要)

没有任何模式的错误消息说明原因。它可以像运行 vi 一样简单。文件在那里,它们不是链接。

这在编译和安装 OpenLDAP 后开始发生,使用他们网站上的说明,同时学习 ldap 服务器的基础知识。我当然已经删除了 openLDAP 来尝试解决问题。我还重新安装了 OpenSSL 和 libssl1.0.0 以尝试测试该解决方案。

任何帮助将不胜感激,不幸的是谷歌没有用。

4

3 回答 3

14

我想我应该直奔主题...

问题:libssl.so.1.0.0 和 libcrypto.so.1.0.0 没有可用的版本信息警告/错误。

我解决了!耶!!!(烟花应该会熄灭的东西。)

经过大量的研究、时间和努力,(花了几周的时间),这就是我最终要做的事情......

在您最终为您的 openssl 1.0.1h 版本提取源代码的目录中(也应该适用于其他版本。)我创建了一个名为 openssl.ld 的文件

在这个文件里放这个...

回答

OPENSSL_1.0.0 {
    global:
    *;
};

保存。现在输入...

make clean (只是为了确保我们重新开始。)

现在对于真正令人难以置信的部分......

./config --prefix=/usr/local --openssldir=/usr/local/openssl shared -Wl,--version-script=openssl.ld -Wl,-Bsymbolic-functions

然后...

make

make test

make install

ldconfig

那应该这样做。(这很简单。无需修补。)

我已将此解决方案应用于 Debian Wheezy 32 位和 64 位版本。并进行了观察。64 位版本自动默认为在 /usr/local/lib 目录中创建的新 libssl.so.1.0.0 和 libcrypto.so.1.0.0 文件。32 位版本没有。这就是为什么我一开始以为 Debian Wheezy 的 32 位版本没有遇到这个问题,但是一旦您获得 32 位版本以使用 /usr/local/lib 目录中的新 openssl 库,它就会遇到这个问题。

使用 ldd 命令测试二进制文件使用的库对于弄清楚这一点也非常宝贵。

祝你今天过得愉快。

E.杜德先生

于 2014-09-12T19:08:48.143 回答
4

从源代码(openssl-1.0.1f)编译和安装最新版本的 openssl 后,我也收到了令人讨厌的警告消息。经过一些研究以及一些试验和错误,我能够解决我的特定场景的问题。它基本上归结为警告信息所说的内容。从源代码构建的库中没有可用的版本信息。这是 Ubuntu 团队在其发行版中添加的内容。因此,解决方案是在使用包含在 openssl 的 Ubuntu 软件包分发中的版本脚本对其进行修补后重新编译您的 openssl 源。

我在谷歌上搜索了“补丁 openssl 以包含 ubuntu 的版本信息”,并且碰巧在https://launchpad.net/ubuntu/+archive/primary/+files/openssl_1.0.1f-1ubuntu1 找到了我需要的源包。 debian.tar.gz

所以,这是我遵循的过程:

rm -r -f -v openssl-1.0.1f (just to make sure you start fresh)
wget http://www.openssl.org/source/openssl-1.0.1f.tar.gz
tar -xvf openssl-1.0.1f.tar.gz
wget https://launchpad.net/ubuntu/+archive/primary/+files/openssl_1.0.1f-1ubuntu1.debian.tar.gz
tar -xvf openssl_1.0.1f-1ubuntu1.debian.tar.gz
mv debian openssl_1.0.1f-1ubuntu1 (just because that's what I did)
cd openssl-1.0.1f/
patch -p1 < ../openssl_1.0.1f-1ubuntu1/patches/version-script.patch
./config
make
make test
sudo make install

现在,错误消息应该消失了。

值得一提的是,最初我使用来自http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.0.1-4ubuntu5的原始源包中包含的版本脚本修补了我的 openssl-1.0.1f 源.11.debian.tar.gz。但是,我make的失败并出现错误。我想我需要获得相同的版本 1.0.1f 是有道理的。

归功于@mattcasw 他的帖子http://ubuntuforums.org/showthread.php?t=1905963让我走上了正确的道路。

于 2014-03-25T12:21:16.490 回答
1

看看我在这个问题中发布的答案。我想这和你的情况一样。无论如何,我运行了以下命令:

对于 libssl.so.1.0.0:

  • sudo rm /usr/local/ssl/lib/libssl.so.1.0.0
  • sudo ln -s /lib/x86_64-linux-gnu/libssl.so.1.0.0 usr/local/ssl/lib/libssl.so.1.0.0

对于 libcrypto.so.1.0.0:

  • sudo rm /usr/local/ssl/lib/libcrypto.so.1.0.0
  • sudo ln -s /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /usr/local/ssl/lib/libcrypto.so.1.0.0
于 2019-12-25T01:01:41.203 回答