【问题标题】:Unable to find libssl.so.1.0.2 and libssl.so.1.0.2 when trying to use PyODBC on a Docker image尝试在 Docker 映像上使用 PyODBC 时找不到 libssl.so.1.0.2 和 libssl.so.1.0.2
【发布时间】:2019-07-25 16:36:39
【问题描述】:

我有一个使用 python:3(基于 debian)的 docker 文件。我正在按照microsoft docs.

安装 PyODBC 的驱动程序
FROM python:3

RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
    curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list && \
    apt-get update && \
    ACCEPT_EULA=Y apt-get install msodbcsql17 unixodbc-dev -y

我可以构建映像,但是在尝试运行它时出现错误:Can't open lib /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.3.so.1.1

我跑了:ldd /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.3.so.1.1,得到的输出显示以下两个库找不到:

libcrypto.so.1.0.2 => not found
libssl.so.1.0.2 => not found

我也尝试过dpkg --search libssldpkg --search libsslcrypto,结果如下:

libssl1.1:amd64: /usr/lib/x86_64-linux-gnu/libssl.so.1.1
libssl1.1:amd64: /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1

来自ldd /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.3.so.1.1 的其他库正在/usr/lib/x86_64-linux-gnu/ 中提取

对 docker/linux 来说非常新,所以我如何安装 libcrypto.so.1.0.2libssl.so.1.0.2 或降级 '/usr/lib/x86_64-linux-gnu/' 中的版本,以便它们可以用于 msodbcsql17 (试过apt get -y install libssl1.0=1.0.2)?

【问题讨论】:

    标签: linux docker debian pyodbc


    【解决方案1】:

    docker 镜像 python:3 似乎是在 Debian 10 上构建的。

    您正在安装的软件包存储库似乎是为 Debian 9 构建的,并且似乎与 Debian 10 不兼容。

    您可能应该使用the repository with packages built for Debian 10 来获得兼容的软件包。

    【讨论】:

    • 可能类似于this answer 中提到的 Ubuntu 19.04 的情况:他们打算支持它,但显然“我们还没有完全实现”。
    • 本月发生了从 Debian 9 到 debian 10 的切换,因此他们目前不支持 msodbcsql17。因此,与此同时,我正在使用 python:3-stretch 回到 debian 9 构建
    猜你喜欢
    • 1970-01-01
    • 2018-11-19
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 2020-09-06
    • 2017-08-05
    相关资源
    最近更新 更多