1

Итак, моя установка 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.

2 ответа2

0

Я следовал инструкциям в документации 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"

0

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

Я нашел файл необработанного пакета, используя ссылки, приведенные в документации, упомянутой в вопросе. Для меня 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"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .