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

73

我刚刚发现我不能再使用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-p195,因为rvm list显示:

rvm rubies

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

有什么想法可以解决这个问题吗?

10个回答

116

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

brew remove openssl  

然后

brew install openssl

1
也对我有用(我甚至走到了炸毁和重新安装rvm)。谢谢。 - chesterbr
5
升级到“Mavricks”后,我的openssl出了问题。这个解决方法修复了它。 - TuK
同样对我也起作用了!出现了相同的问题... Mavericks破坏了openssl,您的建议解决了它! - Jason R. Mick
在工作中更换了Macbook,并通过Mac的迁移软件,这使我的openssl出现了问题。以下方法解决了我的问题。 - aug
卸载然后安装新的非常成功。谢谢。 - Mike Cameron
显示剩余2条评论

50

你的问题提到了三条路径/opt/local/usr/local/etc/openssl,它们分别属于MacportsHomebrewSM Framework

由于最后一个用于构建静态Rubies,因此它是无害的,与问题无关。另外两个暗示你在安装Ruby之间从Macports切换到了Homebrew

你需要重新安装ruby-2.0.0-p195,它仍然引用着来自Macports的旧路径,你可以使用以下命令进行重新安装:

rvm reinstall ruby-2.0.0-p195

您可以运行以下命令获取有关它们使用的Rubies和OpenSSL路径的更多详细信息:

rvm --debug osx-ssl-certs update all

2
谢谢 - 我最终清除了所有挂在那里的macports的遗迹,升级了rvm,卸载了ruby-2.0.0-p195并重新安装了ruby-2.0.0-p247,现在看起来很顺利。 - Dave Sag
请注意,这里的 Ruby 版本已经过时。 - Mike

13

尝试运行"bundle"时,我也开始遇到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' 命令,并且它似乎表现正常。


最近我也遇到了一个类似的问题,使用rbenv时只需要执行以下命令:rm /Users/Jeff/.rbenv/versions/2.6.3/lib/ruby/2.6.0/x86_64-darwin18/openssl.bundle然后再执行:rbenv install 2.6.6 - Jeff Sholl

8

Homebrew几天前更改了其Openssl版本为1.1(Homebrew/homebrew-core@0349a7c 25和Homebrew/homebrew-core@b4b9c1c 10)。在等待新的重建解决此问题的同时,我们可以将Openssl降级到旧版本以暂时解决此问题(或手动执行):

所以我是这样解决的:

brew uninstall --ignore-dependencies openssl
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/30fd2b68feb458656c2da2b91e577960b11c42f4/Formula/openssl.rb

更新

从Catalina中,您可能会收到如下消息:

错误:禁用了从GitHub提交URL安装openssl的调用!

在这种情况下,我建议您前往该URL并将内容下载到文件中(文件名为openssl.rb)。然后您可以执行以下操作:

brew install openssl.rb

在执行brew update之后,我遇到了这个错误,但是我已经解决了这个问题。 - muhammed celik
@muhammedcelik 我正在使用 Xcode 12.1,macOS Bigsur。 我只是尝试为我的项目更新 pods,上述解决方案没有起作用,你具体做了什么? - iMinion

6
所有版本的 Ruby 都可以使用,我得到了一个基于 Ruby 2.6.5 的项目。然后我遇到了 OpenSSL 报错 library not found。为了解决这个问题,我进行了以下操作:
brew update
brew upgrade
brew install openssl

由于OpenSSL的库文件未找到,因此所有其他版本都停止工作。由于我使用chruby进行Ruby版本管理,所以我删除了版本文件夹并重新安装它们,这样就可以解决问题。

简而言之,更新和升级brew,安装openssl并重新安装Ruby版本即可。


1
谢谢!这绝对帮助我解决了涉及“uwsgi”的问题,所以我不得不添加 brew reinstall uwsgibrew link --overwrite uwsgi,我的完整解决方案在这里:https://dev59.com/N2Ag5IYBdhLWcg3wI4AR#59274385 - greenhouse

4

我是rbenv用户,尝试了上面的几个解决方法,但直到我卸载并重新安装了ruby版本后问题才得以解决。

rbenv uninstall 2.4.3
rbenv install 2.4.3

问题得到解决,我已经成功打出了捆绑包。


rbenv install <version> 并选择 y 就可以了。 - MECU

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

打包成功;)

1

很高兴我不是唯一一个 @JunjiZhi - JustGage

-1
在我的情况下,使用ReactJS + Node环境更新导致一个Rails项目出现问题,花费了很多时间重新安装Ruby版本(通过rbenv,顺便提一句,版本是2.5.1),重新安装openssl(通过homebrew),重新安装bundler(这些都没有起作用)。最后,一个简单的brew update && brew upgrade就解决了问题!我当时使用的是OSXmojave

-11
brew update && brew upgrade

对我有用


6
永远不要用sudo运行brew!Homebrew在安装过程中不会降低权限,这将给所有构建脚本完全访问系统的权限。 - Apolo
6
Brew强烈建议不要使用sudo,因为这可能会损坏系统。 - Moby Khan
我认为Brew不允许您以“sudo”身份运行,它总是阻止我。 - greenhouse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接