我通过homebrew安装了vapor,然后立即想通过执行vapor new Hello进入一个项目,但随后在终端中得到了以下消息:

dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
Referenced from: /usr/local/bin/vapor
Reason: image not found
zsh: abort      vapor new Hello

我尝试了一些方法来解决这个问题,比如通过brew卸载并重新安装openssl,但这并不奏效。我还尝试了一些我在网上找到的东西,但没有工作。我认为这与蒸汽只适用于1.0.0版本有关,而不是1.1.1版本,这就是我所拥有的。我想我需要降级到1.0.0,但我是怎么做到的?我在用MacOS卡塔琳娜,如果有关系的话。


当前回答

我也遇到过类似的问题,基于这个和其他评论,下面是发生的事情和有效的方法:

➜ brew update && brew upgrade && brew install openssl
remote: Repository not found.
fatal: repository 'https://github.com/Homebrew/homebrew-dupes/' not found
Error: homebrew/homebrew-dupes does not exist! Run `brew untap homebrew/homebrew-dupes` to remove it.
...
➜ brew untap homebrew/homebrew-dupes
➜ brew update && brew upgrade && brew install openssl

这是在工作了几个小时后,但我第一次看到自制的欺骗。不知道Homebrew怎么知道要安装什么,但它似乎从头开始安装所有东西。macOS卡特琳娜,zsh。我认为最初的问题是因为卡特琳娜

我得到的错误是:

dlopen(/Users/gscar/.gem/ruby/2.7.0/gems/pg-1.2.2/lib/pg_ext.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)
  Referenced from: /usr/local/opt/postgresql/lib/libpq.5.dylib
  Reason: image not found - /Users/gscar/.gem/ruby/2.7.0/gems/pg-1.2.2/lib/pg_ext.bundle

其他回答

这可能是一个问题,因为有旧版本的brew和安装的byobu需要新的依赖,为了解决这个问题,运行以下命令

brew update && brew upgrade
brew uninstall openssl; brew uninstall openssl; brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

我的建议是永远不要为了让构建工作而降低openssl lib版本。最好下载所需库的源代码,并根据本地主机上的openssl版本构建它。

我在经历同样的问题时看到了这篇文章,但不愿意降低openssl版本。最后把源代码和建立应用程序,它工作。我不知道为什么开发人员在他们的盒子上有他们的旧版本的openssl,他们建立dist包并针对这些旧版本发布。

在搜索这个错误的第一行后,我发现了这个问题:

dyld: Library not loaded: /opt/local/lib/libcrypto.1.0.0.dylib
  Referenced from: /opt/local/lib/libgssapi_krb5.2.2.dylib
  Reason: image not found
Abort trap: 6

我看到的不是使用vapor,而是在升级一些包后使用ssh、scp和git的结果。

我认为像@Smokie和其他人建议的那样降级大多数包是不明智的(特别是与安全相关的包)。

所以我概括了@ michalchicon发布的关于用install_name_tool解决问题的答案,这似乎已经解决了我的问题(至少现在用ssh和scp;我认为如果问题再次出现在另一个可执行文件中,我将能够使用这个解决方案的变体)。

因为它是不存在的/opt/local/lib/libcrypt .1.0.0。因为我有一个/opt/local/lib/libcrypt .1.1。由于SSH和SCP正在引用/opt/local/lib/libgssapi_krb5.2.2。Dylib试图找到/opt/local/lib/libcrypt .1.0.0。dylib,我只是像这样使用install_name_tool:

$ sudo install_name_tool -change /opt/local/lib/libcrypto.1.0.0.dylib\
/opt/local/lib/libcrypto.1.1.dylib\
/opt/local/lib/libgssapi_krb5.2.2.dylib

然后再次尝试运行ssh。它再次失败了,但这次出现了不同的错误:

dyld: Library not loaded: /opt/local/lib/libcrypto.1.0.0.dylib
  Referenced from: /opt/local/lib/libkrb5.3.3.dylib
  Reason: image not found
Abort trap: 6

于是我就这样做了:

$ sudo install_name_tool -change /opt/local/lib/libcrypto.1.0.0.dylib\
/opt/local/lib/libcrypto.1.1.dylib\
/opt/local/lib/libkrb5.3.3.dylib

再次尝试SSH。它再次失败了,但又出现了另一个错误:

dyld: Library not loaded: /opt/local/lib/libcrypto.1.0.0.dylib
  Referenced from: /opt/local/lib/libk5crypto.3.1.dylib
  Reason: image not found
Abort trap: 6

于是我就这样做了:

$ sudo install_name_tool -change /opt/local/lib/libcrypto.1.0.0.dylib\
/opt/local/lib/libcrypto.1.1.dylib\
/opt/local/lib/libk5crypto.3.1.dylib

再次尝试SSH。它再次失败了,但又出现了另一个错误:

dyld: Library not loaded: /opt/local/lib/libcrypto.1.0.0.dylib
  Referenced from: /opt/local/lib/libkrb5support.1.1.dylib
  Reason: image not found
Abort trap: 6

于是我就这样做了:

$ sudo install_name_tool -change /opt/local/lib/libcrypto.1.0.0.dylib\
/opt/local/lib/libcrypto.1.1.dylib\
/opt/local/lib/libkrb5support.1.1.dylib

再次尝试SSH。最后,ssh、scp和git恢复正常工作。

感谢@ michalchicon的精彩回答,让我能够在不降级openssl的情况下继续使用ssh !

brew switch openssl 1.0.2t

凯特琳娜,没事的。

我在尝试用postgresql运行rails时遇到了类似的错误。(我发现这是为了寻找解决方案。当Homebrew切换到开放SSL 1.1.1时,它破坏了很多东西)上面的答案对我不起作用(Mac 10.14.6)。然而,在这里找到的答案是:

brew install --upgrade openssl
brew reinstall postgresql