ChatGPT解决这个技术问题 Extra ChatGPT

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

我通过自制软件安装了蒸汽,然后立即想通过执行 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 Catalina 上。

Vapor 添加了对 OpenSSL 1.1 的支持:github.com/vapor/open-crypto/pull/75
这可能对其他人有帮助:<stackoverflow.com/a/59224109/3776039>
我使用此方法修复 /usr/local/bin/wget(由 plenv install-cpanm 暴露)
只有这个手动修复对我有用:programmersought.com/article/30292378091
关于 Postgres 和 pg_dump 的类似问题的 answer 也可以解决这个问题!

m
mmrobins

更新:2020 年 12 月 及以后,brew switch 不起作用,因此请使用@angabriel 的另一个答案:

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...

这是最好的解决方案,也是最简单的。然而 Homebrew 将删除已弃用的软件包。不确定此解决方案何时会停止工作
这项工作对我来说只需稍微更改最后一个字母“r” brew switch openssl 1.0.2r on MacOS Catalina
如果我的 Mac 上没有安装任何“旧”版本,而只有 1.1.1g,我该怎么办?
运行 ls -al /usr/local/Cellar/openssl 时有人得到 ls: /usr/local/Cellar/openssl: No such file or directory 吗?
“冲泡开关”已被禁用。那怎么办?
a
angabriel

2020 年 12 月 这个帖子有很多答案,但没有一个对我有用。最佳答案还建议降级:

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
(我需要在 OSX 10.13.x 上运行旧的 mongodb 3.4)


哇人们应该寻找这个,这对我有帮助!
brew install rbenv/tap/openssl@1.0 花了很长时间!但最后一个使用 macOS Big Sur 对我有用的解决方案,感谢@angabriel!
这个使用 macOS Big Sur 对我有用的解决方案,谢谢
在 macOS Mojave 上工作,仅供参考,感谢您的解决方法!
这对我在 High Sierra 和 /usr/local/Cellar/mysql/5.7.20/bin/mysqld 有效
N
Neeraj Jain

brew switch openssl 1.0.2s

在“macOS Mojave”、“10.14.6 版”上为我工作。


感谢我的 Tableau 2019.10.3 没有在 Mac OS Mojave 中打开,这个命令帮助解决了这个问题!
brew switch openssl 1.0.2p
brew uninstall --ignore-dependencies openssl brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/30fd2b68feb458656c2da2b91e577960b11c42f4/Formula/openssl.rb
m
musafar006

尝试使用 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 的位置)和蒸汽路径(可以通过 $(which vapor) 轻松获得)。


brew update && brew upgrade 将升级所有软件包,这会导致巨大的问题
是的,请从答案中删除 brew upgrade @michal-cichon
@Zheden Vapor 是一个用 Swift 实现的 Web 框架。请查看此线程中的原始问题。如果您不知道 Vapor 是什么,那么此线程可能无法回答您的问题。如果您使用 Homebrew 来管理您的依赖项,请尝试 Smokie 的答案。
谢谢@musafar006。我没有注意到我在第二个命令中复制了错误的路径。
为什么@Cronay 这仍然是正确答案?你能改成投票最多的吗?
J
J.Z

首先,通过以下方式列出已安装的 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 中只有一个“正确”版本“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

我花了一整天的时间安装、重新安装 Rails 版本、带有各种标志和选项的 mysql2 gems。这就像一个魅力!谢了哥们!
非常感谢。什么表明 1.0.2t 是“正确”的版本?我有一个 1.0.2r 和一个 1.1.1d 和 1.1.1f。
there are only one "right" versions - 这是什么意思?你怎么讲?
K
Kiryl Plyashkevich

对于 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

