如何在M1芯片MacBook上安装旧版Ruby且无需安装双架构homebrew?
M1芯片Mac单架构Homebrew安装旧版Ruby(2.6.x/2.7.x)方案
核心原理:旧版Ruby未适配Apple Silicon的编译规则,仅需通过参数指定ARM版Homebrew的依赖路径、关闭严格编译检查即可完成安装,无需安装x86版本Homebrew。
前置依赖安装
先通过原生ARM版Homebrew安装旧版Ruby所需的依赖库:brew install openssl@1.1 readline libyaml zlib
rbenv安装步骤
- 若未安装rbenv相关组件,先执行:
brew install rbenv ruby-build - 执行安装命令时传入编译参数,示例为安装Ruby 2.7.8:
RUBY_CFLAGS="-Wno-error=implicit-function-declaration" \ RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1) \ --with-readline-dir=$(brew --prefix readline) \ --with-libyaml-dir=$(brew --prefix libyaml) \ --with-zlib-dir=$(brew --prefix zlib)" \ rbenv install 2.7.8
- 若需要长期安装多个旧版本,可将以下参数加入shell配置文件(.zshrc/.bashrc等)永久生效:
export RUBY_CFLAGS="-Wno-error=implicit-function-declaration" export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/opt/homebrew/opt/openssl@1.1 --with-readline-dir=/opt/homebrew/opt/readline --with-libyaml-dir=/opt/homebrew/opt/libyaml --with-zlib-dir=/opt/homebrew/opt/zlib"
asdf安装步骤
- 若未添加Ruby插件,先执行:
asdf plugin add ruby - 执行安装命令时传入相同编译参数,示例为安装Ruby 2.6.10:
RUBY_CFLAGS="-Wno-error=implicit-function-declaration" \ RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1) \ --with-readline-dir=$(brew --prefix readline) \ --with-libyaml-dir=$(brew --prefix libyaml) \ --with-zlib-dir=$(brew --prefix zlib)" \ asdf install ruby 2.6.10
- 长期使用同样可将上述环境变量加入shell配置文件永久生效。
常见问题排查
- 若安装时报openssl相关错误,确认已安装
openssl@1.1,低于3.0的Ruby版本不兼容openssl 3.x版本 - 若报编译失败错误,确认
RUBY_CFLAGS参数已正确传入,该参数关闭了Apple Silicon默认clang编译器的严格错误检查,是旧版Ruby编译成功的核心配置 - 安装完成后安装gem出现原生扩展编译失败时,将上述环境变量永久加入shell配置即可解决绝大多数兼容问题
内容的提问来源于stack exchange,提问作者orthodoX
相关产品推荐
相关产品推荐

