错误
这是使用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)