dyld:未加载库:/usr/local/opt/openssl/lib/libssl.1.0.0.dylib

dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib

我通过自制软件安装了 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 版的 vapor 有关,这就是我所拥有的。我想我需要降级到 1.0.0,但我该怎么做?如果重要的话,我正在使用 MacOS Catalina。

尝试使用install_name_tool:

sudo install_name_tool -change /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/opt/openssl/lib/libssl.1.1.dylib $(which vapor)
sudo install_name_tool -change /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/opt/openssl/lib/libcrypto.1.1.dylib $(which vapor)

在我的例子中,它在我使用 install_name_tool 时开始工作。参数的顺序如下:旧值(不正确),然后是新值(你有 openssl 的地方)和 vapor 的路径(可以通过 $(which vapor).

轻松获得)

更新:截至 2020 年 12 月 及以后,brew switch 不起作用,因此请使用@的其他答案安加百列:

brew install rbenv/tap/openssl@1.0
ln -sfn /usr/local/Cellar/openssl@1.0/1.0.2t /usr/local/opt/openssl

原答案: 切换到旧的 openssl 包

brew switch openssl 1.0.2s

或者,根据您的具体系统配置,您可能需要切换到不同的版本。检查 ls -al /usr/local/Cellar/openssl 的输出以获取要切换到的版本号。

brew switch openssl 1.0.2q
# or
brew switch openssl 1.0.2r
# or 
brew switch openssl 1.0.2s
# or
brew switch openssl 1.0.2t
# etc...

我遇到了同样的问题。 我通过 运行 这两个命令解决了它:

brew uninstall vapor
brew install vapor/tap/vapor

成功了。

对于 MacOS 10.15 Catalina 尝试安装以前的 openssl:

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

这对我的mac

有用

brew switch openssl 1.0.2n

brew switch openssl 1.0.2t

catalina 这个没问题。

brew switch openssl 1.0.2s

为我工作 "macOS Mojave"、"version 10.14.6"。

这可能是一个问题,因为使用旧版本的 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

一个简单的 brew update && brew upgrade 对我有用

我有一个类似的问题,根据这个和其他评论,这里发生了并且起作用了:

➜ 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 Catalina,zsh。我认为最初的问题是因为 Catalina

我得到的错误是:

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 update && brew upgrade 作为解决方案不是一个好的答案,并且由于执行此操作而在大多数情况下都会出现此错误...

切换到您使用的以前的版本:brew switch openssl XXX 仅此而已。

brew switch openssl 1.0.2q

MacOs Catalina 版本 10.15 为我工作

brew switch openssl 1.0.2r

对我有用,macOS Mojave,版本 10.14.6

如果您没有 Homebrew 或不知道它是什么

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update && brew upgrade
brew uninstall openssl; brew uninstall openssl; brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

或者如果您已经安装了 Homebrew

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

这适用于 Mac 10.15

我 运行 使用 mysql(版本:5.6.46_2),Mac(Mojave 10.14.5):

    brew update && brew upgrade
    brew now setup_mysql
    echo ‘export PATH=“/usr/local/opt/mysql56/bin:$PATH”’ >> 
    ~/.bash_profile
    /usr/local/opt/mysql56/bin/mysql.server start

首先,通过以下方式列出已安装的 openssl 版本(或其他程序)的详细信息:

$ls -al /usr/local/Cellar/openssl*
/usr/local/Cellar/openssl:
total 0
drwxr-xr-x    3 mba  staff    96 Nov 30 17:18 .
drwxrwxr-x  170 mba  admin  5440 Apr  8 02:03 ..
drwxr-xr-x   13 mba  staff   416 Nov 21 03:13 1.0.2t

/usr/local/Cellar/openssl@1.1:
total 0
drwxr-xr-x    4 mba  staff   128 Apr  7 18:35 .
drwxrwxr-x  170 mba  admin  5440 Apr  8 02:03 ..
drwxr-xr-x   14 mba  staff   448 Oct  1  2019 1.1.1d
drwxr-xr-x   14 mba  staff   448 Apr  7 18:35 1.1.1f

如上输出,我的mac中只有一个"right"版本"openssl"。 然后,切换到它:

$brew switch openssl 1.0.2t                                 
Cleaning /usr/local/Cellar/openssl/1.0.2t
Opt link created for /usr/local/Cellar/openssl/1.0.2t

如果您在 MacOS Catalina 10.15

上使用 ruby-2.7.0
$ brew reinstall openssl@1.1

$ rvm reinstall 2.7.0
$ brew tap --repair
$ brew doctor

我遇到了类似的问题,运行下面的命令为我修复了错误:

brew update && brew upgrade

我花了很多时间尝试以上所有方法,但似乎没有任何解决办法。然后我重装ruby,2分钟后问题完全消失

