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

运行pre-commit的markdownlint报错找不到ruby2.7如何解决

问题上下文

运行pre-commit时出现如下报错:

Markdownlint.............................................................Failed
- hook id: markdownlint
- exit code: 1

Executable `/usr/bin/ruby2.7` not found

执行ruby --version命令得到的输出为:

ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]
咨询问题

如何进行配置,才能让pre-commit正确识别到匹配的ruby版本?

解决方法
  • 显式指定钩子使用的ruby版本
    打开项目根目录下的.pre-commit-config.yaml配置文件,找到markdownlint对应的钩子配置段,添加language_version参数指定本地已安装的ruby版本即可:
    - id: markdownlint
      language_version: 3.0.2
    
    如果版本号匹配仍然报错,可以直接指定ruby可执行文件的绝对路径,适配自定义安装路径的场景:
    - id: markdownlint
      executable: /usr/bin/ruby
    
    配置修改完成后,执行pre-commit install重载配置,再运行pre-commit run markdownlint --all-files验证效果。
  • 创建软链接兼容硬编码路径
    该报错本质是旧版markdownlint钩子硬编码了/usr/bin/ruby2.7的查找路径,直接给系统现有ruby创建对应软链接即可绕过检查:
    sudo ln -s /usr/bin/ruby /usr/bin/ruby2.7
    
    命令执行完成后重新运行pre-commit即可正常调用。
  • 更新钩子到最新版本
    旧版本markdownlint钩子存在硬编码低版本ruby路径的已知问题,执行以下命令更新所有钩子到最新版本,新版会自动适配系统已安装的ruby环境:
    pre-commit autoupdate
    pre-commit install --install-hooks
    

如果你使用rvm、rbenv等ruby版本管理工具,需要确认pre-commit运行时加载的环境变量中,ruby路径和终端执行which ruby得到的路径一致,避免环境隔离导致的路径识别错误。

内容的提问来源于stack exchange,提问作者a.t.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:57:20