错误:从任意 URL 调用非校验和下载 openssl 公式文件被禁用!使用 'brew extract' 或 'brew create' 和 'brew tap-new' 在 GitHub 上的 tap 中创建公式文件。如果报告此问题,请在(不是 Homebrew/brew 或 Homebrew/core):github.com/tebelorg/Tump/issues/new
要安装那个 GitHub 链接,我们需要降级 brew。 cd /usr/local/Homebrew/ 更改为版本 2.3.0 git checkout 2.3.0 然后安装 HOMEBREW_NO_AUTO_UPDATE=1 brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb github.com/kelaberetiv/TagUI/issues/635#issuecomment-699482920
d
douxsey
brew switch openssl 1.0.2q

MacOs Catalina 10.15 版为我工作


在此之前我必须升级和更新 brew
错误:在地窖中找不到 openssl
brew search openssl ==> 公式 curl-openssl ✔ glib-openssl openssl@1.1 homebrew/portable-ruby/portable-openssl 现在只有 1.1 可用
i
iOSArchitect.com

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

brew uninstall vapor
brew install vapor/tap/vapor

有效。


我刚刚升级了客户端工具,在我的情况下不是蒸汽,而是 wget。然后使用更高版本的 openssl brew upgrade vapor
P
Princekin
brew switch openssl 1.0.2r

它对我有用,macOS Mojave,版本 10.14.6


它适用于我(macOS Catalina、ruby 2.4.1、rails 5.2.2、openssl 1.1.1f)。切换到 1.0.2 秒。
在 macos high sierra 10.13.6 python3.6 上对我来说类似的作品
j
joseph NK
brew switch openssl 1.0.2t

卡塔利娜这没关系。


对 Catalina 的我来说,这很有效:brew switch openssl 1.0.2j
a
abbood

