【问题标题】:Failing installation of msodbcsql17msodbcsql17 安装失败
【发布时间】:2021-10-21 01:37:37
【问题描述】:

我正在尝试更新使用 python:3.9 作为基础(使用 Debian GNU/Linux 10 (buster))的 docker 映像,但现在它失败了,之前的步骤没有问题。 新的图像sha是@sha256:8f642902ba368481c9aca0a100f08daf93793c6fa14d3002253ea3cd210383a7,我使用的命令可以在这里找到https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15#debian17。

这是输出错误:

#20 0.380 Reading package lists...
#20 0.838 Building dependency tree...
#20 0.942 Reading state information...
#20 0.998 Some packages could not be installed. This may mean that you have
#20 0.998 requested an impossible situation or if you are using the unstable
#20 0.998 distribution that some required packages have not yet been created
#20 0.998 or been moved out of Incoming.
#20 0.998 The following information may help to resolve the situation:
#20 0.998
#20 0.998 The following packages have unmet dependencies:
#20 1.049  libodbc1 : PreDepends: multiarch-support but it is not installable
#20 1.049  odbcinst1debian2 : PreDepends: multiarch-support but it is not installable
#20 1.062 E: Unable to correct problems, you have held broken packages.
------
executor failed running [/bin/sh -c ACCEPT_EULA=Y apt-get install -y msodbcsql17]: exit code: 100

有谁知道为什么它停止使用新的图像版本?

【问题讨论】:

  • 以下包有未满足的依赖关系是由于包引用不正确。在这种情况下,docker run -it --rm "python:3.9" cat /etc/os-release 报告:Debian GNU/Linux 11 (bullseye)。

标签: python sql-server docker debian


【解决方案1】:

TL;DR: 使用 Debian 11 的靶心构建现在是 python 3 基础映像的默认设置。您可以切换到“-buster”构建或将次要版本号修复为之前的版本。

我昨天遇到了同样的问题,并通过恢复到以前版本的 python 基础映像来解决它。

在您的 Dockerfile 中,如果您使用的是:

FROM python:3.9,然后改成FROM python:3.9.5

FROM python:3.8,然后改成FROM python:3.8.10

FROM python:3.7,然后改成FROM python:3.7.10

FROM python:3.6,然后改成FROM python:3.6.13

这并不能解决根本原因,并且会阻止您在基础 Docker 映像的次要版本升级中获得修复。

或者,您可以坚持使用 buster 版本,例如 python:3.9-buster。

bullseye 版本于 4 天前发布,并成为所有 python 3 图像的默认版本。这包括升级到Debian 11 from Debian 9。

但是,对于生产系统,我建议将次要版本号修复为适合您的版本号。

【讨论】:

    【解决方案2】:

    正如@AlwaysLearning 在 cmets 中提到的,debian 版本确实已更新。我使用 python:3.9-buster 作为基础解决了这个问题

    【讨论】:

      【解决方案3】:

      根本原因是 MS DB 驱动程序与新发布的 Python 3.9 映像使用的 Debian 分发版本不兼容。您可以通过查看注册 MS 存储库的 dockerfile 中的配置来验证它。它将特定于旧版 Debian。

      如果 MS Driver 支持新的 Debian,那么你可以在他们的 db driver 的 MS 官方文档中找到更新的配置。

      如果 MS Driver 不支持新的 Debian,那么您需要使用仍然基于支持的 Debian 版本的 Python 镜像变体,并保留存储库配置。

      【讨论】:

        猜你喜欢
        • 2023-01-11
        • 2019-03-14
        • 2018-10-28
        • 2021-09-01
        • 1970-01-01
        • 2013-02-24
        • 1970-01-01
        • 2017-08-14
        • 2021-05-06
        相关资源
        最近更新 更多