我希望这可以节省一些时间。

我 运行 在尝试使用 postgresql 运行 rails 时遇到了类似的错误。 (我发现这个 SO 正在寻找解决方案。Homebrew 在切换到打开 SSL 1.1.1 时破坏了很多东西)以上答案对我不起作用(Mac 10.14.6)。然而,答案 found here 做到了:

brew install --upgrade openssl
brew reinstall postgresql

我可以通过 brew

升级 Python 3 来解决这个问题

brew upgrade python@3

这对我有用: brew 卸载 openssl; brew 卸载 openssl; 酿造安装 https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

在此post中建议: https://github.com/kelaberetiv/TagUI/issues/635#issuecomment-560139279

Mehn 这是 2020 年 7 月 7 日的我,在面对这个错误 4 个小时之后。这是唯一对我有用的命令:

brew update && brew upgrade

在我的 Catalina 安装上尝试通过 Alfred 使用 LastPass CLI 时出现此问题。

brew update && brew upgrade 解决了这个问题。

这比降级 openssl 好得多。

brew reinstall openssl

它会自动更新 mysql 与 openssl 兼容的服务器。我尝试了很多东西,但只有这个对我有用。

以上解决方案对我不起作用。

首先运行brew doctor。 如果你看到像

这样的东西
Error: unknown or unsupported macOS version: :mountain_lion

然后有一些过时的包需要删除,我的是
mongodb.

可能是 python@2node@6 或其他包。

卸载那些包brew uninstall [name] 然后 运行 brew doctor 验证是否一切正常。 然后您可以在 brew update && brew upgrade.

之后再次重新安装这些软件包

我将投入 2 美分,因为我没有看到解决我的问题的答案。

我的特定用例涉及使用 ruby 2.6.3 和 postgres 10.x 系列启动遗留 rails 应用程序。

  • 我是 运行 macOS 10.13.x high sierra
  • 我几乎每天更新brew,我的openssl版本是1.1

几个月没启动 rails 应用程序,今天需要对应用程序进行一些维护,并在下面收到一些可爱的 ❤ 错误消息,

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

echo "and"

9): Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib (LoadError)
  Referenced from: /usr/local/opt/postgresql/lib/libpq.5.dylib
  Reason: image not found -

解决我的特定问题的最快方法是从当前创建一个 smylink,

libssl.1.1.dylib
libcrypto.1.1.dylib

创建 2 个符号链接

cd /usr/local/opt/openssl/lib/
ln -sf libcrypto.1.1.dylib libcrypto.1.0.0.dylib
ln -sf libssl.1.1.dylib libssl.1.0.0.dylib

pathsversion numbers 显然会随着时间而改变所以要注意 path 版本号 同时创建上述符号链接。创建符号链接后,我可以启动我的 rails 应用程序。

干杯

leaving this here for future me

我不得不以这种方式降级 OpenSSL:

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

这是唯一对我有用的解决方案。

我的建议是永远不要为了让您的构建工作而降低您的 openssl 库版本。最好下载所需库的源代码并根据本地主机上的 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 看到的,而是在升级一些软件包后使用 sshscp 以及 git 的结果。

我认为将大多数软件包降级是不明智的,因为@Smokie 和其他人建议使用 openssl(尤其是 security-related 软件包)。

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

因为缺少 non-existent /opt/local/lib/libcrypto.1.0.0.dylib 库,并且因为升级后我有一个 /opt/local/lib/libcrypto.1.1.dylib,并且因为 sshscp正在引用 /opt/local/lib/libgssapi_krb5.2.2.dylib 试图找到 /opt/local/lib/libcrypto.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。最后,sshscp 以及 git 按预期恢复工作。

感谢@MichalCichon 提供了一个很好的答案,我能够概括 vapor 以允许我自己继续使用 ssh 而无需降级我的 openssl

这对我有用:

brew uninstall openssl
brew tap-new $USER/old-openssl
brew extract --version=1.0.2t openssl $USER/old-openssl
brew install openssl@1.0.2t

来源:https://github.com/kelaberetiv/TagUI/issues/635#issuecomment-560138773

使用 mysql@5.6

时出现此错误

尝试重新安装mysql

brew reinstall mysql@5.6

这将修复

这是唯一对我有用的东西(OSX Catalina 10.15.7)

1- 下载文件:

wget https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

2 - 运行 brew 下载文件:

brew install openssl.rb

解释解决方案:看来您需要安装当前 brew 存储库 (1.0.2t version) 中不再存在的旧版 openssl。为了解决它,您应该创建一个 tapextract 一个旧版本(查看存储库历史记录),在新安装后创建一个 link 到这个版本,你 link 到正确的版本。

