gpt4 book ai didi

linux - 加载共享库 : libssl. so.10 时出错:无法在 Docker 中打开共享对象文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:59 25 4
gpt4 key购买 nike

我正在尝试使用 stunnel 构建图像。

我的基本镜像操作系统是,

Linux 2338b11efbe1 4.9.93-linuxkit-aufs #1 SMP Wed Jun 6 16:55:56 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

如下所示安装 libssl。

RUN apt-get -y update
RUN apt-get -y install libssl1.0.0 libssl-dev && \
ln -s libssl.so.1.0.0 libssl.so.10 && \
ln -s libcrypto.so.1.0.0 libcrypto.so.10

下面的命令列出了库。

RUN ls libssl.so.* libcrypto.so*

输出------>>>

libcrypto.so.10
libssl.so.10

仍然,下面的命令失败了。

RUN ./stunnel

错误:-

./stunnel: error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file or directory

我是否遗漏了这里的任何其他说明。

这是我完整的 dockerfile。

from <BASE_IMAGE>
COPY stunnel .
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get -y update && \
apt-get -y install libssl1.0.0 libssl-dev && \
ln -s libssl.so.1.0.0 libssl.so.10 && \
ln -s libcrypto.so.1.0.0 libcrypto.so.10
RUN ./stunnel

最佳答案

故障模式表明您的 libssl.so.10 是损坏的符号链接(symbolic link)。意思是文件 libssl.so.1.0.0 不存在。

即使符号链接(symbolic link)的目标(尚)不存在,ln -s libssl.so.1.0.0 libssl.so.10 等命令也会成功。损坏的符号链接(symbolic link)上的普通 ls 也不会报告任何异常情况。

如果您想确保符号链接(symbolic link)没有损坏,请使用 test -e 检查每个符号链接(symbolic link)。

更具体地说,使用 ln -s libssl.so.1.0.0 libssl.so.10 作为某种“修复”表明您还有其他问题:soname 的版本组件由 abi -version.patch-level.backwards-compatibility 字段,加载程序使用它来确定给定的库文件(符号链接(symbolic link)或其他方式)是否可能与应用程序请求的库匹配。如您所见,使用 ln 您声称 ABI 版本 1 与 ABI 版本 10 相同。这可能无法按预期工作。

最后,您的 ln 命令使用相对路径,因此您可能在错误的目录中工作——因此您最终会创建损坏的符号链接(symbolic link)。在基于 Debian 的系统上,libssl.so 通常可以在 /usr/lib/x86_64-linux-gnu/ 中找到。 x86_64-linux-gnu 位取决于体系结构(由 Debian 多架构支持定义),这个特定示例对 64 位 x86 代码有效。

关于linux - 加载共享库 : libssl. so.10 时出错:无法在 Docker 中打开共享对象文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56155382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com