Mac M1(macOS 12)下bundle install提示Ruby版本不匹配问题求助
解决Mac M1上Bundler识别Ruby版本错误的问题
我之前碰到过好几例M1 Mac上RVM和Bundler版本不匹配的问题,你的情况大概率是系统自带Ruby的Bundler优先级盖过了RVM管理的版本,或者RVM的环境没有正确加载到当前Shell里。给你一步步排查解决的方法:
第一步:确认当前Shell的环境变量
先搞清楚你的bundle命令到底指向哪个版本的Ruby:
which bundle echo $PATH
如果输出的bundle路径是/usr/bin/bundle,那说明你用的是macOS 12自带的Ruby 2.6.8对应的Bundler,而不是RVM管理的Ruby 2.0.0版本的Bundler。
第二步:重新加载RVM并绑定默认版本
- 先刷新RVM的环境配置:
source ~/.rvm/scripts/rvm
- 重新切换到目标Ruby版本并设为默认:
rvm use 2.0.0-p598 --default
- 再次检查
ruby和bundle的路径:
which ruby which bundle
正常情况下,这两个命令的输出应该都以~/.rvm/rubies/ruby-2.0.0-p598/bin/或者~/.rvm/gems/ruby-2.0.0-p598/bin/开头。
第三步:安装适配Ruby 2.0.0的Bundler版本
Ruby 2.0.0比较老旧,不兼容高版本的Bundler,所以需要安装对应版本:
- 先卸载可能关联到系统Ruby的Bundler(如果有多个版本,选择路径为
/usr/bin/bundle的那个):
gem uninstall bundler
- 在RVM的2.0.0环境下安装兼容的Bundler版本:
gem install bundler -v 1.17.3
这个版本是Ruby 2.0.0能稳定运行的最高Bundler版本。
第四步:检查Shell配置文件(针对M1默认的Zsh)
确保RVM的初始化代码已经添加到你的Shell配置文件里(比如~/.zshrc):
- 打开配置文件:
open ~/.zshrc
- 确认里面有这一行代码,如果没有就加上:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
- 保存后重启Terminal,重新切换Ruby版本。
第五步:注意M1的Rosetta架构问题
Ruby 2.0.0是x86架构的,你需要确保Terminal是通过Rosetta运行的:
- 找到Launchpad里的Terminal,右键点击→显示简介
- 勾选“使用Rosetta打开”,然后重启Terminal
- 重新执行
rvm use 2.0.0-p598和bundle install
完成以上步骤后,再执行bundle install应该就能正常识别到Ruby 2.0.0版本了。
内容的提问来源于stack exchange,提问作者shanu thakur
相关产品推荐
相关产品推荐

