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

时间:2019-11-23 10:21:04

标签: swift macos openssl 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 Catalina上。预先感谢。

39 个答案:

答案 0 :(得分:181)

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)

答案 1 :(得分:98)

brew switch openssl 1.0.2s

在“ macOS Mojave”(版本10.14.6)上为我工作。

答案 2 :(得分:74)

首先,通过以下方式列出已安装的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

答案 3 :(得分:50)

brew switch openssl 1.0.2q

MacOs Catalina 版本10.15 为我工作

答案 4 :(得分:45)

如果您已经尝试重新安装蒸气,则不太可能起作用:

尝试更新brew:

brew update

这将需要一段时间,因为它将更新您的所有依赖项。然后再次安装openssl:

brew install openssl

或者尝试以下方法:

brew reinstall openssl

如果您已经尝试重新安装蒸气,这将起作用:

如果上述任何技巧都无法奏效,请尝试使用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/libssl.1.1.dylib $(which vapor)

就我而言,当我使用install_name_tool时,它开始工作。参数的顺序如下:旧值(不正确),然后是新值(您有openssl)和蒸气路径(可以通过$(which vapor)轻松获得。)

答案 5 :(得分:35)

切换到较旧的openssl软件包

brew switch openssl 1.0.2s

答案 6 :(得分:26)

class FeatureSet:
    """
    Adapted from the CSFS presented in De-anonymizing Programmers via Code Stylometry
    by:
        Aylin Caliskan-Islam, Drexel University; Richard Harang, U.S. Army Research Laboratory;
        Andrew Liu, University of Maryland; Arvind Narayanan, Princeton University;
        Clare Voss, U.S. Army Research Laboratory; Fabian Yamaguchi, University of Goettingen;
        Rachel Greenstadt, Drexel University
    """
    # LEXICAL FEATURES
    ln_keyword_length = 0
    ln_unique_keyword_length = 0
    ln_comments_length = 0
    ln_token_length = 0
    avg_line_length = 0

    # LAYOUT FEATURES
    ln_tabs_length = 0
    ln_space_length = 0
    ln_empty_length = 0
    white_space_ratio = 0
    is_brace_on_new_line = False
    do_tabs_lead_lines = False

    comment_text = ''

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

答案 7 :(得分:25)

brew switch openssl 1.0.2t

卡塔利娜,没关系。

答案 8 :(得分:18)

这在我的Mac上对我有用

brew switch openssl 1.0.2n

答案 9 :(得分:14)

这是唯一对我有用的东西(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

答案 10 :(得分:11)

我会花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应用程序。

欢呼

在这里留给以后我??

答案 11 :(得分:10)

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

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

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

答案 12 :(得分:8)

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

仅使用brew switch openssl XXX即可切换到以前使用的版本。

答案 13 :(得分:8)

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

brew update && brew upgrade

答案 14 :(得分:7)

一个简单的brew更新&& brew升级帮了我大忙

答案 15 :(得分:6)

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

$ brew reinstall openssl@1.1

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

答案 16 :(得分:6)

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

brew update && brew upgrade

答案 17 :(得分:6)

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

`# Remove the question mark from the request but maintain the query string
RewriteEngine On

# Uncomment the following line if your public folder isn't the web server's root
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?$1 [L,R]

有效。

答案 18 :(得分:5)

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

答案 19 :(得分:5)

brew reinstall openssl

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

答案 20 :(得分:4)

这对我有用:

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

答案 21 :(得分:4)

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

brew update && brew upgrade解决了该问题。

这比降级openssl更好。

答案 22 :(得分:2)

如果您没有自制软件或不知道它是什么

/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上对我有效

答案 23 :(得分:2)

我遇到了类似的问题,根据此评论和其他评论,这里是发生的事情和有效的方法:

➜ 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。我认为最初的问题是因为卡塔琳娜病

我得到的错误是:

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

答案 24 :(得分:2)

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

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

Error: unknown or unsupported macOS version: :mountain_lion

然后有一些过时的软件包需要删除,我的被删除了
mongodb

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

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

答案 25 :(得分:1)

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

因此,我使用rbenv安装了最新的ruby版本2.7.2,并升级了我的应用。

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

我跑了

brew postgresql-upgrade-database.

现在一切正常。

here有关我尝试过的内容的详细信息。

答案 26 :(得分:1)

说明解决方案:似乎您需要安装当前的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

文档

拍子(第三方存储库)酿造水龙头将更多存储库添加到 酿造跟踪,更新和安装的公式列表。通过 默认情况下,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。如果尚未安装水龙头, 尝试安装/克隆水龙头后再继续。提取一个 来自非自制/核心的水龙头的公式使用其完全限定的 用户/存储库/公式的形式。

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.

答案 27 :(得分:1)

我尝试用postgresql运行rails时遇到类似的错误。 (我发现这个SO是在寻找解决方案。当Homebrew切换为打开SSL 1.1.1时,它发生了很多事情。)上述答案对我不起作用(Mac 10.14.6)。但是,答案found here确实做到了:

brew install --upgrade openssl
brew reinstall postgresql

答案 28 :(得分:1)

我的建议是,从不降低您的openssl lib版本,以使您的构建正常工作。最好下载所需库的源代码,并根据本地主机上的openssl版本进行构建。

在遇到同一问题时,我遇到了此帖子,但不太可能降低openssl版本。最终,获取了源代码并构建了该应用程序,并且它可以正常工作。我不知道为什么开发者会在盒子上装上opensl的​​旧版本,为什么要构建dist软件包并针对这些旧版本发布。

答案 29 :(得分:1)

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

此帖子的建议: https://github.com/kelaberetiv/TagUI/issues/635#issuecomment-560139279

答案 30 :(得分:1)

我能够通过brew升级Python 3来解决这个问题

brew upgrade python@3

答案 31 :(得分:1)

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

答案 32 :(得分:0)

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

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和其他人建议使用openssl(尤其是与安全相关的软件包)。

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

因为缺少了不存在的/opt/local/lib/libcrypto.1.0.0.dylib库,并且因为升级后我有一个/opt/local/lib/libcrypto.1.1.dylib,并且因为sshscp引用了{{ 1}}试图找到/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 。最后,sshsshscp恢复了预期的工作。

感谢@MichalCichon提供了一个很好的答案,我能够将其推广到git之外,使我自己能够继续使用vapor而不必降级我的ssh

答案 33 :(得分:0)

我花了很多时间尝试以上所有方法,但似乎无济于事。然后我求助于重新安装的红宝石,两分钟后,问题完全消失了。

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

答案 34 :(得分:0)

我在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

答案 35 :(得分:0)

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

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

  1. brew switch openssl 1.0.2t(错误:未知命令:开关)
  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 链接复制到旧的链接即可

创建如下符号链接:

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

答案 36 :(得分: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 命令对我有用。

答案 37 :(得分:0)

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`

成功了。

答案 38 :(得分:-2)

mysql@5.6出现此错误

尝试重新安装mysql

brew reinstall mysql@5.6

这将解决