Ubuntu 20.04 Docker环境下Sqlcmd/mssql-tools安装失败求助
在Ubuntu 20.04 Docker环境中解决sqlcmd安装依赖问题
问题背景
按照微软官方文档《Install the SQL Server command-line tools sqlcmd and bcp on Linux》指引,在Docker的Ubuntu 20.04环境安装sqlcmd时,执行sudo apt-get install -y mssql-tools unixodbc-dev报错依赖未满足:
The following packages have unmet dependencies: mssql-tools : Depends: msodbcsql17 (>= 17.3.0.0) but it is not going to be installed unixodbc-dev : Depends: unixodbc (= 2.3.7) but it is not going to be installed Depends: odbcinst1debian2 (= 2.3.7) but 2.3.6-0.1build1 is to be installed E: Unable to correct problems, you have held broken packages.
手动补充依赖执行apt install -y mssql-tools unixodbc-dev unixodbc仍失败:
Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: unixodbc : Depends: odbcinst1debian2 (>= 2.3.7) but 2.3.6-0.1build1 is to be installed Depends: libodbc1 (>= 2.3.7) but 2.3.6-0.1build1 is to be installed unixodbc-dev : Depends: odbcinst1debian2 (= 2.3.7) but 2.3.6-0.1build1 is to be installed E: Unable to correct problems, you have held broken packages.
后续还出现libodbc1和odbcinst1debian2依赖multiarch-support无法安装的问题。系统信息如下:
# cat /etc/os-release NAME="Ubuntu" VERSION="20.04.5 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.5 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=focal UBUNTU_CODENAME=focal
解决方案
1. 修复系统依赖状态
先清理并修复系统中损坏的依赖包:
sudo apt-get update --fix-missing sudo apt-get autoremove && sudo apt-get clean && sudo apt-get autoclean sudo apt-get -f install
2. 配置正确的微软软件源
确保使用适配Ubuntu 20.04的微软源:
# 移除可能存在的错误源文件 sudo rm -f /etc/apt/sources.list.d/mssql-tools.list # 添加Ubuntu 20.04对应的微软源 curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list # 导入微软GPG密钥 curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - # 更新源缓存 sudo apt-get update
3. 分步安装依赖与工具
避免一次性安装导致的依赖冲突,分步骤执行:
- 先安装msodbcsql17(解决mssql-tools的核心依赖):
sudo apt-get install -y msodbcsql17 - 安装指定版本的unixodbc相关依赖:
sudo apt-get install -y unixodbc=2.3.7 odbcinst1debian2=2.3.7 libodbc1=2.3.7 - 最后安装mssql-tools和unixodbc-dev:
sudo apt-get install -y mssql-tools unixodbc-dev
4. 验证安装结果
执行以下命令确认sqlcmd安装成功:
sqlcmd -?
如果输出帮助信息,则说明安装完成。
内容的提问来源于stack exchange,提问作者WestCoastProjects
相关产品推荐
相关产品推荐

