安装新版Bundler后仍显示旧版本 无法正常更新问题求助
问题根源
核心是系统Ruby环境的可执行路径优先级问题,旧版Bundler 1.11.2的可执行文件在优先级更高的路径下,新安装的2.2.31版本路径没有被优先加载,这也是你执行bundle _2.2.31_ install提示找不到命令的核心原因。
分步解决方法
- 首先确认所有已安装的Bundler版本和路径
执行gem list bundler确认两个版本都在已安装列表中,再执行which -a bundle查看所有bundle可执行文件的路径,输出结果第一条就是当前优先调用的旧版路径,后续条目为新版路径。
如果你只是临时需要在当前项目使用新版Bundler,可以直接指定全路径调用,比如假设
which -a bundle输出的新版路径是/usr/local/bin/bundle,直接执行/usr/local/bin/bundle install即可。
全局替换为匹配项目要求的Bundler版本
- 卸载所有已安装的Bundler版本:执行
sudo gem uninstall bundler,在弹出的选择列表中选中所有版本完成卸载 - 安装与Gemfile.lock要求匹配的版本,避免后续版本兼容问题:执行
sudo gem install bundler -v 2.2.19 - 重置RubyGems的可执行文件软链:执行
gem pristine bundler - 验证版本是否生效:执行
bundle --version,此时应正确显示2.2.19
- 卸载所有已安装的Bundler版本:执行
残留问题排查
如果你使用了rvm、rbenv等Ruby版本管理工具,不要加sudo安装gem,sudo会将包安装到系统全局Ruby环境,而非版本管理工具对应的当前Ruby环境中,直接执行gem install bundler -v 2.2.19即可。
若仍不生效,执行gem env executabledir查看RubyGems的可执行文件存放路径,检查环境变量PATH配置,确保该路径的优先级高于旧版bundle所在的路径。
验证
完成操作后执行bundle install即可正常安装依赖,不会再报Bundler版本过低的错误。
内容的提问来源于stack exchange,提问作者Arnab Ghosh
相关产品推荐
相关产品推荐

