【问题标题】:Ruby openssl version is different than system's opensslRuby openssl 版本与系统的 openssl 不同
【发布时间】:2017-02-19 09:22:13
【问题描述】:

我使用 rbenv 安装了 ruby​​ 2.3.0。安装 ruby​​ 后使用不同的 openssl,然后是我在我的操作系统中使用的。我该如何解决这个问题?

[cp@cloud pkgconfig]$ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
  OpenSSL 1.0.1e 11 Feb 2013
[cp@cloud pkgconfig]$ openssl version
  OpenSSL 1.0.2k  26 Jan 2017

我尝试使用 openssl 选项重新安装 ruby​​,但出现以下错误

在 openssl dir 选项中提供可执行路径:

which openssl
/usr/bin/openssl

RUBY_CONFIGURE_OPTS="--with-openssl-dir=/usr/bin/openssl” rbenv install 2.3.1

BUILD FAILED (CentOS release 6.8 (Final) using ruby-build 20160913-13-g8ef0c34)

Inspect or clean up the working tree at /tmp/ruby-build.20170219080937.10731
Results logged to /tmp/ruby-build.20170219080937.10731.log

日志文件

linking shared-object digest/bubblebabble.so
make[2]: Leaving directory `/tmp/ruby-build.20170219073346.517/ruby-2.3.1/ext/digest/bubblebabble'
make[2]: Entering directory `/tmp/ruby-build.20170219073346.517/ruby-2.3.1/ext/digest/md5'
compiling md5init.c
cc1: error: /usr/bin/openssl/include: Not a directory
make[2]: *** [md5init.o] Error 1
make[2]: Leaving directory `/tmp/ruby-build.20170219073346.517/ruby-2.3.1/ext/digest/md5'
make[1]: *** [ext/digest/md5/all] Error 2
make[1]: Leaving directory `/tmp/ruby-build.20170219073346.517/ruby-2.3.1'
make: *** [build-ext] Error 2

给出源目录路径

RUBY_CONFIGURE_OPTS=--with-openssl-dir=/usr/local/src/openssl-1.0.2k rbenv install 2.3.1

构建失败(使用 ruby​​-build 20170201-7-g5d62e84 的 CentOS 版本 6.8(最终版))

Inspect or clean up the working tree at /tmp/ruby-build.20170219084345.1062
Results logged to /tmp/ruby-build.20170219084345.1062.log

Last 10 log lines:
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/package.rb:44:in `<top (required)>'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/installer.rb:10:in `<top (required)>'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require'
    from ./tool/rbinstall.rb:657:in `<module:RbInstall>'
    from ./tool/rbinstall.rb:585:in `<main>'

日志文件

generating x86_64-linux-fake.rb
x86_64-linux-fake.rb updated
./miniruby -I./lib -I. -I.ext/common  ./tool/runruby.rb --extout=.ext  -- --disable-gems -r./x86_64-linux-fake ./tool/rbinstall.rb --make="make" --dest-dir="" --extout=".ext" --mflags="" --make-flags="" --data-mode=0644 --prog-mode=0755 --installed-list .installed.list --mantype="doc" --install=all --rdoc-output=".ext/rdoc"
/tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require': /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/.ext/x86_64-linux/openssl.so: undefined symbol: EC_GROUP_new_curve_GF2m - /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/.ext/x86_64-linux/openssl.so (LoadError)
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/.ext/common/openssl.rb:13:in `<top (required)>'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/security.rb:12:in `<top (required)>'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/package.rb:44:in `<top (required)>'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/installer.rb:10:in `<top (required)>'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /tmp/ruby-build.20170219084345.1062/ruby-2.3.1/lib/rubygems/core_ext/kernel_require.rb:55:in `require'
    from ./tool/rbinstall.rb:657:in `<module:RbInstall>'
    from ./tool/rbinstall.rb:585:in `<main>'
make: *** [do-install-all] Error 1

【问题讨论】:

  • OpenSSL::OPENSSL_VERSION 是 Ruby 构建 的版本,不一定是它当前使用的版本。 OpenSSL::OPENSSL_LIBRARY_VERSION 的值是多少?
  • 2.3.0 :073 > OpenSSL::OPENSSL_LIBRARY_VERSION => "OpenSSL 1.0.1e-fips 2013 年 2 月 11 日"
  • 您需要将您的评论发送给@matt——否则他不太可能看到它。

标签: ruby-on-rails ruby openssl rbenv


【解决方案1】:

这都是关于 PATH 的。将搜索 PATH 环境变量中指定的目录以查找您发出的任何命令。所以 rbenv 必须在你的 PATH 前面添加一个目录,在其中找到一个名为 openssl 的命令,即 rbenv 的 openssl 版本。

怎么办?

1) 您可以尝试将包含系统 openssl 的目录移动到路径前面的 rbenv 目录前面,例如在 .bash_profile 或类似的底部:

export PATH="/path/to/openssl:$PATH"

2) rbenv 允许您在安装 ruby​​ 时指定包含 openssl 的目录:

$ RUBY_CONFIGURE_OPTS="--with-openssl-dir=/path/to/openssl” rbenv install 2.4.0

3) 您也许可以删除 rbenv 安装的 openssl 命令。您可以使用以下方式找出命令所在的第一个目录:

$ which openssl

但我不会删除该命令,而是将其mv 改成不同的名称,以防您以后需要它:

$ mv openssl rbenv_openssl

那么当在该目录中搜索 openssl 命令时将找不到,因此将按顺序搜索路径中的其他目录,直到找到系统的 openssl 命令。

如果更改 rbenv 的 openssl 的名称会破坏 rbenv,您可以将命令 mv 恢复为原来的名称。

【讨论】:

  • 哪个 openssl o/p 是“/usr/bin/openssl”。当我安装 ruby​​ 时出现以下错误 make[2]: Entering directory /tmp/ruby-build.20170219073346.517/ruby-2.3.1/ext/digest/md5' compiling md5init.c cc1: error: /usr/bin/openssl/include: Not a directory make[2]: *** [md5init.o] Error 1 make[2]: Leaving directory /tmp/ruby-build.20170219073346.517/ruby-2.3.1/ext/digest/md5' make[1]: *** [ext/digest /md5/all] 错误 2 make[1]: 离开目录 `/tmp/ruby-build.20170219073346.517/ruby-2.3.1' make: *** [build-ext] 错误 2
  • @loganathan,缺少太多信息。在问题的底部发布所有内容。
猜你喜欢
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-16
  • 2012-08-14
  • 1970-01-01
相关资源
最近更新 更多