簡體   English   中英

msodbcsql17 安裝失敗

[英]Failing installation of msodbcsql17

我正在嘗試更新使用 python:3.9 作為基礎的 docker 映像(使用 Debian GNU\/Linux 10(buster)),但現在它失敗了,之前的步驟沒有問題。 新圖像 sha 是@sha256:8f642902ba368481c9aca0a100f08daf93793c6fa14d3002253ea3cd210383a7<\/code> ,我使用的命令可以在這里找到https:\/\/docs.microsoft.com\/en-us\/sql\/connect\/odbc\/linux-mac\/installing-the-microsoft- odbc-driver-for-sql-server?view=sql-server-ver15#debian17<\/a> 。

這是輸出錯誤:

#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

TL;DR:使用 Debian 11 的 Bullseye 構建現在是 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 9升級到Debian 11

但是,對於生產系統,我建議將次要版本號修復為適合您的版本號。

正如@AlwaysLearning 在評論中提到的,確實 debian 版本已更新。 我使用 python:3.9-buster 作為基礎解決了這個問題

根本原因是 MS DB 驅動程序與新發布的 Python 3.9 映像使用的 Debian 發行版不兼容。 您可以通過查看注冊 MS 存儲庫的 dockerfile 中的配置來驗證它。 它將特定於較舊的 Debian。

如果 MS 驅動程序支持新的 Debian,那么您可以在其 db 驅動程序的 MS 官方文檔中找到更新的配置。

如果 MS Driver 不支持新的 Debian,那么您需要使用仍然基於支持的 Debian 版本的 Python 映像的變體,並保留存儲庫配置。

對我來說,唯一的解決方法是將 Dockerfile 中的基本映像從FROM python:3.6-buster更改為FROM --platform=linux/amd64 python:3.6-buster 在 M1 芯片(蘋果)上構建映像的人可能需要 --platform 標志。

如果您不想更改 Dockerfile 中的平台規范,您可以在構建映像時將其添加為docker build --platform=linux/amd64並且應該也可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM