如何修复Ruby错误:OpenSSL不可用(Mac)
apple 发布于 2024-05-26

错误

这是使用gem install或bundle install安装gem时可能出现的错误。

ERROR:  While executing gem ... (Gem::Exception)
    OpenSSL is not available. Install OpenSSL and rebuild Ruby (preferred) or use non-HTTPS sources

我在M1 Mac中看到过这个错误,这个问题是由于ruby没有编译OpenSSL支持

它有两个部分,只有在支持openssl1.1的情况下重新安装ruby时,它才能工作。记住这一点非常重要,如果您使用openssl3,它将不起作用。

修复

步骤0:确保我们处理的是正确的ruby版本

您可能正在使用rvm、rbenv或其他东西来管理多个版本的ruby,也可能正在使用系统ruby。无论如何,重要的是要记住,我们正在处理您希望在应用程序中使用的正确ruby版本。这意味着在继续之前使用rvm或rbenv切换到适当的版本

步骤1:确定问题是由OpenSSL本身引起的

运行

ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'

在终端上,查看它是否正在打印OpenSSL版本。如果它出错,那么我们知道问题是由OpenSSL引起的。然后您可以继续执行以下步骤。如果ruby说OpenSSL存在,如下所示

➜  ~ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
OpenSSL 1.1.1u  30 May 2023

这意味着这不是问题所在,我建议你多研究

步骤2:如果尚未安装OpenSSL 1.1

假设您安装了自制软件,则可以使用安装OpenSSL 1.1

brew install openssl@1.1

步骤3:使用openssl 1.1重新安装ruby

注意:将3.0.0版本替换为您的首选版本

如果使用RVM

RVM允许重新安装。因此,如果您安装了ruby版本,则可以运行

rvm reinstall 3.0.0 --with-openssl-dir=`brew --prefix openssl@1.1`

如果没有安装,则可以运行rvm install而不是rvm reinstall

将其设置为默认值

rvm alias create default 3.0.0

 

如果使用rbenv

首先,您需要卸载ruby。假设您想要ruby 3.0.0,请首先使用

rbenv uninstall 3.0.0

完成后,您可以使用openssl支持再次安装ruby。

注意:Openssl 3不起作用(在ruby 3.0.0上测试),您需要Openssl 1.1

RUBY_CONFIGURE_OPTS="--with-openssl-dir=`brew --prefix openssl@1.1`" rbenv install 3.0.0

并将其设置为默认值

rbenv global 3.0.0

 

原文连接:How to fix Ruby error : OpenSSL is not available (Mac)

 

apple
关注 私信
文章
13
关注
0
粉丝
0