找不到Ruby套件符号:_SSLv2_client_method(LoadError)


249

我正在尝试使用自制软件对openssl进行一些更新,但我设法以某种方式破坏了一切。我现在什么也不能做,这是我尝试进行捆绑安装时得到的:

$ bundle install
/Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in    `require': dlopen(/Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/x86_64-darwin13.0/openssl.bundle, 9): Symbol not found: _SSLv2_client_method (LoadError)
Referenced from: /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/x86_64-darwin13.0/openssl.bundle
Expected in: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
in /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/x86_64-darwin13.0/openssl.bundle - /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/x86_64-darwin13.0/openssl.bundle
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/openssl.rb:17:in `<top (required)>'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/security.rb:11:in `<top (required)>'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/package.rb:43:in `<top (required)>'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/dependency_installer.rb:3:in `<top (required)>'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/installer.rb:2:in `<top (required)>'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/cli/install.rb:78:in `run'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/cli.rb:146:in `install'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/vendor/thor/command.rb:27:in `run'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/vendor/thor/invocation.rb:121:in `invoke_command'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/vendor/thor.rb:363:in `dispatch'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/vendor/thor/base.rb:440:in `start'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/cli.rb:9:in `start'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/bin/bundle:20:in `block in <top (required)>'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/friendly_errors.rb:5:in `with_friendly_errors'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/bin/bundle:20:in `<top (required)>'
    from /Users/asServer/.rbenv/versions/2.1.2/bin/bundle:23:in `load'
    from /Users/asServer/.rbenv/versions/2.1.2/bin/bundle:23:in `<main>'

2
SSLv2已损坏,因此几乎没有理由拥有代码SSLv2_client_method。您可以打开Ruby文件并注释掉对SSLv2方法的引用吗?根本原因是libssl/usr/local/opt/openssl/lib用配置no-ssl2(但它不应该是一个问题在2014年)。
jww 2014年

Answers:


287

我只是在系统上解决了类似的问题。您需要重建Ruby 2.1.2的安装,它将与新更新的SSL重新链接。

$ rbenv install 2.1.2
rbenv: /Users/ryan/.rbenv/versions/2.1.2 already exists
continue with installation? (y/N) y
Downloading ruby-2.1.2.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/f22a6447811a81f3c808d1c2a5ce3b5f5f0955c68c9a749182feb425589e6635
Installing ruby-2.1.2...
Installed ruby-2.1.2 to /Users/ryan/.rbenv/versions/2.1.2

这是在通过rvm重新安装ruby 1.9.3之后发生的。新Mac和旧代码库。我需要其他版本的openssl吗?
digidigo 2014年

8
@ twelve17这些错误与找不到SSL库有关,OP提到他们最近升级了已安装的openssl版本。对于相同的升级方案,我也遇到相同的问题;我怀疑重新安装会导致针对升级后的库构建Ruby(无法找到旧库)来解决问题。
Ryan Dlugosz 2014年

7
只是要添加此内容,如果有Boxen用户遇到此问题-我无法使用上述命令重新安装rbenv-因此,我不得不使用rbenv卸载并重新安装2.1.2 rbenv uninstall 2.1.2 rbenv install 2.1.2 bundle
jeffsaracco 2014年

4
优胜美地升级后,我遇到了这个问题。以上工作,但仅在我重定向我的gcc之后。 export CC=/usr/bin/gcc有关更多信息:这是rbenv的github问题,对您有所帮助
Dan Williams

1
如果您将rbenv与homebrew一起安装,则可能也需要安装brew upgrade rbenv ruby-build
贾斯汀·坦纳

185

升级openssl后,我遇到了类似的问题。我用rvm。我盯着升级rvm。

$ rvm get stable

接下来,我重新安装了1.9.3。

rvm reinstall ruby-1.9.3-p545

重新安装后,我运行了:

$ rvm gemset pristine

如果您在还原宝石集时发现任何错误,最好的选择是清空宝石集并重建它。

rvm gemset use mygemset
rvm gemset empty mygemset
gem install bundler
bundle install

如果您有多个宝石集,则必须为每个宝石集重复这些步骤。


10
这对我有用。rvm自动启动了原始宝石集的构建。
Ducain 2014年

为我工作的优山美地,我只是跑: rvm get stablervm reinstall ruby-2.0.0
MatCarey

4
在优胜美地上,我无法安装ruby,因为找不到正确的gcc版本。我最后是CC=/usr/bin/gcc rvm reinstall ruby-1.9.3-p551
亚历山大·贝莱茨基

@MatCarey rvm get stablervm reinstall ruby-2.0.0也曾在小牛队工作。谢谢。
amertkara 2014年

rvm get stable其次是对我有用的rvm install ruby-2.0.0-p598(因为我落后了几个补丁程序版本)。另外,在成功运行之前,我更新.ruby-version,运行bundle并退出了当前的工作目录(cd ..),并返回到该目录()。cd -foreman start
user664833

17

对于rvm下的1.9.3-p547有相同的问题

rvm reinstall ruby-1.9.3-p547

重新安装Ruby,但gemset_pristine由于为应用程序设置失败,原因是

libv8 version 3.16.14.3 failed

这就是我首先达到这一点的原因。恶性挫折圈...

更新
检查您的平台版本。例如,我有达尔文10.8,此处未列出。因此,除非您的libv8 gem版本为您的平台准备了预编译的二进制文件,否则它将需要很长的时间。出去吃晚饭,看电影,放松一下...如果问得足够多,也许他们会建立一个二进制发行版...


1
我还需要对ruby 1.9.3的支持rvmhomebrewxcode在优胜美地10.10.2。上使用和v6.1.1。我用过rvm reinstall ruby-1.9.3-p394; 在编译了新的红宝石之后,RVM也使这些宝石质朴,而且没有任何问题。
汤姆·哈里森

是的,它基于二进制分布。该链接可让您首先检查他们是否会立即得到答复或开始冥想!
杰罗姆


7

您可能像我一样呆呆,有多个openssl

对于2.1.2,我遇到了同样的问题,而Ryan Dlugosz的出色回答还远远不够。我的问题是我安装了多个版本的openssl(我认为我是在以前的项目中brew 以及 git之前的项目中安装的)。

我不得不删除/ opt / local / bin / openssl,然后重建2.1.2。

检查全球rbenv红宝石

$ rbenv global
2.1.2

检查openssl

$ which -a openssl
/opt/local/bin/openssl
/opt/local/bin/openssl
/usr/bin/openssl

杀死重复的openssl

$ sudo rm -rf /opt/local/bin/openssl

重建2.1.2

$ rbenv install -f 2.1.2
Downloading openssl-1.0.1g.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/53cb818c3b90e507a8348f4f5eaedb05d8bfe5358aabb508b7263cc670c3e028
Installing openssl-1.0.1g...
Installed openssl-1.0.1g to /Users/globber/.rbenv/versions/2.1.2

Downloading ruby-2.1.2.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/f22a6447811a81f3c808d1c2a5ce3b5f5f0955c68c9a749182feb425589e6635
Installing ruby-2.1.2...
Installed ruby-2.1.2 to /Users/globber/.rbenv/versions/2.1.2


4

rbenv用户:

这有助于确保您使用的是正确版本的红宝石。如果重新安装rbenv或安装新的ruby,请更改为刚安装的ruby版本:

$ rbenv本地2.1.3


1

如果它可能对任何人都有帮助:我安装了较新版本的Ruby(2.1.2),在我的.ruby版本文件中,我引用了旧版本(2.0.0-p353)

将我的.ruby-version文件更改为2.1.2可以解决此问题。


1

我有一个类似的问题,升级到ruby 2.2.2后发生了。但是,我的环境略有不同,导致上述解决方案无法正常工作。

我正在使用:

  • OSX优胜美地(10.10.4)
  • 克鲁比
  • 红宝石安装
  • openssl(通过自制程序安装)

在我的情况下,以下命令可以解决此问题:

> sudo ruby-install -r /opt/rubies ruby 2.2.2 -- --with-openssl-dir=/usr/local/opt/openssl
> gem install bundler
> bundler install

0

除了上面的接受答案之外,您可能还必须告诉rbenv使用新安装的版本。例如,我在〜/ .rbenv / version中有旧版本,因此rbenv始终使用旧版本。在该文件中手动设置新版本(或通过命令行)应该可以解决该问题。

rbenv install -f 2.1.2
rbenv versions
rbenv global 2.1.2 //sets global version to 2.1.2

如果您对rbenv看不到较新版本有麻烦,就像我认识的人一样...请确保您已更新ruby-build。最有可能通过酿造。
wkhatch
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.