将 Microsoft ODBC 驱动程序安装到 Debian

Fel*_*lix 5 debian drivers installation apt docker

所以,我apt-get install返回E: Unable to locate package msodbcsql(错误代码 100)。我正在尝试使用我的系统访问 SQL Server 数据库,因此我正在按照Microsoft 的说明安装他们的 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。

nij*_*ave 6

我使用 python:3.6-slim 按照 Microsoft 文档中的说明进行操作,但它似乎可以正确安装,但有一些注意事项

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

apt-get update && apt-get install -y curl apt-transport-https gnupg2
Run Code Online (Sandbox Code Playgroud)

Docker镜像没有curl,使用微软的repo和https协议需要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
Run Code Online (Sandbox Code Playgroud)

看起来这会添加一个指向驱动程序的 /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
Run Code Online (Sandbox Code Playgroud)

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


Fel*_*lix 0

这更像是在避免问题,而不是真正解决问题,但目前它是有效的。问题是更改版本需要手动定位新文件,这并不理想,但也许其他时候我会让事情工作得更顺利。

我使用问题中提到的文档中提供的链接找到了原始包文件。对我来说,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"
Run Code Online (Sandbox Code Playgroud)