M2芯片Mac运行Ruby2.5.1+Rails5.1.6报错:dyld缺失调用符号
解决M2 Mac上Ruby 2.5.1 + Rails 5.1.6启动报错的方案
核心原因
Ruby 2.5.x系列属于旧版本,原生不支持Apple Silicon(M系列芯片)的arm64架构,直接用RVM安装会因依赖库、编译架构不兼容,出现Ruby状态标记为broken、启动Rails时符号缺失的问题。
具体解决步骤
1. 卸载当前损坏的Ruby 2.5.1
先清理现有安装,避免后续冲突:
rvm uninstall 2.5.1
2. 用Rosetta 2以x86_64架构运行终端
Apple Silicon Mac可通过Rosetta模拟x86环境,这是运行旧Ruby版本的关键:
- 找到「终端」应用,右键选择「复制」
- 右键复制出的终端,选择「显示简介」
- 勾选「使用Rosetta打开」,打开该终端窗口进行后续操作
3. 重新安装Ruby 2.5.1
在Rosetta终端中,用RVM从源码编译安装(避免预编译的arm64二进制包不兼容):
rvm install 2.5.1 --disable-binary
无需添加--with-out-ext=fiddle参数,源码编译会自动适配x86环境。
4. 验证Ruby状态
安装完成后检查状态,确认不再显示broken:
rvm list
正常情况下ruby-2.5.1会标记为[ default ]或[ current ]。
5. 重装项目依赖
进入项目目录,清理旧锁文件后重新安装依赖:
rm Gemfile.lock bundle install
6. 启动Rails服务
尝试启动服务:
rails s
备选方案(Rosetta方案无效时)
如果上述步骤仍有问题,可换用asdf管理Ruby版本:
- 安装asdf:
brew install asdf
- 添加Ruby插件:
asdf plugin add ruby
- 在Rosetta终端中安装并切换到Ruby 2.5.1:
asdf install ruby 2.5.1 asdf global ruby 2.5.1
- 重复执行
bundle install和rails s启动服务
内容的提问来源于stack exchange,提问作者Nguyen Ruby
相关产品推荐
相关产品推荐

