我通过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卡塔琳娜,如果有关系的话。


当前回答

更新:截至2020年12月及以后,酿造开关不工作,所以使用@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...

其他回答

尝试使用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的路径(可以通过$轻松获得(其中包含vapor)。

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

$ brew reinstall openssl@1.1

or

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

上面的答案对我不起作用。我在大苏尔11.6上使用Xcode 12.5.1, brew一直给我一个错误,说我的命令行工具过时了。第一步是更新Xcode到13.0。重新启动计算机,然后运行

Brew install openssl@1.1

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

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

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

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

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

文档:

点击(第三方存储库)酿造点击添加更多存储库到 用于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。如果水龙头还没有安装, 在继续之前尝试安装/克隆水龙头。提取 配方来自一个水龙头,不是自制/核心使用其完全合格 用户/回购/公式的形式。

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.

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