安装 ruby-2.1.2:无法加载此类文件 -- openssl (LoadError)
Installing ruby-2.1.2: Cannot load such file -- openssl (LoadError)
使用 rvm 安装 ruby-2.1.2 时出现一些错误。我是 ruby 的新手,因此需要帮助。请告诉我
安装日志和其他相关信息在这里:log
根据问题描述中提供的日志,我的系统中安装了ruby2.1.2。但是,由于安装 errors.After 更改为 2.1.2,即 rvm use 2.1.2
并执行 ruby -r openssl -e 'puts OpensSSL::OPENSSL_VERSION'
而尝试使用 gem list
列出宝石时出现错误:
/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': cannot load such file -- openssl (LoadError) from /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'
Ruby <2.4 与 OpenSSL 1.1 不兼容(例如参见 [=14=])。
只是预感,但如果您使用的是 Mac + Homebrew,OpenSSL 1.0 最近已被删除,所以任何与 brew upgrade openssl
类似的东西都会成为垃圾。
有几种方法可以解决这个问题:
- 我通过
asdf
安装了旧的 Rubies 和 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
- 编译并link您自己的 OpenSSL 1.0(或者在构建时将编译器标志设置为环境变量 Ruby -- https://rvm.io/rubies/installing)
- 查看您系统的包管理器是否允许您访问 openssl 1.0 并使用它进行安装(最近正在帮助同事解决这个问题,不幸的是,我们目前无法找到适合自制软件的小桶)
可能还有比这更简单的事情;如果有人有想法,请随时发表评论或给出替代答案。
编辑
我个人 运行 使用其他一些软件解决了这个问题,发现这解决了它,因为旧的 SSL 版本仍然存在:
brew switch openssl 1.0.2s
只要 Homebrew 不"helpfully" 帮我清理它就应该可以工作。
工作示例
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
对于 debian 10:
sudo apt-get install -y libssl-dev
亚马逊Linux2,即使安装了openssl,也需要完整的开发包
yum install openssl-devel
我在 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
在下面的行中粘贴路径 how --with-openssl-dir param
$ RUBY_CONFIGURE_OPTS="--with-openssl-dir=/etc/pki/tls" rbenv install 2.7.2
在 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
在 Mac OS X Big Sur 上,安装 Ruby 2.3.2 和 RVM,修复是
brew install rbenv/tap/openssl@1.0
CFLAGS="-Wno-error=implicit-function-declaration" rvm reinstall ruby-2.2.5 --with-openssl-dir='/usr/local/opt/openssl@1.0'
使用 rvm 安装 ruby-2.1.2 时出现一些错误。我是 ruby 的新手,因此需要帮助。请告诉我
安装日志和其他相关信息在这里:log
根据问题描述中提供的日志,我的系统中安装了ruby2.1.2。但是,由于安装 errors.After 更改为 2.1.2,即 rvm use 2.1.2
并执行 ruby -r openssl -e 'puts OpensSSL::OPENSSL_VERSION'
而尝试使用 gem list
列出宝石时出现错误:
/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': cannot load such file -- openssl (LoadError) from /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'
Ruby <2.4 与 OpenSSL 1.1 不兼容(例如参见 [=14=])。
只是预感,但如果您使用的是 Mac + Homebrew,OpenSSL 1.0 最近已被删除,所以任何与 brew upgrade openssl
类似的东西都会成为垃圾。
有几种方法可以解决这个问题:
- 我通过
asdf
安装了旧的 Rubies 和 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
- 编译并link您自己的 OpenSSL 1.0(或者在构建时将编译器标志设置为环境变量 Ruby -- https://rvm.io/rubies/installing)
- 查看您系统的包管理器是否允许您访问 openssl 1.0 并使用它进行安装(最近正在帮助同事解决这个问题,不幸的是,我们目前无法找到适合自制软件的小桶)
可能还有比这更简单的事情;如果有人有想法,请随时发表评论或给出替代答案。
编辑
我个人 运行 使用其他一些软件解决了这个问题,发现这解决了它,因为旧的 SSL 版本仍然存在:
brew switch openssl 1.0.2s
只要 Homebrew 不"helpfully" 帮我清理它就应该可以工作。
工作示例
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
对于 debian 10:
sudo apt-get install -y libssl-dev
亚马逊Linux2,即使安装了openssl,也需要完整的开发包
yum install openssl-devel
我在 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
在下面的行中粘贴路径 how --with-openssl-dir param
$ RUBY_CONFIGURE_OPTS="--with-openssl-dir=/etc/pki/tls" rbenv install 2.7.2
在 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
在 Mac OS X Big Sur 上,安装 Ruby 2.3.2 和 RVM,修复是
brew install rbenv/tap/openssl@1.0
CFLAGS="-Wno-error=implicit-function-declaration" rvm reinstall ruby-2.2.5 --with-openssl-dir='/usr/local/opt/openssl@1.0'