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

Mac x86迁移至M1 ARM架构启动Rails报nokogiri架构不兼容如何修复

M1芯片Mac运行Rails项目nokogiri架构不兼容修复方案

问题核心

原有x86架构Mac上安装的Ruby环境、gem原生扩展均为x86_64架构编译,迁移到ARM架构M1芯片Mac后,二进制文件无法被arm64e架构的系统加载,触发nokogiri加载报错:

mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')

修复步骤

  • 首先确认终端运行在原生arm64模式:执行arch命令,返回结果为arm64即为正常。如果返回x86_64,需要关闭终端APP的「使用Rosetta打开」设置,重启终端后再操作。
  • 重新编译安装适配arm64架构的Ruby版本(原有rbenv管理的3.1.2是x86架构编译的,必须重装):
    rbenv uninstall 3.1.2
    RUBY_CFLAGS="-w" rbenv install 3.1.2
    
    安装完成后进入项目目录,执行rbenv local 3.1.2指定项目使用的Ruby版本,执行ruby -v确认输出包含arm64-darwin字段即为安装正确。
  • 清理所有旧架构的gem缓存与依赖文件:
    rm -rf vendor/bundle tmp/cache/bootsnap*
    gem cleanup
    gem uninstall nokogiri bootsnap -aIx
    
  • 配置bundle强制使用当前原生平台编译安装gem,避免拉取x86架构的预编译包:
    bundle config set --local force_ruby_platform true
    bundle install
    
  • 依赖安装完成后,直接执行rails s即可正常启动服务。

补充说明

如果后续还有其他带原生扩展的gem(比如pg、sqlite3、ffi、rmagick等)报同类架构不兼容错误,直接执行gem uninstall <报错的gem名> -aIx后重新执行bundle install,在arm64环境下重新编译对应扩展即可解决。

内容的提问来源于stack exchange,提问作者Mark Postura

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 17:47:37