dyld:库未加载:/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版本,这就是我所拥有的。我想我需要降级到1.0.0,但我是怎么做到的?我在用MacOS卡塔琳娜,如果有关系的话。

274302 次浏览

尝试使用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不起作用,所以使用@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...
我也有同样的问题。 我通过运行这两个命令来解决这个问题:

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

凯特琳娜,没事的。

brew switch openssl 1.0.2s

为我工作过“macOS Mojave”,“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 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 update && brew upgrade作为解决方案不是一个很好的答案,因为这个错误出现在大多数情况下,由于执行这个…

切换到之前你只使用:brew switch openssl XXX的版本,就是这样。

brew switch openssl 1.0.2q
< p > MacOs卡特琳娜 版本10.15 为我工作

brew switch openssl 1.0.2r

它为我工作,macOS Mojave, 10.14.6版本

如果你没有家酿咖啡或者不知道是什么

/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中只有一个“正确”版本“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时遇到了类似的错误。(我发现这是为了寻找解决方案。当Homebrew切换到开放SSL 1.1.1时,它破坏了很多东西)上面的答案对我不起作用(Mac 10.14.6)。然而,答案在这里找到做到了:

brew install --upgrade openssl
brew reinstall postgresql

我可以通过brew升级Python 3来解决这个问题

brew upgrade python@3

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

brew update && brew upgrade

有这个问题时,试图使用LastPass CLI通过阿尔弗雷德在我的卡特琳娜安装。

brew update && brew upgrade修复了这个问题。

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

brew reinstall openssl

自动更新与openssl兼容的mysql服务器。我尝试了很多方法,但只有这个对我有效。

上述方案对我不起作用。

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

Error: unknown or unsupported macOS version: :mountain_lion

那么有一些过时的包需要删除,我的是
mongodb . < / p >

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

卸载那些包brew uninstall [name] 然后运行brew doctor来验证是否一切正常。 然后你可以在brew update && brew upgrade之后重新安装这些包

我将发表我的意见,因为我没有看到一个解决我问题的答案。

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

  • 我运行的是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应用程序了。

干杯

把这个留给未来的我👴🏼

我不得不这样降级OpenSSL:

brew uninstall --ignore-dependencies openssl
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/30fd2b68feb458656c2da2b91e577960b11c42f4/Formula/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,而是在升级一些包后使用sshscpgit的结果。

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

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

因为丢失的是不存在的/opt/local/lib/libcrypto.1.0.0.dylib库,因为升级后我有一个/opt/local/lib/libcrypto.1.1.dylib,而且因为sshscp在试图找到/opt/local/lib/libcrypto.1.0.0.dylib时引用了/opt/local/lib/libgssapi_krb5.2.2.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。最后,sshscpgit恢复正常工作。

感谢@ michalchicon的精彩回答,我能够概括出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卡特琳娜10.15.7)

1-下载文件:

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

2 -使用下载的文件运行brew:

brew install openssl.rb

解释解决方案:似乎您需要安装旧的openssl版本,在当前的brew存储库(1.0.2t version)中不再存在。为了解决这个问题,你应该创建一个利用提取一个旧版本(查看存储库历史),在新安装后创建一个到这个版本的链接,你就链接到正确的版本。

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

提取[选项]公式点击查看存储库历史记录以查找 并在公式的最新版本中创建一个副本 利用公式/ formula@version.rb。如果水龙头还没有安装, 在继续之前尝试安装/克隆水龙头。提取 配方来自一个水龙头,不是自制/核心使用其完全合格

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

现在运行正常了。

在这里更多关于我尝试的细节。

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)

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

我尝试了下面的解决方案,但运气不佳:

  1. openssl 1.0.2t (Error: Unknown command: switch)
  2. reintalling 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链接到旧的

创建如下的符号链接:

ln -sfn /usr/local/Cellar/openssl@1.0/1.0.2t /usr/local/opt/openssl@1.0
在尝试了你所有的答案后,它仍然没有解决我的Mac大苏尔的问题。 我尝试了另一个Mac Big Sur,它对我有用。尝试执行which openssl命令来确定OpenSSL符号链接的位置。它是/usr/bin/openssl,与我的PC上不同的是/usr/local/bin/openssl 我发现我的电脑上有2个OpenSSL符号链接。 /usr/local/bin/openssl /usr/bin/openssl < / p >

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

rm -rf /usr/local/bin/openssl

并再次运行which openssl,它指向/usr/bin/openssl

在那之后,openssl命令为我工作。

openssl版本没有问题。 在我的例子中,符号链接缺失,因此:

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`

成功了。

上面的答案对我不起作用。我在大苏尔11.6上使用Xcode 12.5.1, 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大苏尔的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