Как установить msodbcsql на Astra Linux

«Как установить msodbcsql на Astra Linux» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Astra Linux основана на Debian, поэтому установка драйвера ODBC от Microsoft (msodbcsql) выполняется через официальный репозиторий Microsoft. Я делаю это так:

  1. Импортирую ключ репозитория и добавляю сам репозиторий. Важно определить мажорную версию Debian (например, 11 для "Bullseye").

    # Узнаем кодовое имя дистрибутива (например, 'orel' для Astra Linux SE 1.7)
    # Или определяем базовую версию Debian
    DEB_VERSION=$(grep VERSION_CODENAME /etc/os-release | cut -d= -f2)
    # Если не определяется, можно задать вручную, например, для Astra 1.7 это 'bullseye'
    # DEB_VERSION="bullseye"
    
    curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/debian/$DEB_VERSION/prod $DEB_VERSION main" | sudo tee /etc/apt/sources.list.d/mssql-release.list
  2. Обновляю индекс пакетов и устанавливаю драйвер. Переменная окружения ACCEPT_EULA=Y автоматически принимает лицензионное соглашение.

    sudo apt-get update
    sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18
    # Для старых приложений может потребоваться также версия 17
    # sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
  3. Проверяю установку, запрашивая список зарегистрированных драйверов ODBC:

    odbcinst -q -d

На практике часто возникают нюансы:

  • На Astra Linux может потребоваться предварительная установка пакетов unixodbc и unixodbc-dev.
  • Если приложение требует специфичную версию драйвера, в команде установки нужно указать msodbcsql17 или msodbcsql13.
  • Для работы в изолированном контуре (без интернета) я заранее скачиваю .deb-пакеты драйвера и его зависимостей на машину с доступом и переношу их для офлайн-установки через dpkg -i.