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

Cha*_*avy 53 macos rubygems

我正在尝试安装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
Run Code Online (Sandbox Code Playgroud)

我欢迎您提出如何解决此错误的建议.

Mee*_*ohi 146

较新版本的OSX弃用了openSSL,导致许多依赖项被破坏.您需要重新安装ruby,但要准确指定openSSL库的位置.如果你正在使用rvm那么看起来像:

rvm reinstall 2.3.0 --with-openssl-dir=/usr/local/opt/openssl
Run Code Online (Sandbox Code Playgroud)

如果您使用自制软件,那么快速访问库的位置是:

brew install openssl
rvm reinstall 2.3.0 --with-openssl-dir=`brew --prefix openssl`
Run Code Online (Sandbox Code Playgroud)

  • 终于搞定了.我必须在下面的@guapolo中实现这个答案和答案.这两种解决方案都不会起作用. (4认同)
  • 可能对某人有用,如果你有 3 个版本的 openssl (@1.0、@1.1、@3),请尝试使用 `rvm reinstall 3.0.2 --with-openssl-dir=\`brew --prefix openssl @1.1\`` 如果使用 `brew --prefix openssl`,它是最新版本 3 并且也会引发错误。 (4认同)
  • 对于仍然卡住的任何人,这仅在 rvm 命令中的 ssl 目录与您运行 $ which openssl 时获得的路径匹配时才有效 (3认同)

Sur*_*yaa 31

方法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
Run Code Online (Sandbox Code Playgroud)

最后,在安装Jekyll(或其他宝石)之前,在编译Ruby之前需要安装OpenSSL!

方法2(重新安装Ruby)

较新版本的OSX弃用了openSSL.

你需要重新安装Ruby!

使用OpenSSL的RVM

rvm reinstall 2.3.0 --with-openssl-dir=/usr/local/opt/openssl
Run Code Online (Sandbox Code Playgroud)

使用最新的RVM版本

rvm get stable
rvm reinstall ruby-2.3.0
Run Code Online (Sandbox Code Playgroud)

自制软件和OpenSSL

brew install openssl
rvm reinstall 2.3.0 --with-openssl-dir=`brew --prefix openssl`
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了ruby 2.4.1的问题.我安装了openssl,方法2为我解决了这个问题.我用`rvm get stable'更新了rvm本身并用rvm`rvm重新安装ruby-2.4.1`重新安装ruby. (2认同)
  • 我在 ruby​​ 2.4.2 中遇到了这个问题。我结合了更新 rvm 的步骤,然后使用 dir 参数 `--with-openssl-dir` 重新安装。我建议您还运行 `which openssl` 以了解要在 rvm 命令中使用的目录。 (2认同)

小智 9

你只需要设置这个env变量,这样你的编译器就有了openssl libs的正确路径(如果在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
Run Code Online (Sandbox Code Playgroud)

然后重新安装你的ruby(rvm reinstall ruby-version)

  • 这对我有用。然而,当我重新安装时必须指定 OpenSSL 目录:`rvm重新安装 2.5.1 --with-openssl-dir=\`brew --prefix openssl\`` 在我的 OSX 机器上 (3认同)

Abh*_*nde 8

适用于 ubuntu 22.04。Ruby 无法使用 openssl v3 进行编译。如果你使用brew安装的话,这就是openssl。做这个:

brew install openssl@1.1
rvm install 3.0.2 --with-openssl-dir=`brew --prefix openssl@1.1`
Run Code Online (Sandbox Code Playgroud)