【问题标题】:no version information available没有可用的版本信息
【发布时间】:2023-03-19 16:30:01
【问题描述】:

我正在使用 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 以尝试测试该解决方案。

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

【问题讨论】:

  • 您的包管理器似乎没有为 /usr/lib/libcrypto.so 和 /usr/lib/libssl.so 提供正确的符号链接

标签: ubuntu openldap libssl libcrypto


【解决方案1】:

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

问题: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.老兄

【讨论】:

  • 效果很好!!!。谢谢。顺便说一句,我使用了版本脚本的绝对路径。例如,--version-script=/home/userid/openssl/openssl.ld
  • 此方法是否适用于相同的消息,但适用于 libnl 库?
  • 在官方和手动编译的库上运行readelf -s 也很有用。使用上面提到的版本脚本,所有符号都有一个后缀@OPENSSL_1.0.0,而没有那个版本脚本,它们没有后缀。
【解决方案2】:

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

我在 Google 上搜索了“patch 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.11.debian.tar.gz 的原始源包中包含的版本脚本修补了我的 openssl-1.0.1f 源。但是,我的 make 因错误而失败。我想我需要获得相同的版本 1.0.1f 是有道理的。

感谢@mattcasw 他的帖子http://ubuntuforums.org/showthread.php?t=1905963,这使我走上了正确的道路。

【讨论】:

    【解决方案3】:

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

    对于 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 1970-01-01
      • 2021-05-09
      相关资源
      最近更新 更多