安装 ruby​​-2.1.2:无法加载此类文件 -- openssl (LoadError)

pra*_*der 14 ruby macos openssl rvm

使用 rvm 安装 ruby​​-2.1.2 时出错很少。我是 ruby​​ 新手,因此需要帮助。请告诉我

安装日志和其他相关信息在这里:日志

从问题描述中提供的日志来看,我在系统中安装了 ruby​​ 2.1.2。但是,gem list由于安装错误,尝试列出 gems 时出现错误。更改为 2.1.2 ie 后,rvm use 2.1.2执行ruby -r openssl -e 'puts OpensSSL::OPENSSL_VERSION'会出现此错误:

/Users/praveenk.k/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in require': 无法加载此类文件 -- openssl ( LoadError) 来自 /Users/praveenk.k/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in require'

Feu*_*uda 22

工作实例

brew install rbenv/tap/openssl@1.0
rvm install 2.1.2 -C --with-openssl-dir=`brew --prefix openssl@1.0`
Run Code Online (Sandbox Code Playgroud)

它来自https://github.com/rvm/rvm/issues/4819#issuecomment-595644550


Dav*_*dow 16

Ruby <2.4 与 OpenSSL 1.1 不兼容(例如,参见https://github.com/rbenv/ruby-build/issues/1353)。

只是一种预感,但如果您使用的是 Mac + Homebrew,OpenSSL 1.0 最近已被删除,因此任何类似的内容brew upgrade openssl都会破坏它。

有几种选择可以解决这个问题:

  1. 我通过asdf安装了 LibreSSL 安装了较旧的Ruby(这可能更安全,请参阅https://security.stackexchange.com/questions/112545/what-are-the-main-advantages-of-using-libressl-in-favor-的-openssl):
$ openssl
OpenSSL> version
LibreSSL 2.8.3
Run Code Online (Sandbox Code Playgroud)
  1. 编译并链接您自己的 OpenSSL 1.0(或者在构建 Ruby 时将编译器标志设置为环境变量 -- https://rvm.io/rubies/installing
  2. 查看您系统的包管理器是否允许您访问 openssl 1.0 并安装它(最近正在帮助一位同事解决这个问题,但不幸的是,我们此时无法找到适合自制的小桶)

可能还有比这更简单的事情;如果有人有想法,请随时发表评论或提供替代答案。

编辑

我个人在使用其他一些软件时遇到了这个问题,并发现这解决了它,因为旧的 SSL 版本仍然存在:

brew switch openssl 1.0.2s
Run Code Online (Sandbox Code Playgroud)

只要 Homebrew 没有“帮助”为我清理它就应该工作。

  • 这真的很有帮助!我遵循了这个[链接](https://mentalized.net/journal/2019/09/13/ruby-2-3-rvm-and-openssl-1-0/) (3认同)
  • “brew switch openssl 1.0.2s”给出“错误:未知命令:switch” (3认同)

小智 8

对于 debian 10:

sudo apt-get install -y libssl-dev


Ars*_*eed 6

在 mac BigSur 上,我通过以下方式修复了它

$ rvm pkg install openssl
$ rvm install 2.1.2 -C --with-openssl-dir=$HOME/.rvm/usr

Run Code Online (Sandbox Code Playgroud)

或者你也可以尝试

$ rvm pkg install openssl
$ CFLAGS="-Wno-error=implicit-function-declaration" rvm install 2.1.2 -C --with-openssl-dir=$HOME/.rvm/usr

Run Code Online (Sandbox Code Playgroud)