【问题标题】:Couldn't require openssl in ruby在 ruby​​ 中不能要求 openssl
【发布时间】:2014-02-07 16:53:42
【问题描述】:

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

当我运行 gem 命令时,它给出了错误。

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

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

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

我有openssl

$openssl version
OpenSSL 1.0.1 14 mar 2012

如何修复错误?

【问题讨论】:

  • 您使用的是哪个版本的 Ruby,您是如何安装的?您可能必须按照错误消息中的说明重新构建 Ruby。
  • 嗨,大卫,我正在使用 ruby​​ 的 ruby​​2.1.0p0。我通过构建它的源代码来安装它。
  • 问题看起来像文件名:--opensslopenssl(除非 Ruby 在错误输出前添加破折号)。 openssl 是否不小心被格式化为开关?
  • 您好 noloader,很抱歉,我无法理解您的问题。 openssl 是否意外被格式化为开关?这是什么意思我该如何回答这个问题。帮我做谢谢:)
  • 如果我不想使用 openssl 运行怎么办?

标签: ruby openssl rubygems


【解决方案1】:

注意:不推荐调用 ruby​​gems.org - 请谨慎操作!

在从源代码构建 ruby​​2.1.0p0 之后,我在 Mac OSX 上遇到了同样的问题。我已经安装了 openssl。看来 gems 中的引用需要刷新。我跑了:

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

紧随其后

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

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

如果您遇到更多错误,您可以在您下载的 ruby​​ 目录/中尝试./configure --with-openssl-dir=/usr/local/ssl

【讨论】:

  • 感谢您的提醒!我会说明这个解决方案已被弃用,因为答案现在已经过时了。
  • 谢谢。在从源代码在 linux 上安装 ruby​​ 2.2 之后,我也遇到了同样的问题。您的修复工作
  • 从安全角度来看,这不仅被弃用,而且令人恐惧。
  • @DrewStephens 我对安全性不是很了解——您介意详细说明一下吗?很高兴知道!
  • @jspacek 不使用 HTTPS 会打开连接到中间人攻击。没有证书固定的 HTTPS 仍然容易受到很多攻击,但至少它们需要受信任的证书。在检索 gem 的情况下不太重要的是 S 可以防止攻击者窃听您的 HTTP 请求。
【解决方案2】:

我在使用 /usr/bin 中的 openssl 的 debian 时遇到此错误。

按照 jspacek 的建议,我使用以下方法重新配置了 ruby​​:

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

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

【讨论】:

  • 这是我的树莓派运行 Raspbian / Debian 的问题
  • 这真的很有帮助!
  • 对于 Homebrew 用户:brew install openssl; rvm reinstall 2.3.0 --with-openssl-dir=brew --prefix openssl``
【解决方案3】:

确保您已安装 libssl-dev:

dpkg -s libssl-dev

如果没有,请安装它:

sudo apt-get -y install libssl-dev

【讨论】:

    【解决方案4】:

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

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

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

    【讨论】:

      【解决方案5】:

      我将此答案留给未来的 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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

        • 在 bash 中执行 $ openssl 对我有用...但尝试运行任何 gem 命令最终会出现在 cannot load such file -- openssl
        【解决方案7】:

        最近,由于最近将 openssl 版本从 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】:

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

          我找到了这个解决方案here

          【讨论】:

            【解决方案9】:

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

            【讨论】:

              【解决方案10】:

              对我来说,这是缺少依赖项的情况。

              以为我拥有安装 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

              【讨论】:

                【解决方案11】:

                这些步骤对我有用:

                1. 固定红宝石安装:

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

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

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

                【讨论】:

                  【解决方案12】:

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

                  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  
                  

                  【讨论】:

                    【解决方案13】:

                    您使用 RVM 吗?

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

                    【讨论】:

                    • 我已经从源代码安装了 ruby​​。所以正如你所说的安装 rvm。怎么做。我是否要删除已安装的 ruby​​ 并在 rvm 的帮助下安装 ruby​​。我不清楚你能不能告诉我。从源代码安装 ruby​​ 和通过 rvm 安装有什么区别。请让我知道我需要一些好的参考。谢谢:)
                    • 我正在使用 rvm 并搜索有关 SSL 安装支持的文档。我会听从@notaceo 的建议
                    猜你喜欢
                    • 2018-08-20
                    • 2018-04-22
                    • 1970-01-01
                    • 2015-08-29
                    • 2016-09-17
                    • 2016-09-27
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多