安装 ruby-2.1.2:无法加载此类文件 -- openssl (LoadError)
Posted
技术标签:
【中文标题】安装 ruby-2.1.2:无法加载此类文件 -- openssl (LoadError)【英文标题】:Installing ruby-2.1.2: Cannot load such file -- openssl (LoadError) 【发布时间】:2020-04-08 13:52:37 【问题描述】:使用 rvm 安装 ruby-2.1.2 时出现一些错误。我是红宝石新手,因此需要帮助。请告诉我
安装日志和其他相关信息在这里:log
根据问题描述中提供的日志,我在系统中安装了 ruby 2.1.2。但是,由于安装错误,尝试使用 gem list
列出 gem 时出现错误。更改为 2.1.2 后,即 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':无法加载此类文件 - - 来自 /Users/praveenk.k/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in 要求的 openssl (LoadError)
【问题讨论】:
OpenSSL 可能不在您的计算机上。通过which openssl
检查它是否存在。
which openssl
打印输出 /usr/local/opt/openssl@1.1/bin/openssl
。因此,我假设我的系统中存在 openssl。
好的,您的问题似乎不是 openssl 问题。接下来您可以尝试什么:查看文件 /Users/praveenk.k/.rvm/log/1576471018_ruby-2.1.2/gem.install.gem-wrappers->=1.4.0.log。与我们分享此文件的内容。
cat "/Users/praveenk.k/.rvm/log/1576471018_ruby-2.1.2/gem.install.gem-wrappers->=1.4.0.log"
的内容是这样的:ERROR: Loading command: install (LoadError) cannot load such file -- openssl ERROR: While executing gem ... (NoMethodError) undefined method
invoke_with_build_args' for nil:NilClass`
请将您最后评论的文字放在您的原始帖子中。这样人们就更容易为您提供帮助。
【参考方案1】:
Ruby https://github.com/rbenv/ruby-build/issues/1353)。
只是预感,但如果您使用的是 Mac + Homebrew,OpenSSL 1.0 最近已被删除,因此任何类似于 brew upgrade openssl
的内容都会破坏它。
有几种方法可以解决这个问题:
-
我通过
asdf
使用 LibreSSL 安装了较旧的红宝石(无论如何这可能更安全,请参阅 https://security.stackexchange.com/questions/112545/what-are-the-main-advantages-of-using-libressl-in-favor-of-openssl):
$ openssl
OpenSSL> version
LibreSSL 2.8.3
-
编译并链接您自己的 OpenSSL 1.0(或者在构建 Ruby 时将编译器标志设置为环境变量 -- https://rvm.io/rubies/installing)
查看系统的包管理器是否允许您访问 openssl 1.0 并使用它进行安装(最近正在帮助一位同事解决此问题,但不幸的是,我们目前无法找到适合自制的酒桶)
可能还有比这更简单的事情;如果有人有想法,请随时发表评论或提供替代答案。
编辑
我个人在使用其他一些软件时遇到了这个问题,发现这解决了它,因为旧的 SSL 版本仍然存在:
brew switch openssl 1.0.2s
只要 Homebrew 不能“帮助”我清理它,它就应该可以工作。
【讨论】:
这真的很有帮助!我关注了这个link【参考方案2】:工作示例
brew install rbenv/tap/openssl@1.0
rvm install 2.1.2 -C --with-openssl-dir=`brew --prefix openssl@1.0`
来自https://github.com/rvm/rvm/issues/4819#issuecomment-595644550
【讨论】:
【参考方案3】:对于 Debian 10:
sudo apt-get install -y libssl-dev
【讨论】:
【参考方案4】:在 Amazon Linux 2 上,即使安装了 openssl,您也需要完整的开发工具包
yum install openssl-devel
【讨论】:
【参考方案5】:对我来说,在 centos 7 中解决这个问题
$ openssl version -a
OpenSSL 1.0.2k-fips 26 Jan 2017
built on: reproducible build, date unspecified
platform: linux-x86_64
options: bn(64,64) md2(int) rc4(8x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
------------------------------------------------------------------------
OPENSSLDIR: "/etc/pki/tls" <- ************* COPY THIS PATH *************
------------------------------------------------------------------------
engines: rdrand dynamic
将路径粘贴到下面一行如何 --with-openssl-dir 参数
$ RUBY_CONFIGURE_OPTS="--with-openssl-dir=/etc/pki/tls" rbenv install 2.7.2
【讨论】:
【参考方案6】:在 mac BigSur 上,我通过
修复了它$ rvm pkg install openssl
$ rvm install 2.1.2 -C --with-openssl-dir=$HOME/.rvm/usr
或者你也可以试试
$ rvm pkg install openssl
$ CFLAGS="-Wno-error=implicit-function-declaration" rvm install 2.1.2 -C --with-openssl-dir=$HOME/.rvm/usr
【讨论】:
以上是关于安装 ruby-2.1.2:无法加载此类文件 -- openssl (LoadError)的主要内容,如果未能解决你的问题,请参考以下文章