12

rbenv使用或安装 Ruby 3.0.x 在 M1 MacBook 上运行良好asdf。但是像 2.7.x 和 2.6.x 这样的旧版本存在各种问题。如何在不同时安装 x86 和 ARM 版本的情况下修复它们homebrew

4

2 回答 2

16

为了在 M1 MacBook 上成功安装 Ruby 版本 2.6.x 或 2.7.x,使用rbenvasdf (本示例中使用 asdf)请按照下列步骤操作:

使用您喜欢的安装方法升级到最新版本rbenv或插件。asdf-ruby就我而言,它是asdf-ruby通过自制软件安装的:

brew upgrade asdf
asdf plugin update ruby

重新安装当前版本opensslreadlineruby-build为了获得最新版本和配置:

brew uninstall --ignore-dependencies readline
brew uninstall --ignore-dependencies openssl
brew uninstall --ignore-dependencies ruby-build
rm -rf /opt/homebrew/etc/openssl@1.1
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 openssl@1.1)"
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 RUBY_CONFIGURE_OPTS=openssl@1.0

并做一个

asdf reshim ruby

感谢@xjlin0 提供此更新

于 2021-09-01T11:14:24.017 回答
0

我在 Ruby 2.2.2 中遇到过同样的问题,许多 gem 都依赖于此。所以我为 ubuntu 18.04 创建了一个 docker 容器,然后在上面安装了 ruby​​。它正在工作。

于 2022-01-30T09:48:29.337 回答