ruby-on-rails – LoadError:dlopen(digest / sha1.bundle):找不到符号:_rb_Digest_SHA1_Finish

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

> gem命令
> rails服务器
> 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安装ruby.

所有人都有同样的问题.

如果他卸载了所有rubies,那么/usr/bin/ruby​​中提供的OS版本就可以了.但它是1.8.7.

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

解决方法

可能的解决方案:

> $unset C_INCLUDE_PATH并重新安装Ruby

这是对我有用的解决方案.

$echo $C_INCLUDE_PATH

如果设置了C_INCLUDE_PATH,它将破坏Ruby构建.将其从您的环境中移除;要么暂时使用$unset C_INCLUDE_PATH,要么永久保存(可能在.bashrc,.profile,.bash_profile中);然后重新安装ruby.
>它可能与OpenSSL,RVM,XCode的命令行工具(gcc)或其他构建问题有关.

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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...