这是唯一对我有用的东西(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 tap cartr/qt4 && brew install cartr/qt4/openssl@1.0
这对我有用,2020 年 11 月,使用“get github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
工作。只是手动下载了文件。
仅供参考,我尝试了 wget,但得到以下 dyld: 未加载库:/usr/local/opt/openssl/lib/libssl.1.0.0.dylib 引用自:/usr/local/bin/wget 原因:图像未发现中止陷阱:6
S
Sergiy Seletskyy

这在我的 Mac 上对我有用

brew switch openssl 1.0.2n


brew switch openssl 1.0.2s 在 Catalina 上为我工作。
i
ipatch

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

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

我正在运行 macOS 10.13.x 高山脉

我几乎每天都更新 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

路径和版本号显然会随着时间而改变,因此在创建上述符号链接时要注意路径和版本号。创建符号链接后,我可以启动我的 rails 应用程序。

干杯

把这个留在这里给未来的我👴🏼


如果这对你有用,你应该认为自己很幸运。 1.0 和 1.1 之间的 API 非常不同,大多数依赖 1.1 的东西在 1.0 中都不起作用。
没有这样的文件或目录:/usr/local/opt/openssl/lib/
我认为这是正确的解决方案。我这样做了几次,它奏效了。我只是忘记了它并结束了这里。因此,只需确认这是一个很好的解决方案,而且是面向未来的。只需确保创建准确的错误库版本(1.0.0、1.0.1 或 1.0.2),具体取决于您遇到的错误。
C
Chitransh Gaurav
brew reinstall openssl

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


这为我修好了。谢谢。
对于所有其他解决方案,brew 似乎需要 git(这对我不起作用)。这是我发现的唯一下载文件并在没有 git 的情况下安装它们的解决方案。
B
B.K

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

brew update && brew upgrade

最简单的解决方案,openssl 是正确且最新的版本,但是崩溃的东西需要更新。
为我修好了。
救了我的培根!
4
4b0

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

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

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


从 GitHub 提交 URL 调用 openssl 安装已禁用!使用“brew extract openssl”来稳定地点击 GitHub。
J
James Hiew

如果有人来解决 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

在这里通知新手,这不适用于具有 brew 的 arm64 构建的 M1
在 MacOS Catalina 10.5.5 中为我工作
s
speedygonzales

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


A
Andreu Boixadera Ayala

提出 brew update && brew upgrade 作为解决方案不是一个好的答案,并且由于执行此错误,在大多数情况下都会出现此错误...

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


来自谷歌的人,真正的答案就在这里。
A
Afolabi Olaoluwa Akinwumi

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

冲泡更新 && 冲泡升级


这在 2020 年 8 月 4 日对我有用。请注意,原始的、被接受的答案在 2019 年 7 月 16 日对我有用,但今天没有用。
这在 2020 年 10 月对我有用。我的项目使用 Symfony 5
L
Leadoux

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

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

这是一个比降级 openssl 更好的选择。


这在 2020 年 10 月对我有用。我的项目使用 Symfony 5
t
tkacperek

这对我有用:

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


那是唯一对我有用的解决方案。此外,我必须创建一个链接以便 Vapor 找到它:ln -s /usr/local/Cellar/openssl@1.0.2t/1.0.2t /usr/local/opt/openssl
没有可用的公式或名称为“openssl@1.0.2t”的木桶
正如安德烈亚斯所说,你仍然需要符号链接。但安德烈亚斯的命令是倒退的。它实际上应该是 ln -s /usr/local/opt/openssl /usr/local/Cellar/openssl@1.0.2t/1.0.2t
这对我有用,但你必须做--ignore-dependencies。
@LucasC.Feijo 你能用--ignore-dependencies 给出完整的命令吗?
N
NinjaDev

如果您在 MacOS Catalina 10.15 上使用 ruby-2.7.0

$ brew reinstall openssl@1.1

或者

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

这个提示为我节省了几个小时,对 Mac 用户的好建议!
B
Balaji.J.B

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

a
avivamg

说明解决方案:您似乎需要安装当前 brew 存储库 (1.0.2t version) 中不再存在的旧 openssl 版本。为了解决它,您应该创建一个 点击提取 旧版本(查看存储库历史记录),在新安装后创建一个指向此版本的链接并且您已链接到正确的版本。

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(第三方存储库) brew tap 将更多存储库添加到 brew 跟踪、更新和安装的公式列表中。默认情况下,tap 假定存储库来自 GitHub,但该命令不限于任何一个位置。

 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 查看存储库历史记录以找到最新版本的公式,并在 tap/Formula/formula@version.rb 中创建一个副本。如果尚未安装水龙头,请尝试安装/克隆水龙头,然后再继续。要从非 homebrew/core 的水龙头中提取公式,请使用其完全限定的 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.

S
ShellZero

上面的答案对我不起作用。我在带有 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

现在一切都应该正常工作,您将不再看到错误消息。


G
Greg

我有一个类似的问题,根据这个和其他评论,这是发生和工作的事情:

➜ 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

H
Hussam Kurd

如果您没有 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


非常好,这对我有用..当所有其他的都失败了..lol 谢谢
V
Vikramaditya

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

首先运行 brew doctor。如果你看到类似的东西

Error: unknown or unsupported macOS version: :mountain_lion

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

它可以是 python@2node@6 或其他一些包。

卸载这些软件包 brew uninstall [name],然后运行 brew doctor 以验证一切是否正常。然后您可以在 brew update && brew upgrade 之后再次重新安装这些软件包。


J
Jerry

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

我在遇到同样的问题时遇到了这个帖子,但不方便降低 openssl 版本。最后获取源代码并构建应用程序并且它工作。我不知道为什么开发人员在他们的机器上拥有旧版本的 openssl,以及他们构建 dist 包并针对这些旧版本发布。


我同意你的担忧@Jerry,我认为使用 MichalCichon 的答案作为起点,我认为可能是比你更快的解决方案。从源代码重建而不是降级您的 openssl lib 版本是个好主意,但我猜您已经知道这可能是一个非常耗时的过程。感谢您发布您的答案。

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