brew cask install meld:'无法导入GTK +':我的库有什么问题?

时间:2017-11-16 16:02:46

标签: 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时,一切都神奇地起作用。

我的问题是:如何修复自制软件以便它获取正确版本的库,以便未来的用户不会遇到此问题?

我看到brew cask cannot build from source并且始终从二进制文件安装,所以我有点惊讶它似乎有错误的库版本。我找到了meld ruby file,但没有更聪明。我不知道如何指定brew或cask构建,我很害怕。

谢谢!

2 个答案:

答案 0 :(得分:3)

不确定这是否有资格作为答案,但这里有。首先,感谢您找到问题的原因,因为在升级到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的 local libz.1.dylib(127692字节,日期为2016年5月4日)的符号链接,该链接似乎是版本1.2.8。下一行重新创建该符号链接,但指向全局(GTK +)libz.1.dylib(186432字节,日期为2017年10月25日),可能是版本1.2.11。

希望自制的Meld cask维护者会引入一个正确的修复程序,但与此同时,在终端中运行这两个命令修复了这个特殊的Meld问题,以便Meld可以在MacOS High Sierra下运行。

答案 1 :(得分:1)

现在是fixed upstream。您需要做的就是更新Meld酒桶。

更新有点违反直觉。要更新可用内容列表,请使用brew update,而不是brew cask update,但要将内容块升级到您使用brew cask upgrade的新版本,而不仅仅是brew upgrade

因此更新所有已安装的存储桶的正确顺序是:

brew update
brew cask upgrade