无法在红宝石中使用openssl

时间:2014-01-18 07:45:02

标签: ruby openssl rubygems

我在我的虚拟机ubuntu12.04lts中安装了openssl。

当我运行gem命令时,它会出错。

  

错误:执行gem时(Gem :: Exception)
        无法要求openssl。安装openSSL并重建ruby(首选)或使用非HTTPs源

我还在irb模式下测试需要openssl。 它给出了错误。

  

Loaderror:无法加载此类文件--openssl
      来自/usr/local/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55`requiret'

我有openssl

$openssl version
OpenSSL 1.0.1 14 mar 2012

如何解决错误?

13 个答案:

答案 0 :(得分:22)

注意:不推荐调用rubygems.org - 请谨慎使用!

在从源代码构建ruby2.1.0p0后,我在Mac OSX上遇到了同样的问题。我已经安装了openssl。似乎宝石中的参考需要刷新。我跑了:

gem source -r https://rubygems.org/删除

接着是

gem source -a https://rubygems.org/阅读

在此之后,我能够成功运行gems install bundler

如果您遇到其他错误,可以在ruby下载dir /中尝试./configure --with-openssl-dir=/usr/local/ssl

答案 1 :(得分:16)

我在使用debian时遇到了这个错误,其中openssl在/ usr / bin。

根据jspacek的建议,我使用以下方法重新配置了ruby:

./configure --with-openssl-dir=/usr/bin

在make和sudo make install之后,我能够安装rails。

答案 2 :(得分:13)

确保安装了libssl-dev:

dpkg -s libssl-dev

如果没有,请安装它:

sudo apt-get -y install libssl-dev

答案 3 :(得分:6)

如果其他人遇到此问题,请尝试重新安装包含openssl的Ruby版本

brew install openssl
rvm reinstall 2.4.0 --with-openssl-dir=`brew --prefix openssl`

您可能已经拥有openssl - 因此您可以忽略第一步。 这对我有帮助。

答案 4 :(得分:4)

我将此答案留给未来的Google员工参考:

在终端(OSX)中键入所有这些命令只是为了确保您已完成所有操作(这最终对我有用)

rvm get stable
brew update
brew doctor
brew install openssl
rvm install ruby-2.1 (or whatever version)
rvm use (ruby version here)  i.e. rvm use ruby-2.1
rvm gemset create NAME   i.e. rvm gemset create rails41
gem install rails -v 4.1

...最后

正如许多评论者指出的那样 - 在安装rails(或其他gem)之前编译ruby之前需要安装OpenSSL

答案 5 :(得分:3)

您可能在安装OpenSSL之前从源代码构建了Ruby。确保安装它,然后尝试重新配置和重建Ruby。

答案 6 :(得分:1)

运行sudo apt-get install libssl-dev libreadline-dev libgdbm-dev后重建Ruby可以解决这个问题。

我找到了这个解决方案here

答案 7 :(得分:1)

最近,由于opensl版本从1.0到1.1的自动更新,我一直在努力地使用ruby进行安装,并希望将其恢复为旧版本。除了下面给出的解决方案,没有其他解决方案对我有用:

brew install rbenv/tap/openssl@1.0 rvm reinstall 1.9.3-p551 --with-openssl-dir='/usr/local/opt/openssl@1.0' gem update --system 现在,我的ruby在openssl 1.0上运行,而所有其他库在默认的openssl版本1.1上运行。

答案 8 :(得分:0)

对我而言,这是一个缺少依赖关系的案例。

我有安装ruby所需的所有依赖项,但我也遇到了openSSL和readline错误。

我试图在没有root权限的情况下使用RVM安装ruby但失败了但是给了我一个缺少依赖项的列表。然后我用包管理器安装了依赖项。然后我重新尝试从头开始安装ruby,一切正常

对我来说,缺少的依赖项是:

 patch libyaml-devel autoconf gcc-c++
 readline-devel libffi-devel openssl-devel
 automake libtool bison sqlite-devel

但它们可能会有所不同。

更新我原本不记得我在哪里找到了这个列表,但快速搜索在以下页面上找到了类似的列表,这也可能对您有所帮助:

https://www.digitalocean.com/community/tutorials/how-to-install-ruby-on-rails-on-centos-6-with-rvm

http://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/install-ruby-on-rails-on-centos-ubuntu-fedora-from-source.html

答案 9 :(得分:0)

我在使用RVM安装Ruby时遇到此错误。没有任何效果。我切换到rbenv。问题解决了!

答案 10 :(得分:0)

这些步骤对我有用:

  1. 修复ruby安装:

    brew upgrade openssl; openssldir = which openssl rvm重新安装ruby-2.4.2 --with-openssl-dir = $ openssldir

  2. 删除并重新添加了宝石的来源

    宝石来源-r https://rubygems.org/ 宝石来源--add https://rubygems.org/

答案 11 :(得分:0)

我有类似的问题,并尝试通过以下指南解决。 “重建红宝石”是重要的一步!

openssl_devel安装后

cd folder_of_ruby_source_code/ext/openssl  
ruby ./extconf.rb  
make  
make install  

cd folder_of_ruby_source_code  
./configure  
make clean       <= clean is important here
make  
make install  

答案 12 :(得分:-2)

您使用RVM吗?

如果没有,请尝试使用它,看看它是否解决了您的问题。