无法要求openssl,安装OpenSSL和重建ruby(首选)或使用非HTTPS源


69

我正在尝试安装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

欢迎您提出解决此错误的建议。


您可能想在问题中加入一些上下文,而不是仅在OS上使用单行代码转储代码。您是否看过这个帖子re:第一个错误?stackoverflow.com/a/25186429/4475605
阿德里安

嗨,阿德里安,我不是OSX 10.10中的错误。但是我将系统更新为OSX10.11,但出现了错误。
查尔斯·戴维

@CharsDavy您可能想要更改已接受的解决方案
noraj

我能够使用命令来解决openssl问题,rvm pkg install opensslrvm install 2.5.3 --with-openssl-dir=$rvm_path/usr
博文

Answers:


162

较新版本的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的新笔记本电脑,而我的常规教程却无法正常工作!
chrisallick '17

3
对于仍然卡住的人,只有在rvm命令中的ssl dir匹配运行$ $ openssl时获得的路径时,这才有效
andy

1
在OS X 10.13.6和Ruby 2.5.3上,这不适用于我。我尝试使用`brew --prefix openssl``which openssl`'actual/path/to/openssl'作为该选项的参数。没事。我无法安装gem。
Huliax

6
终于让它工作了。我必须同时实现这个答案和下面@guapolo的答案。单独使用这两种解决方案都行不通。
Huliax

值得考虑的另一种选择(尤其是重新启动或使用新计算机时)是切换到rbenv。简单而可预测的RVM的github星级增加了三倍。这个问题很难解决,尤其是对于<=的Ruby版本2.3,因此,如果需要支持它们,我强烈建议您进行切换。(仅供参考,需要卸载rvm)。
stwr667 '19

37

方法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(或其他gems)之前,需要在编译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`

2
我有红宝石2.4.1的问题。我已经安装了openssl,方法2为我解决了这个问题。我更新了rvm本身,rvm get stable并使用rvm重新安装了ruby rvm reinstall ruby-2.4.1
德米特里·谢维索夫

2
我遇到了红宝石2.4.2。我结合了更新rvm的步骤,然后重新安装了dir param --with-openssl-dir。我建议您还运行which openssl一下,以知道要在rvm命令中使用哪个目录。
狂欢者

13

您只需要设置此env变量,以便您的编译器具有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

然后重新安装红宝石(rvm reinstall ruby-version


3
这对我有用。但是,当我重新安装时必须指定OpenSSL目录:rvm reinstall 2.5.1 --with-openssl-dir=`brew --prefix openssl`在OSX机器上
John Skiles Skinner,

3
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`

0

考虑到与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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.