无法要求 openssl,安装 OpenSSL 并重建 ruby(首选)或使用非 HTTPS 源
Posted
技术标签:
【中文标题】无法要求 openssl,安装 OpenSSL 并重建 ruby(首选)或使用非 HTTPS 源【英文标题】:Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources 【发布时间】:2016-09-17 02:55:30 【问题描述】:我正在尝试安装jekyll
,但遇到了错误。我正在运行 Mac OS X 10.11.4 (El Capitan)。
$gem install jekyll
ERROR : While executing gem ... (Gem::Exception)
Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources
$gem source -l
https://ruby.taobao.org
$which openssl
/usr/local/bin/openssl
欢迎您提出如何解决此错误的建议。
【问题讨论】:
您可能想为您的问题提供一些背景信息,而不是仅仅在您的操作系统上使用单行代码转储代码。您是否看过这篇帖子:第一个错误? ***.com/a/25186429/4475605 嗨阿德里安,我不是 OSX 10.10 中的错误。但是我将系统更新到 OSX10.11,我遇到了错误。 @CharsDavy 您可能想更改已接受的解决方案 我能够使用rvm pkg install openssl
和rvm install 2.5.3 --with-openssl-dir=$rvm_path/usr
中的命令修复openssl 问题,如this post 中所述
【参考方案1】:
方法一(安装OpenSSL)
在您的终端 (OSX) 中键入所有这些命令,以确保您已完成所有操作:
rvm get stable
brew update
brew doctor
brew install openssl
rvm install ruby-2.4 (or whatever version)
rvm use ruby-2.4 (or whatever version)
rvm gemset create jekyll
gem install jekyll
最后,在安装 Jekyll(或其他 gem)之前,您需要在编译 Ruby 之前安装 OpenSSL!
方法2(重新安装Ruby)
较新版本的 OSX 已弃用 openSSL。
您需要重新安装 Ruby!
带有 OpenSSL 的 RVM
rvm reinstall 2.3.0 --with-openssl-dir=/usr/local/opt/openssl
使用最新的 RVM 版本
rvm get stable
rvm reinstall ruby-2.3.0
自制软件和 OpenSSL
brew install openssl
rvm reinstall 2.3.0 --with-openssl-dir=`brew --prefix openssl`
【讨论】:
我遇到了 ruby 2.4.1 的问题。我安装了 openssl,方法 2 为我解决了这个问题。我用rvm get stable
更新了 rvm 本身,并用 rvm rvm reinstall ruby-2.4.1
重新安装了 ruby。
我在 ruby 2.4.2 中遇到了这个问题。我将更新 rvm 然后使用 dir 参数--with-openssl-dir
重新安装的步骤结合起来。我建议您也运行which openssl
以了解在您的 rvm 命令中使用哪个目录。【参考方案2】:
较新版本的 OSX 弃用了 openSSL,导致许多依赖项被破坏。您需要重新安装 ruby,但要准确指定 openSSL 库的位置。如果您使用的是rvm
,那么它看起来像:
rvm reinstall 2.3.0 --with-openssl-dir=/usr/local/opt/openssl
如果您使用的是自制软件,那么您的库所在位置的快速快捷方式是:
brew install openssl
rvm reinstall 2.3.0 --with-openssl-dir=`brew --prefix openssl`
【讨论】:
天哪!这让我发疯了。我刚买了一台 10.12.6 的新笔记本电脑,我的常规教程没有用! 对于仍然卡住的任何人,这仅在 rvm 命令中的 ssl 目录与您运行 $ which openssl 时获得的路径匹配时才有效 这不适用于 OS X 10.13.6 和 Ruby 2.5.3。我尝试使用`brew --prefix openssl`
、`which openssl`
和'actual/path/to/openssl'
作为选项的参数。没有任何效果。我无法安装 gem。
终于让它工作了。我必须同时实现这个答案和下面@guapolo 的答案。这两种解决方案本身都行不通。
一个值得考虑的替代方案(特别是在重新开始或使用新计算机时)是切换到rbenv。将 RVM 的 github 星数增加三倍,简单且可预测。这个问题真的很难解决,特别是对于 Ruby 版本 2.3,所以如果你需要支持它们,我强烈建议切换。 (仅供参考,需要卸载 rvm)。【参考方案3】:
您只需要设置此环境变量,以便您的编译器具有正确的 openssl 库路径(如果在 macOS 上使用 Homebrew,请尝试 brew info openssl
以查看此信息):
$ export LDFLAGS=-L/usr/local/opt/openssl/lib
$ export CPPFLAGS=-I/usr/local/opt/openssl/include
# For pkg-config to find this software you may need to set:
$ export PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig
然后重新安装你的 ruby (rvm reinstall ruby-version
)
【讨论】:
这对我有用。但是,当我重新安装时必须指定 OpenSSL 目录:rvm reinstall 2.5.1 --with-openssl-dir=`brew --prefix openssl`
在我的 OSX 机器上【参考方案4】:
考虑到与openssl相关的其他答案,我们在某些情况下尝试以超级用户身份执行时会看到相同的错误,如下所示:
filipe@FILIPE:~$ sudo gem install bundler
ERROR: While executing gem ... (Gem::Exception)
Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources
没有超级用户权限,我们可以看到不同的行为,一个成功的,如下:
filipe@FILIPE:~$ gem install bundler
Fetching: bundler-1.14.6.gem (100%)
Successfully installed bundler-1.14.6
Parsing documentation for bundler-1.14.6
Installing ri documentation for bundler-1.14.6
Done installing documentation for bundler after 4 seconds
1 gem installed
【讨论】:
【参考方案5】:brew install openssl
brew info openssl # do the suggested options
$ export LDFLAGS=-L/usr/local/opt/openssl/lib
$ export CPPFLAGS=-I/usr/local/opt/openssl/include
# For pkg-config to find this software you may need to set:
$ export PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig
rvm reinstall <version> --with-openssl-dir=`brew --prefix openssl`
【讨论】:
以上是关于无法要求 openssl,安装 OpenSSL 并重建 ruby(首选)或使用非 HTTPS 源的主要内容,如果未能解决你的问题,请参考以下文章
Gmssl与Openssl版本兼容安装方式,解决gmssl安装后,openssl无法使用的问题
安装 ruby-2.1.2:无法加载此类文件 -- openssl (LoadError)
致命错误 C1083:无法打开包含文件:“openssl/opensslv.h”