Установка драйвера Microsoft ODBC для Debian

703
Felix

Итак, мои 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.

1

2 ответа на вопрос

0
Felix

Это больше похоже на избежание проблемы, чем на самом деле ее решение, но пока это работает. Проблема в том, что при смене версии требуется вручную найти новый файл, что не идеально, но, возможно, в другой раз я буду работать более плавно.

Я нашел файл необработанного пакета, используя ссылки, приведенные в документации, упомянутой в вопросе. Для меня URL был https://packages.microsoft.com/debian/9/prod/pool/main/m/msodbcsql17/и последний пакет был msodbcsql17_17.2.0.1-1_amd64.deb. Используя wgetиdpgk мне удалось установить этот пакет.

Команды добавления 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" 
0
nijave

Я следовал инструкциям в документации Microsoft, используя python: 3.6-slim, и он оказался установлен правильно с несколькими оговорками

Вам понадобятся эти пакеты, чтобы следовать указаниям

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

Образ Docker не имеет curl, apt-transport-https требуется для использования репозитория Microsoft с протоколом https, а gnupg2 необходим для команды apt-key

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 «Драйвер ODBC 17 для SQL Server»

Похожие вопросы