未加载库:/opt/local/lib/libssl.1.0.0.dylib(LoadError)

时间:2013-10-03 20:39:37

标签: ruby ssl rvm

我刚刚发现我再也不能gem push …了,而且一些挖掘工作让我需要更新我的RVM SSL证书。

我跑了rvm osx-ssl-certs status all,但那给了我:

/Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': dlopen(/Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/x86_64-darwin12.4.0/openssl.bundle, 9): Library not loaded: /opt/local/lib/libssl.1.0.0.dylib (LoadError)
  Referenced from: /Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/x86_64-darwin12.4.0/openssl.bundle
  Reason: image not found - /Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/x86_64-darwin12.4.0/openssl.bundle
    from /Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
    from /Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/openssl.rb:17:in `<top (required)>'
    from /Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
    from /Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
Certificates for /usr/local/etc/openssl/cert.pem: Up to date.
Certificates for : Old.
Certificates for /etc/openssl/cert.pem: Up to date.

rvm -v显示我正在运行最新的RVM(截至今天)

rvm 1.22.15 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

奇怪的是,我不确定为什么它指的是ruby-2.0.0-p195rvm list给出了

rvm rubies

   ruby-1.9.3-p392 [ x86_64 ]
   ruby-2.0.0-p195 [ x86_64 ]
=* ruby-2.0.0-p247 [ x86_64 ]

任何想法如何解决这个问题?

9 个答案:

答案 0 :(得分:111)

卸载openssl并重新安装它对我有用。

brew remove openssl  

然后

brew install openssl

答案 1 :(得分:41)

您的问题提及三个路径/opt/local/usr/local/etc/openssl属于 Macports Homebrew SM框架

由于最后一个用于构建静态红宝石,因此它是无害的,与问题无关。另外两个表明您在安装红宝石之间已从 macports 切换到自制

您需要重新安装ruby-2.0.0-p195,这仍然是 macports 中的旧路径,您可以执行以下操作:

rvm reinstall ruby-2.0.0-p195

您可以获得有关他们使用的rubies和openssl路径的更多详细信息:

rvm --debug osx-ssl-certs update all

答案 2 :(得分:8)

尝试运行'捆绑'我也开始收到openssl dylib投诉,虽然路径略有不同。 我尝试了大部分这些以及其他一些事情。我有rvm,还有一些破碎的fink安装残余物,虽然我试着用一段时间后用brew替换它。 很多次我得到了

Library not loaded: /sw/lib/libssl.1.0.0.dylib

然而,尝试使用brew重新安装openssl总是会产生

sudo brew link openssl
Warning: openssl is keg-only and must be linked with --force
Note that doing so can interfere with building software.

Mac OS X already provides this software and installing another version in
parallel can cause all kinds of trouble.

所以我应该做的很混乱。经过多次试验,最终似乎有所帮助包括:

$ rm /Users/dan/.rvm/rubies/default/lib/ruby/1.9.1/x86_64-darwin11.4.0/openssl.bundle

引用了不存在的/sw/lib/libssl.1.0.0.dylib文件。 然后

$ sudo brew update && sudo brew upgrade
$ rvm reset

将我的版本从1.9.1提升到

$ ruby --version
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin13.0]

此时我不得不重新安装bundler(?)

$ gem install bundler

但最后我可以在我的项目上运行'bundle',它似乎表现得很好。

答案 3 :(得分:3)

所有版本的红宝石都对我有用,我得到了一个关于红宝石2.6.5的项目。然后我遇到了library not found的openssl错误。为了解决这个问题,我做了

brew update
brew upgrade
brew install openssl

然后所有其他版本停止工作,因为它library not found用于打开的ssl。由于我在ruby版本管理器中使用chruby,因此我删除了版本文件夹,然后重新安装它们即可。

tl; dr更新和升级brew,安装openssl并重新安装ruby版本

答案 4 :(得分:3)

此处的

rbenv用户尝试了上述几种解决方案,但是在我卸载了已有的ruby版本并重新安装之前,该方法无济于事。 所以:

rbenv uninstall 2.4.3
rbenv install 2.4.3

解决了我的问题,我可以捆绑了。

答案 5 :(得分:1)

在我的情况下,捆绑时是Ruby版本:

我做了:

rvm list

输出:

   ruby-1.9.3-p448 [ x86_64 ]
   ruby-2.0.0-p247 [ x86_64 ]
   ruby-2.0.0-p353 [ x86_64 ]
   ruby-2.0.0-p451 [ x86_64 ]

然后我改为ruby-2.0.0-p451

rvm use ruby-2.0.0-p451

bundle

捆绑成功完成;)

答案 6 :(得分:1)

我在使用postgres gem pg时遇到了问题,发现了以下问题:https://github.com/ged/ruby-pg/issues/322

这就是我要解决的问题:

brew reinstall postgresql

答案 7 :(得分:0)

sudo brew update && sudo brew upgrade

为我工作

答案 8 :(得分:-1)

在我的案例中,ReactJS + Node env的更新搞砸了一个Rails项目,并且花费了大量时间后,要么通过rbenv(原为2.5.1 BTW)重新安装ruby版本,还通过openssl,重新安装捆绑器(没有一个成功)

homebrew

成功了!

正在运行brew update && brew upgradeOSX