You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks运行Bash脚本安装SQL Server ODBC驱动失败问题

问题根本原因

核心原因是上传到Databricks的Bash脚本使用了Windows系统的CRLF(\r\n)换行格式,而非Linux环境要求的LF(\n)换行格式,Bash解析命令时会把每行末尾多余的回车符(\r)当成命令/参数的一部分,触发连锁报错。

报错对应逻辑

你看到的所有报错都和换行符问题直接对应:

  • gpg: invalid option "-":第一行命令curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -末尾的-作用是告知apt-key从标准输入读取密钥,因为行尾夹带了\r,gpg实际收到的参数是-\r,直接判定为非法选项。
  • E: Invalid operation update:第三行sudo apt-get update末尾带\r,apt-get识别到的操作名是update\r,不存在对应操作因此报错。
  • 第二行写入MSSQL源配置的curl命令,同样因为行尾\r的存在,写入的源地址末尾带多余回车符,导致APT源配置失效;加上apt update执行失败,系统根本拉取不到微软的软件源信息,自然找不到msodbcsql17安装包,触发最后E: Unable to locate package msodbcsql17的报错。

现象差异原因

  • 直接把命令粘贴到Databricks笔记本%sh单元格执行时,网页前端会自动对输入内容做换行符归一化处理,统一转为Linux兼容的LF格式,不存在多余\r,因此可以正常执行。
  • 通过CI/CD上传的脚本文件,是本地Windows环境下开发时默认以CRLF格式保存的,传输过程中没有做换行符转换,原封不动部署到Linux节点上,Bash解析时就会触发上述错误。

修复方案

任选一种即可解决:

  • 本地编辑脚本时,将文件换行符设置为LF格式(VS Code等常见编辑器右下角可直接切换换行符类型),重新提交后走CI/CD上传即可。
  • 如果用Git管理脚本代码,在仓库中新增.gitattributes配置,添加规则*.sh text eol=lf,强制所有.sh后缀的脚本在检出时统一使用LF换行,从源头规避跨系统换行符兼容问题。
  • 临时修复可以在执行脚本前,先在%sh单元格运行sed -i 's/\r$//' <path-to-bash-script.sh>,批量删除脚本所有行尾的回车符,再执行脚本就能正常跑通。

内容的提问来源于stack exchange,提问作者Minura Punchihewa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 13:15:40