将Microsoft ODBC驱动程序安装到Debian


3

所以,我的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。

Answers:


1

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

你需要这些包来遵循指示

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

Docker镜像没有curl,使用Microsoft的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

看起来这样会添加一个指向驱动程序的/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驱动程序17 for SQL Server”ODBC驱动程序连接


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"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.