Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LoadError: dlopen(digest/sha1.bundle): Symbol not found: _rb_Digest_SHA1_Finish

Ruby stopped working on my brother's machine recently.

  • gem commands
  • rails server
  • rails console

All failed with the following error:

$ 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>'

He tried different versions of Ruby. Reinstalling everything with rvm. Running rvm implode and reinstalling rvm. Switching to rbenv. Several Rubies installed via ruby-build. brew install ruby.

All had the same problem.

If he uninstalled all rubies, the OS supplied version in /usr/bin/ruby worked. But it's 1.8.7.

After hours of troubleshooting, we arrived at the solution below. I hope it helps you avoid some pain.

like image 975
Erik Peterson Avatar asked Mar 05 '13 07:03

Erik Peterson


2 Answers

Possible solutions:

  1. $ unset C_INCLUDE_PATH and reinstall Ruby

    This is the solution that worked for me.

    $ echo $C_INCLUDE_PATH

    If C_INCLUDE_PATH is set, it will break Ruby builds. Remove it from your environment; either temporarily with $ unset C_INCLUDE_PATH, or permanently (might be in .bashrc, .profile, .bash_profile); then reinstall ruby.

  2. It might be related to OpenSSL, RVM, XCode's Command Line Tools (gcc), or other build issues.

    See this answer if the previous solution didn't work.

like image 85
Erik Peterson Avatar answered Nov 11 '22 13:11

Erik Peterson


For anyone, like me, coming here because of an error like this:

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

One solution (taken from here) might be to reinstall your version of ruby. eg: rbenv install 2.0.0-p247

like image 44
sebkkom Avatar answered Nov 11 '22 13:11

sebkkom