homebrew - brew 桶安装融合: 'cannot import GTK+' : what's wrong with my library?

标签 homebrew macos-high-sierra homebrew-cask

我尝试在运行 OS/X 10.13.1 High Sierra 的 iMac 上安装 meld。

brew cask install meld

homebrew完成且没有错误,但是当我尝试运行它时我看到了

$ meld check1ping.sh check2pings.sh
frozen: ImportError
Cannot import: GTK+
dlopen(/Applications/Meld.app/Contents/Resources/lib/python2.7/gi/_gi.so, 2): Symbol not found: _inflateValidate
  Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
  Expected in: /Applications/Meld.app/Contents/Frameworks/libz.1.dylib
 in /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib

我记下了问题How do I fix melds 'Cannot import: GTK+' error caused by missing 'gi.repository'?Meld error "Cannot import: GTK+; No module named repository"但这个问题似乎有所不同。

我找到了this page这表明 /Applications/Meld.app/Contents/Frameworks/libz.1.dylib 已过时。这是我在 /Applications/Meld.app/Contents/Frameworks 中看到的:

-rwxr-xr-x  1 myusername  staff   127692  4 May  2016 libz.1.2.8.dylib
lrwxr-xr-x  1 myusername  staff       16 16 Nov 15:24 libz.1.dylib -> libz.1.2.8.dylib

在寻找替代品时,我发现:

lrwxr-xr-x  1 root  wheel      12 11 Nov 09:57 /usr/lib/libz.1.1.3.dylib -> libz.1.dylib
lrwxr-xr-x  1 root  wheel      12 11 Nov 09:57 /usr/lib/libz.1.2.11.dylib -> libz.1.dylib
lrwxr-xr-x  1 root  wheel      12 11 Nov 09:57 /usr/lib/libz.1.2.5.dylib -> libz.1.dylib
lrwxr-xr-x  1 root  wheel      12 11 Nov 09:57 /usr/lib/libz.1.2.8.dylib -> libz.1.dylib
-rwxr-xr-x  1 root  wheel  186432 25 Oct 17:37 /usr/lib/libz.1.dylib
lrwxr-xr-x  1 root  wheel      12 11 Nov 09:57 /usr/lib/libz.dylib -> libz.1.dylib

当我用这个替换我的 meld 应用程序中的 libz.1.dylib 时,一切都神奇地工作了。

我的问题是:如何修复 Homebrew 程序,以便它选择正确版本的库,这样 future 的用户就不会遇到此问题?

我看到那个 brew 桶 cannot build from source并且总是从二进制文件安装,所以我有点惊讶它似乎有错误的库版本。我找到了meld ruby file但我还是一无所知。恐怕我对指定 brew 或木桶构建一无所知。

谢谢!

最佳答案

不确定这是否符合答案,但就这样吧。首先,感谢您找出问题的原因,因为在升级到 MacOS High Sierra 后,这个问题也影响了我。我不是 Homebrew 专家,所以这个“答案”只是形式化了您发现的内容......

unlink /Applications/Meld.app/Contents/Frameworks/libz.1.dylib
ln -s /usr/lib/libz.1.dylib /Applications/Meld.app/Contents/Frameworks/libz.1.dylib

第一行删除了 Meld 的本地 libz.1.dylib(127692 字节,日期为 2016 年 5 月 4 日)的符号链接(symbolic link),该链接似乎为 1.2 版本。 8.下一行重新创建该符号链接(symbolic link),但指向 global (GTK+) libz.1.dylib (186432 字节,日期为 2017 年 10 月 25 日),版本可能为 1.2.11 .

希望 Homebrew 软件 Meld cask 维护者能够引入适当的修复程序,但与此同时,在终端中运行这两个命令可以修复这个特定的 Meld 问题,以便 Meld 可以在 MacOS High Sierra 下运行。

关于homebrew - brew 桶安装融合: 'cannot import GTK+' : what's wrong with my library?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47334142/

相关文章:

python - "brew install"和 "pip install"之间有区别吗?

macos - 在 mac os x 中找不到 boost header 问题

php - PHP 的 RVM 等价物?

xcode - bison 3.0.4 因非法指令 : 4 on macOS High Sierra 10. 13 失败

homebrew - 安装 Homebrew 后 zsh compinit : insecure directories error message on Mac,

java - 如何使用 java -version 命令查看 brew 安装的 java?

macos - Mac Os 10.10 或 10.11 上的 Homebrew 不起作用

Homebrew 程序:安装 php mcrypt

homebrew - "Unlinked kegs in your Cellar"。我该如何删除它们?

python-3.6 - PySide2 在被询问时不更新 QLabel 文本