在 Linux Redhat/CentOS 上为 msodbcsql17 安装 unixODBC >= 2.3.1
Posted
技术标签:
【中文标题】在 Linux Redhat/CentOS 上为 msodbcsql17 安装 unixODBC >= 2.3.1【英文标题】:Install unixODBC >= 2.3.1 on Linux Redhat/CentOS for msodbcsql17 【发布时间】: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 【参考方案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】:
经过长时间的研究,我想出了一个解决方案:
-
从任何来源下载 unixODBC >= 2.3.1,作为 rpm (Example source)
从 Microsoft (Link to Repo) (msodbcsql17-17.1.0.1-1.x86_64.rpm 和 mssql-tools-17.1.0.1- 下载 msodbcsql17 和 mssql-tool 作为 rpm 1.x86_64.rpm 在我的情况下)
通过 ftp(如 FileZilla)将文件传输到 EC2 实例
使用EC2终端,进入上传文件所在目录
输入
sudo rpm -i unixODBC-2.3.1-11.el7.x86_64.rpm
安装必要的版本(可能需要把版本号改成上传文件的版本号)
输入sudo rpm -i msodbcsql17-17.1.0.1-1.x86_64.rpm
输入sudo rpm -i mssql-tools-17.1.0.1-1.x86_64.rpm
按照 Microsoft 说明的其余部分,就像在您的问题中一样。
现在您应该能够使用 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 的初学者,但这是我可以解决问题的唯一方法。我已经更新了我的答案,并暗示了您的评论和希望,我们可以帮助其他用户了解您的更多信息。以上是关于在 Linux Redhat/CentOS 上为 msodbcsql17 安装 unixODBC >= 2.3.1的主要内容,如果未能解决你的问题,请参考以下文章
linux各发行版本的问题?redhat、centos、ubunt……
不满 RedHat!CentOS 联合创始人创建 Rocky Linux