尽管接受的答案中的解决方案有效,但这并不是解决问题的正确方法。它违反了 brew 的元数据完整性。
问题
问题是Homebrew的公式已经升级到v9,但现有的“瓶装”PHP公式仍然与以前的版本v8构建并链接,该版本不再存在于您的系统上。jpeg
您有几种方法可以解决此问题。
1. 从源代码重新编译公式(强烈推荐)phpxx
卸载php公式,并从源代码重建它,而不是使用瓶装版本。这样,php 将使用并链接到当前安装的 .假设您正在处理:jpeg
php71
brew reinstall php71 --build-from-source
2.以正确的方式降级公式(优先于手动重新编译)jpeg
如果您还没有运行,那么您的啤酒酒窖中已经获得了以前的版本,请切换到它:brew cleanup
jpeg
brew switch jpeg 8d
如果 jpeg 在 Cellar. 错误中没有版本“8d”
,则需要先通过还原历史记录来还原它:
cd $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core
git checkout b231469
HOMEBREW_NO_AUTO_UPDATE=1 brew install jpeg
git checkout master
brew switch jpeg 8d
您可以通过使用和浏览提交消息来查找提交哈希。brew log jpeg
缺点是可能还有其他公式需要较新版本正常工作,例如.如果您遇到此类不兼容问题,请查看上面的第一个解决方案。imagemagick
3. 通过手动重新编译降级(不推荐)jpeg
获取源代码,编译并覆盖brew的版本。有关详细信息,请参阅丹尼斯的答案。
不建议这样做,因为它会破坏酿造元数据的完整性。Brew认为它具有8b版本,但是,您手动编译了9b并覆盖了文件。
4.手动符号链接旧版本(真的吗?
不要手动符号链接剩余的 。如果文件在那里,您可以按照上面的第二个解决方案中提到的方式进行操作。libjpeg.8.dylib
brew switch
这只是你能在这里做的最糟糕的黑客攻击。
这些问题最终将得到解决。