LoadError:dlopen(digest / sha1.bundle):找不到符号:_rb_Digest_SHA1_Finish

时间:2013-03-05 07:35:39

标签: ruby-on-rails ruby macos rvm rbenv

Ruby最近停止了我兄弟的机器。

  • gem命令
  • rails server
  • rails console

全部因以下错误而失败:

$ irb
irb(main):001:0> require 'digest/sha1'

LoadError: dlopen(~/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/x86_64-darwin12.2.0/digest/sha1.bundle, 9): Symbol not found: _rb_Digest_SHA1_Finish
  Referenced from: ~/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/x86_64-darwin12.2.0/digest/sha1.bundle
  Expected in: flat namespace

 in ~/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/x86_64-darwin12.2.0/digest/sha1.bundle - ~/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/x86_64-darwin12.2.0/digest/sha1.bundle
    from ~/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
    from ~/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
    from (irb):1
    from ~/.rbenv/versions/2.0.0-p0/bin/irb:12:in `<main>'

他尝试了不同版本的Ruby。使用rvm重新安装所有内容。正在运行rvm implode并重新安装rvm。切换到rbenv。通过ruby-build安装了几个Rubies。 brew install ruby

所有人都有同样的问题。

如果他卸载了所有红宝石,那么/usr/bin/ruby中提供的操作系统版本就可以了。但它是1.8.7。

经过数小时的故障排除后,我们得出了以下解决方案。我希望它可以帮助你避免一些痛苦。

2 个答案:

答案 0 :(得分:10)

可能的解决方案:

  1. $ unset C_INCLUDE_PATH 并重新安装Ruby

    这是适合我的解决方案。

    $ echo $C_INCLUDE_PATH

    如果设置了C_INCLUDE_PATH,它将破坏Ruby构建。将其从您的环境中移除;暂时使用$ unset C_INCLUDE_PATH,或永久保存(可能位于.bashrc,.profile,.bash_profile);然后重新安装红宝石。

  2. 它可能与OpenSSL,RVM,XCode的命令行工具(gcc)或其他构建问题有关。

    如果之前的解决方案不起作用,请参阅this answer

答案 1 :(得分:2)

对于像我这样的人,因为这样的错误而来到这里:

LoadError: dlopen(/Users/sebkomianos/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/x86_64-darwin13.0.0/openssl.bundle, 9): Symbol not found: _SSLv2_client_method
Referenced from: /Users/sebkomianos/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/x86_64-darwin13.0.0/openssl.bundle
Expected in: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib

一个解决方案(taken from here)可能是重新安装您的ruby版本。例如:rbenv install 2.0.0-p247