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

Eri*_*son 8 ruby macos ruby-on-rails 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>'
Run Code Online (Sandbox Code Playgroud)

他尝试了不同版本的Ruby.重新安装一切rvm.运行rvm implode并重新安装rvm.切换到rbenv.通过安装几个红宝石ruby-build.brew install ruby.

所有人都有同样的问题.

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

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

Eri*_*son 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)或其他构建问题有关.

    如果以前的解决方案不起作用,请参阅此答案.