执行gem install bundler无法升级bundler版本该如何解决?
升级bundler版本的解决方案
该问题由多版本bundler路径优先级冲突、项目本地binstubs绑定旧版本,或Ruby版本管理器的可执行映射未更新导致,可按照以下步骤解决:
- 第一步:刷新Ruby版本管理器的可执行映射
若使用rbenv管理Ruby版本,执行rbenv rehash刷新shim映射;若使用rvm,执行rvm reload重载环境配置。
执行完成后运行which bundle和gem which bundler,确认两者路径属于同一个Ruby版本的安装目录。 - 第二步:清理项目内旧版bundler的绑定文件
项目bin目录下的bundle可执行文件是旧版bundler生成的固定绑定文件,直接删除即可:rm -f ./bin/bundle - 第三步:调用新版bundler升级项目绑定版本
先临时注释Gemfile第一行的版本校验代码,再执行以下命令将项目绑定的bundler升级到已安装的最新版:
也可以直接通过gem调用新版bundler执行操作,避免路径优先级干扰:bundle update --bundlergem exec bundler install - 第四步:验证升级结果
执行以下命令确认版本已更新:
输出为bundle -v bin/bundle -vBundler version 2.2.31即为升级成功,之后可恢复Gemfile第一行的校验代码。
注意:不要使用sudo执行
gem install bundler,否则会将bundler安装到系统Ruby目录,和用户目录下版本管理器安装的Ruby产生路径冲突,导致新安装的版本无法被识别。
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

