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

arm64架构Mac通过rvm/rbenv安装ruby-2.2报错如何解决?

报错原因

所有报错的核心原因是你使用的是Apple Silicon(arm64架构)的Mac,运行macOS 11(Big Sur)及以上版本,而Ruby 2.2是官方已停止维护的老旧版本,未适配新架构、新系统和新版编译工具链:

  • RVM安装时的implicit declaration of function 'rb_str_change_terminator_length'报错:你使用的Clang 12编译工具默认开启C99标准严格校验,Ruby 2.2源码中使用的未提前声明的函数在旧版Clang中仅为警告,新版直接判定为错误中断编译。
  • rbenv安装时的ld: symbol(s) not found for architecture i386报错:Ruby 2.2依赖的旧版OpenSSL 1.0.x默认会尝试编译32位(i386)架构的二进制,而macOS从10.15(Catalina)版本开始就完全移除了32位程序支持,且arm64架构本身不兼容i386架构的符号,导致链接失败。
解决方案

方案1:使用ruby-build补丁直接编译适配arm64的Ruby 2.2(无需Rosetta,优先推荐)

  • 首先更新rbenv和ruby-build到最新版本,确保内置旧版Ruby的适配补丁:
brew update && brew upgrade rbenv ruby-build
  • 安装Ruby 2.2专属兼容的旧版OpenSSL 1.0依赖:
brew install rbenv/tap/openssl@1.0
  • 执行安装命令,指定编译器参数关闭严格错误校验、指定OpenSSL路径:
RUBY_CFLAGS="-Wno-error=implicit-function-declaration" RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.0)" rbenv install 2.2.10
  • 安装完成后执行rbenv global 2.2.10或者在项目目录执行rbenv local 2.2.10切换版本,执行ruby -v验证安装是否成功。

方案2:通过Rosetta2模拟x86_64环境安装(方案1失败时使用)

  • 右键点击终端应用,选择「显示简介」,勾选「使用Rosetta打开」,重启终端。
  • 安装x86版本的Homebrew:
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • 安装x86版本的rbenv、ruby-build和openssl@1.0:
arch -x86_64 brew install rbenv ruby-build openssl@1.0
  • 执行安装命令:
RUBY_CFLAGS="-Wno-error=implicit-function-declaration" RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(arch -x86_64 brew --prefix openssl@1.0)" arch -x86_64 rbenv install 2.2.10
注意事项
  • Ruby 2.2已经停止维护超过7年,存在大量已知安全漏洞,仅建议本地开发临时使用,生产环境建议尽快升级项目依赖到更高的Ruby版本。
  • 安装完成后如果安装gem出现编译错误,可以在安装gem时也加上对应的CFLAGS参数,比如gem install 包名 -- --with-cflags="-Wno-error=implicit-function-declaration"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 12:57:02