【问题标题】:Install unixODBC >= 2.3.1 on Linux Redhat/CentOS for msodbcsql17在 Linux Redhat/CentOS 上为 msodbcsql17 安装 unixODBC >= 2.3.1
【发布时间】:2018-10-28 06:34:02
【问题描述】:

我尝试使用 CentOS/RedHat (Linux) 在 AWS EC2 上安装 msodbcsql17。

这些是我遵循的步骤,来自 Microsoft (LINK):

sudo su

#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version

#RedHat Enterprise Server 6
curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo

#RedHat Enterprise Server 7
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo

exit
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo yum install unixODBC-devel

该指令在安装 msodbcsql17 之前有效。我收到以下错误消息:

Error: Package: msodbcsql17 (packages-microsoft-com-prod)
           Requires: unixODBC >= 2.3.1
           Available: unixODBC-2.2.14-14.7.amzn1.i686 (amzn-main)
               unixODBC = 2.2.14-14.7.amzn1

我认为问题是,unixODBC 的最大可用版本低于 2.3.1,但是我如何安装 msodbcsql17 以与 Microsoft 连接?

【问题讨论】:

  • 您如何知道要下载哪个 RedHat 存储库? (6、7 或 8)。您的问题看起来像是您下载了 6 和 7 回购配置,但它说只做一个。
  • @falsePockets 如果您使用 RedHat Enterprise 6,您需要 RedHat Enterprise 7 的版本 6 ".../rhel/6/..." 的链接,它是相同的。您可以通过以下教程了解版本:cyberciti.biz/faq/how-do-i-determine-rhel-version

标签: amazon-ec2 centos redhat pyodbc unixodbc


【解决方案1】:

这是我的 docker 文件中的一个 sn-p,它显示了如何在 amazon linux 上安装:

RUN curl http://mirror.centos.org/centos/7/os/x86_64/Packages/unixODBC-2.3.1-14.el7.x86_64.rpm > /tmp/unixODBC-2.3.1-14.el7.x86_64.rpm
RUN yum -y install /tmp/unixODBC-2.3.1-14.el7.x86_64.rpm 
RUN curl http://mirror.centos.org/centos/7/os/x86_64/Packages/unixODBC-devel-2.3.1-14.el7.x86_64.rpm > /tmp/unixODBC-devel-2.3.1-14.el7.x86_64.rpm 
RUN yum -y install /tmp/unixODBC-devel-2.3.1-14.el7.x86_64.rpm 

RUN curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
RUN ACCEPT_EULA=Y yum -y install msodbcsql17

如果你想要pyodbc,那么奖励:

RUN yum -y install gcc72-c++ \
    && yum -y install python36-devel \
    && yum -y install zip \
    && yum clean all
RUN python3.6 -m pip install --upgrade pip 
RUN python3.6 -m pip install pyodbc

https://github.com/Microsoft/msphpsql/issues/496#issuecomment-569938591

【讨论】:

  • 对于yum -y install 部分,我得到“无法打开:unixODBC-2.3.1-14.el7.x86_64.rpm。跳过。”。知道有什么问题吗?这是文件权限问题,还是操作系统不兼容?
【解决方案2】:

经过长时间的研究,我想出了一个解决方案:

  1. 从任何来源下载 unixODBC >= 2.3.1,作为 rpm (Example source)
  2. 从 Microsoft (Link to Repo) (msodbcsql17-17.1.0.1-1.x86_64.rpmmssql-tools-17.1.0.1- 下载 msodbcsql17 和 mssql-tool 作为 rpm 1.x86_64.rpm 在我的情况下)
  3. 通过 ftp(如 FileZilla)将文件传输到 EC2 实例
  4. 使用EC2终端,进入上传文件所在目录
  5. 输入sudo rpm -i unixODBC-2.3.1-11.el7.x86_64.rpm 安装必要的版本(可能需要把版本号改成上传文件的版本号)
  6. 输入sudo rpm -i msodbcsql17-17.1.0.1-1.x86_64.rpm
  7. 输入sudo rpm -i mssql-tools-17.1.0.1-1.x86_64.rpm

  8. 按照 Microsoft 说明的其余部分,就像在您的问题中一样。

  9. 现在您应该能够使用 ODBC,例如在 python 中与 pyodbc 一起使用。

除了rpm -i,您也可以使用yum install


更新:请查看@KnudLarsen 的评论!

【讨论】:

  • 肖恩·斯泰恩:更好=# yum install Downloads/unixODBC-2.3.1-11.el7.x86_64.rpm。 IE。 rpm 命令不处理依赖关系。除此之外,yum 使用的默认 rpm 命令是rpm -Uvh
  • @KnudLarsen 感谢您的评论!我是 Linux 的初学者,但这是我可以解决问题的唯一方法。我已经更新了我的答案,并暗示了您的评论和希望,我们可以帮助其他用户了解您的更多信息。
猜你喜欢
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-20
  • 2017-11-05
  • 2019-06-21
  • 1970-01-01
相关资源
最近更新 更多