Homebrew postinstall php exception



我正在尝试用Homebrew安装php 7.2.11(运行Mac OS X High Sierra 10.13.3(。在运行install命令之前,我清除了以前所有的Homebrew php目录,运行了doctor等。当我运行brew install php时,它说"postinstall php没有成功完成"。然后我运行

HOMEBREW_DEBUG=1 brew -v postinstall php

输出显示

An exception occurred within a child process: Errno::EEXIST: File exists @ syserr_fail2_in -/usr/local/Cellar/php/7.2.11/pecl

命名文件实际上是一个符号链接:

pecl -> /usr/local/lib/php/pecl

但是/usr/local/lib/php/pecl并不存在。(我不想安装任何PECL扩展。(

有人能告诉我这个错误意味着什么吗?更重要的是,如何纠正它?

我在安装时遇到了同样的问题php@5.6使用CCD_ 5。我被它卡住了,现在放弃了这种方式来安装php的旧版本。以下是我所做的大致情况。

首先,我去掉了悬挂的象征性链接。作为备份,我将链接临时存储在其他地方。然后我重新运行postinstall。这次输出说

dyld: Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib
Referenced from: /usr/local/Cellar/php@5.6/5.6.40/bin/php
Reason: image not found

事实上,这是因为之前安装了一个新版本的openssl v1.1。所以在那个目录下是/usr/local/opt/openssl/lib/libcrypto.1.1.0.dylib。然后我不得不降级openssl:

brew uninstall --ignore-dependencies openssl@1.1

并在此之后安装了旧版本。(这不是一件容易的事情,因为homebrew不支持显式安装旧版本。(

然后我再次运行postinstall,悬挂的符号链接再次出现。所以我认为它是在postinstall期间创建的。我猜postinstall计划先创建符号链接,然后再创建实际的文件。但实际的创建被不兼容的依赖关系打断了。移除它并重新运行postinstall,我得到了

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib
Referenced from: /usr/local/Cellar/php@5.6/5.6.40/bin/php
Reason: image not found

同样,这也是另一个不兼容的、旧的依赖关系。我失去了耐心,然后放弃了求助homebrew

实际上,您可以按照此步骤直接安装php的其他版本。

相关内容

最新更新