繁体   English   中英

ZC5FD214CD0D2B3B4272E73B022BA5C2Z Z3D945423F8E9496C429A5B4604F4F4604FZ 18.04无法安装MSODBCSQL17778840100C97840C978840C97840C97840C978840C9840C9840C9840C9840C9840C9829840C982729840C9840C9827840C98272988C9292138C9788C9292332330C977840C330C978C923B301333B

[英]Docker Ubuntu 18.04 unable to install msodbcsql17 SQL Server ODBC Driver 17

我有下面的 ubuntu docker 文件,我想在其中添加 SQL 服务器 ZF89750C5A27 安装驱动程序。 当我构建 docker 文件时,我收到一个错误:“/bin/sh -c apt-get install msodbcsql17”返回一个非零代码:1

能否请你帮忙?

我指的是文章 - https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql -server-ver15

我在我的 Ubuntu VM 中按照文章中的步骤操作,它工作正常,我能够运行我的 python 程序。 但是,当我使用 docker 文件时出现错误

FROM ubuntu:18.04

RUN apt update -y  &&  apt upgrade -y && apt-get update 
RUN apt install -y curl python3.7 git python3-pip openjdk-8-jdk unixodbc-dev

RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN exit
#RUN ACCEPT_EULA=Y apt-get install msodbcsql17
RUN apt-get update
RUN ACCEPT_EULA=Y  
RUN apt-get install msodbcsql17
#RUN ACCEPT_EULA=Y apt install msodbcsql17
RUN ACCEPT_EULA=Y apt install mssql-tools
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

COPY startup.sh /
RUN chmod +x /startup.sh
ENTRYPOINT ["sh","/startup.sh"]

我可以让它工作。 以下是更新后的 Docker 文件片段

FROM ubuntu:18.04

RUN apt update -y  &&  apt upgrade -y && apt-get update 
RUN apt install -y curl python3.7 git python3-pip openjdk-8-jdk unixodbc-dev

# Add SQL Server ODBC Driver 17 for Ubuntu 18.04
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated msodbcsql17
RUN ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated mssql-tools
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc

COPY startup.sh /
RUN chmod +x /startup.sh
ENTRYPOINT ["sh","/startup.sh"]

如果您使用的是 WSL2,则此错误可能是由于时钟问题不正确造成的。
打开 wsl2 并运行

sudo hwclock --hctosys

参考时钟: https ://www.thegeekstuff.com/2013/08/hwclock-examples/
wsl2 问题: https : //github.com/microsoft/WSL/issues/5324

当使用 WSL2 支持的 docker for windows 时,这可能会解决 apt-get 的问题

作为 Suraj 的补充

如果您将第一个语句替换为以下内容,他的答案适用于 Macbook M1:

FROM --platform=linux/amd64 ubuntu:18.04

我的工作过

RUN apt-get install -y unixodbc-dev && apt-get update && apt-get upgrade \
    && wget http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.27-3ubuntu1_amd64.deb \
    && apt-get install ./multiarch-support_2.27-3ubuntu1_amd64.deb \
    && apt-get update \
    && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    && curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list \ 
    && apt-get update \
    && ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated msodbcsql17 \
    && apt-get update \
    && ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated mssql-tools \
    && apt-get upgrade

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM