【问题标题】:dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylibdyld:库未加载:/usr/local/opt/openssl/lib/libssl.1.0.0.dylib
【发布时间】:2020-03-19 06:07:58
【问题描述】:

我通过自制软件安装了 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 上。

【问题讨论】:

标签: macos openssl homebrew vapor


【解决方案1】:

如果有人来解决 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 /usr/local/opt/openssl/lib/libssl.1.1.dylib /usr/local/lib/
ln -s /usr/local/opt/openssl/lib/libcrypto.1.1.dylib /usr/local/lib

【讨论】:

  • 在这里通知新手,这不适用于带有brewarm64 版本的 M1
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    更新: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 将删除已弃用的软件包。不确定此解决方案何时会停止工作
    • 这对我有用,只需在 MacOS Catalina 上稍微更改最后一个字母“r”brew switch openssl 1.0.2r
    • 如果我的 Mac 上没有安装任何“旧”版本,而只有 1.1.1g,我该怎么办?
    • 在运行ls -al /usr/local/Cellar/openssl 时,有没有人得到ls: /usr/local/Cellar/openssl: No such file or directory
    • “冲泡开关”已被禁用。那怎么办?
    【解决方案4】:

    我的系统上安装了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
    

    【讨论】:

    • 你看我的回答了吗?它指出我还尝试了brew switch 和降级。 “我尝试了以下解决方案”......随着时间的推移,事情确实发生了变化。如果不更新,接受的答案不能永远无效。此外,创建符号链接比复制系统文件要好。
    【解决方案5】:

    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`
    

    成功了。

    【讨论】:

      【解决方案6】:

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

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

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

      rm -rf /usr/local/bin/openssl

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

      之后,openssl 命令为我工作。

      【讨论】:

        【解决方案7】:

        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
        【解决方案8】:

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

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

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

        我跑了

        brew postgresql-upgrade-database.
        

        现在它工作正常。

        here 详细了解我的尝试。

        【讨论】:

        • 请与您的答案分享代码并在末尾提供链接以供参考。如果该页面停止工作或更改,希望避免仅链接答案。
        • 这也为我修复了它,但是我第一次运行它时没有。我必须 brew uninstall postgresql@12 然后重新运行 brew postgresql-upgrade-database 修复它。
        【解决方案9】:

        解释解决方案:您似乎需要安装当前 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 (Third-Party Repositories) 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).
        

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

        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.
        

        【讨论】:

          【解决方案10】:

          这是唯一对我有用的东西(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
          【解决方案11】:

          mysql@5.6 出现此错误

          尝试重新安装mysql

          brew reinstall mysql@5.6
          

          这会解决

          【讨论】:

            【解决方案12】:

            这对我有用:

            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”的木桶
            • 正如 Andreas 所说,您仍然需要符号链接。但安德烈亚斯的命令是倒退的。它实际上应该是ln -s /usr/local/opt/openssl /usr/local/Cellar/openssl@1.0.2t/1.0.2t
            • 这对我有用,但你必须这样做 --ignore-dependencies。
            • @LucasC.Feijo 你能用 --ignore-dependencies 给出完整的命令吗?
            【解决方案13】:

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

            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 正在引用/opt/local/lib/libgssapi_krb5.2.2.dylib 以试图找到@987654335 @,我只是这样使用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 按预期恢复工作。

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

            【讨论】:

              【解决方案14】:

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

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

              【讨论】:

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

              我不得不以这种方式降级 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。
              【解决方案16】:

              我将投入 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
              

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

              干杯

              把这个留在这里给未来的我??

              【讨论】:

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

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

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

              Error: unknown or unsupported macOS version: :mountain_lion
              

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

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

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

              【讨论】:

                【解决方案18】:
                brew reinstall openssl
                

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

                【讨论】:

                • 这为我解决了问题。谢谢。
                • 对于所有其他解决方案,brew 似乎需要 git(这对我不起作用)。这是我发现的唯一一种无需 git 即可下载文件并安装它们的解决方案。
                【解决方案19】:

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

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

                这比降级 openssl 更好。

                【讨论】:

                • 这在 2020 年 10 月对我有用。我的项目使用 Symfony 5
                【解决方案20】:

                Mehn,这是我在 2020 年 7 月 7 日遇到此错误 4 小时后的情况。这是唯一对我有用的命令:

                brew update && brew upgrade

                【讨论】:

                • 这在 2020 年 8 月 4 日对我有用。请注意,最初接受的答案在 2019 年 7 月 16 日对我有用,但今天没有用。
                • 这在 2020 年 10 月对我有用。我的项目使用 Symfony 5
                【解决方案21】:

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

                在这篇文章中建议: https://github.com/kelaberetiv/TagUI/issues/635#issuecomment-560139279

                【讨论】:

                  【解决方案22】:

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

                  brew upgrade python@3

                  【讨论】:

                    【解决方案23】:

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

                    brew install --upgrade openssl
                    brew reinstall postgresql
                    

                    【讨论】:

                    • invalid option: --upgrade
                    【解决方案24】:

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

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

                    【讨论】:

                      【解决方案25】:

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

                      brew update && brew upgrade
                      

                      【讨论】:

                      • 最简单的解决方案,openssl 是正确且最新的版本,但崩溃的东西需要更新。
                      • 帮我修好了。
                      • 救了我的培根!
                      【解决方案26】:

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

                      $ brew reinstall openssl@1.1
                      

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

                      【讨论】:

                      • 这个提示为我节省了好几个小时,对 Mac 用户的好建议!
                      【解决方案27】:

                      首先,列出已安装的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 gem。这就像一个魅力!谢谢老哥!
                      • 非常感谢。什么表明 1.0.2t 是“正确”的版本?我有一个 1.0.2r 和一个 1.1.1d 和 1.1.1f。
                      • there are only one "right" versions - 这是什么意思?你怎么知道?
                      【解决方案28】:

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

                      【讨论】:

                        【解决方案29】:

                        如果您没有 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 谢谢
                        【解决方案30】:
                        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 上对我来说类似的作品
                        猜你喜欢
                        • 2020-11-28
                        • 2020-05-11
                        • 1970-01-01
                        • 2020-04-03
                        • 2013-10-10
                        • 2022-11-10
                        • 2021-11-12
                        • 2021-07-21
                        相关资源
                        最近更新 更多