为了在 M1 MacBook 上使用 rbenv
或 asdf
(此示例中使用 asdf) 请按照以下步骤操作:
升级到最新版本 rbenv
或 asdf-ruby
插件。就我而言,它是 asdf-ruby
通过 Homebrew 安装的:
brew upgrade asdf
asdf plugin update ruby
重新安装当前版本 openssl
, readline
以 ruby-build
获得最新版本和配置:
brew uninstall --ignore-dependencies readline
brew uninstall --ignore-dependencies openssl
brew uninstall --ignore-dependencies ruby-build
rm -rf /opt/homebrew/etc/[email protected]
brew install -s readline
brew install -s openssl
brew install -s ruby-build
在您的 shell 配置中 .bashrc
或 .zshrc
添加以下 ENV 变量:
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix [email protected])"
export LDFLAGS="-L/opt/homebrew/opt/readline/lib:$LDFLAGS"
export CPPFLAGS="-I/opt/homebrew/opt/readline/include:$CPPFLAGS"
export PKG_CONFIG_PATH="/opt/homebrew/opt/readline/lib/pkgconfig:$PKG_CONFIG_PATH"
export optflags="-Wno-error=implicit-function-declaration"
export LDFLAGS="-L/opt/homebrew/opt/libffi/lib:$LDFLAGS"
export CPPFLAGS="-I/opt/homebrew/opt/libffi/include:$CPPFLAGS"
export PKG_CONFIG_PATH="/opt/homebrew/opt/libffi/lib/pkgconfig:$PKG_CONFIG_PATH"
这将确保在安装过程中使用正确的库和标头,并且它将忽略 implicit-function-declaration
阻止某些版本继续安装的问题。请注意,对于其他一些 shell, fish
这些变量的导出会略有不同。
现在启动一个新的终端会话并尝试安装较旧的 ruby 版本:
asdf install ruby 2.7.2
asdf install ruby 2.6.5
请注意,低于 2.5 的旧版本可能仍存在问题。大部分功劳都归功于 这个 Github 问题 .
更新
对于 Ruby 2.2,请更改以下变量:
export [email protected]
并做一个
asdf reshim ruby
感谢@xjlin0 的更新