brew uninstall --ignore-dependencies openssl
brew tap-new $USER/old-openssl
brew extract --version=1.0.2t openssl $USER/old-openssl
brew install openssl@1.0.2t
ln -s /usr/local/Cellar/openssl@1.0.2t/1.0.2t /usr/local/opt/openssl

文档 :

Taps (Third-Party Repositories) brew tap adds more repositories to the list of formulae that brew tracks, updates, and installs from. By default, tap assumes that the repositories come from GitHub, but the command isn’t limited to any one location.

 tap-new [options] user/repo
      Generate the template files for a new tap.
      
 --no-git: Don’t initialize a git repository for the tap.
 --pull-label: Label name for pull requests ready to be pulled (default pr-pull).
 --branch: Initialize git repository with the specified branch name (default main).

extract [options] formula tap Look through repository history to find the most recent version of formula and create a copy in tap/Formula/formula@version.rb. If the tap is not installed yet, attempt to install/clone the tap before continuing. To extract a formula from a tap that is not homebrew/core use its fully-qualified form of user/repo/formula.

extract [options] package user/repo
--version: Extract the specified version of formula instead of the most recent.
-f, --force: Overwrite the destination formula if it already exists.

我已经尝试了上面提出的几种解决方案,但都没有成功。

所以,我已经用 rbenv 安装了最后一个 ruby 版本 2.7.2,并升级了我的应用程序。

然后我有一个PG::ConnectionBad error.

我运行

brew postgresql-upgrade-database.

现在一切正常。

here 有关我尝试的更多详细信息。

2020 年 12 月 这个帖子有很多答案,但 none 对我有用。
顶部答案也建议降级:

brew switch ... 抛出 Calling brew switch is disabled!

这对我有用:

brew install rbenv/tap/openssl@1.0
ln -sfn /usr/local/Cellar/openssl@1.0/1.0.2t /usr/local/opt/openssl

在此处找到:https://github.com/kelaberetiv/TagUI/issues/86
(我需要 运行 old mongodb 3.4 on OSX 10.13.x)

我的系统上安装了 openssl1.1,但是 rails 以某种方式使用旧参考,即 /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError),但这在我的 Mojave 14 上不存在。

我尝试了以下解决方案,但没有成功:

  1. brew switch openssl 1.0.2t(错误:未知命令:switch)
  2. 正在重新安装 openssl
  3. 将openssl版本降级到1.0
  4. 正在重新安装 rvm 和 ruby

最后,以下解决方案有效:

cp /usr/local/opt/openssl/lib/libssl.1.1.dylib /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
cp /usr/local/opt/openssl/lib/libcrypto.1.1.dylib /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib

只需将新的openssl link复制到旧的

创建 symlinks,如下所示:

ln -sfn /usr/local/Cellar/openssl@1.0/1.0.2t /usr/local/opt/openssl@1.0

在尝试了所有答案后,它仍然没有解决我 Mac Big Sur 上的问题。 我尝试了另一个 Mac Big Sur,它对我有用。当尝试执行 which openssl 命令以确定 OpenSSL 符号链接在哪里时。它是 /usr/bin/openssl,与我的 PC 上的不同是 /usr/local/bin/openssl

我意识到我的 PC 上有 2 个 OpenSSL 符号链接。 /usr/local/bin/openssl /usr/bin/openssl

我尝试删除当前的 OpenSSL 符号链接

rm -rf /usr/local/bin/openssl

又是运行which openssl,指向/usr/bin/openssl

之后,openssl 命令对我有用。

is/wasopenssl 版本没有问题。 在我的例子中,符号链接丢失了,所以:

sudo ln -s /opt/vagrant/embedded/lib/libssl.1.0.0.dylib /opt/local/lib/libssl.1.0.0.dylib
sudo ln -s /opt/vagrant/embedded/lib/libcrypto.1.0.0.dylib /opt/local/lib/libcrypto.1.0.0.dylib`

成功了。

以上答案对我不起作用。我在 Xcode 12.5.1 的 Big Sur 11.6 上,brew 一直给我一个错误,说我的命令行工具已经过时了。第一步是将 Xcode 更新到 13.0。重启机器,然后运行然后

brew install openssl@1.1

重新启动终端,现在重新运行给出以下错误的命令:

dyld: Library not loaded: /usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib

现在一切正常,您将不会再看到错误消息。

如果有人来解决 MacOS Big Sur 中的 openssl@1.1 问题,(即 Library not loaded: /usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib,这是为我解决的问题-

brew install openssl@1.1
ln -s $(brew --prefix)/opt/openssl/lib/libssl.1.1.dylib /usr/local/lib/
ln -s $(brew --prefix)/opt/openssl/lib/libcrypto.1.1.dylib /usr/local/lib