为 Debian 安装 Microsoft ODBC 驱动程序

为 Debian 安装 Microsoft ODBC 驱动程序

因此,我的apt-get install返回结果为E: Unable to locate package msodbcsql(错误代码 100)。我正在尝试使用我的系统访问 SQL Server 数据库,因此我遵循微软的说明安装其 Linux 驱动程序。

我尝试指定软件包版本:apt-get install -y msodbcsql17并使用 Debian 8 和 9 的软件包。我尝试确认系统版本,因为我实际上是从构建 Docker 容器Debian:stretch-slim -> Python:3.6-slim,并且我倾向于 Debian 8,因为其他图像中的版本号明确为 9。

尝试安装该软件包时我可以选择哪些选项?还有其他方法或故障排除步骤吗?

提前致谢。我对 Linux 还很陌生,所以任何指点我都非常感谢!

编辑

根据bash:cat /etc/debian_version我的版本其实是9.5。

答案1

我按照微软文档中的说明使用 python:3.6-slim,它似乎安装正确,但有一些注意事项

您需要这些软件包才能按照说明操作

apt-get update && apt-get install -y curl apt-transport-https gnupg2

Docker 镜像没有 curl,使用带有 https 协议的 Microsoft repo 需要 apt-transport-https,apt-key 命令需要 gnupg2

FROM python:3.6-slim

RUN apt-get update \
        && apt-get install -y curl apt-transport-https gnupg2 \
        && 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 -y msodbcsql17 mssql-tools

看起来这添加了一个指向驱动程序的 /etc/odbcinst.ini

cat /etc/odbcinst.ini
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.2.so.0.1
UsageCount=1

因此您应该能够通过“ODBC Driver 17 for SQL Server”ODBC 驱动程序进行连接

答案2

这更像是在逃避问题,而不是真正解决问题,但目前看来还是可行的。问题是更改版本需要手动定位新文件,这并不理想,但也许我以后会做得更顺利。

我使用问题中提到的文档中提供的链接找到了原始包文件。对我来说,URL 是https://packages.microsoft.com/debian/9/prod/pool/main/m/msodbcsql17/,最新的包是msodbcsql17_17.2.0.1-1_amd64.deb使用wgetdpgk我设法安装了该包。

除了常规命令外,dockerfile 还添加了以下命令:

RUN apt-get install -y curl wget gnupg
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

RUN TEMP_DEB="$(mktemp)" \
 && wget -O "$TEMP_DEB" 'https://packages.microsoft.com/debian/9/prod/pool/main/m/msodbcsql17/msodbcsql17_17.2.0.1-1_amd64.deb' \
 && yes | dpkg --skip-same-version -i "$TEMP_DEB" \
 && rm -f "$TEMP_DEB"

相关内容