Homebrew brew桶安装meld:&x27;无法导入GTK+';:什么';我的图书馆怎么了?

Homebrew brew桶安装meld:&x27;无法导入GTK+';:什么';我的图书馆怎么了?,homebrew,macos-high-sierra,homebrew-cask,Homebrew,Macos High Sierra,Homebrew Cask,我试图在运行OS/X 10.13.1 High Sierra的iMac上安装meld brew cask install meld 而且自制的没有出错,但当我试图运行它时,我看到 $ meld check1ping.sh check2pings.sh frozen: ImportError Cannot import: GTK+ dlopen(/Applications/Meld.app/Contents/Resources/lib/python2.7/gi/_gi.so, 2): Symbo

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

brew cask install meld
而且
自制的
没有出错,但当我试图运行它时,我看到

$ 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
我注意到了这些问题,但这个问题似乎有所不同

我发现这表明
/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,使其获得正确版本的库,从而使未来用户不会遇到此问题?

我看到
brew-cask
,并且总是从二进制文件安装,所以我有点惊讶它似乎有错误的库版本。我找到了答案,但一点也不聪明。恐怕我对指定brew或cask版本一无所知


谢谢

不确定这是否可以作为一个答案,但现在开始。首先,感谢您确定了问题的原因,因为升级到MacOS High Sierra后,这也影响了我。我不是一个
自制
专家,所以这个“答案”只是将你的发现形式化

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日)的符号链接,该链接似乎位于版本1.2.8。下一行重新创建该符号链接,但指向全局(GTK+)
libz.1.dylib
(186432字节,日期为2017年10月25日),可能是版本1.2.11

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

现在就是这样。你所需要做的就是更新熔化桶

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

因此,更新所有已安装容器的正确顺序是:

brew update
brew cask upgrade

是的,我差不多也是这么做的,谢谢你的解释。我真正想了解的是,我认为概念上已经完成的预编译应用程序是如何以一个不兼容的库结束的。以及如何从自制的caskroom找人来修理它。现在已经修好了。我已经意识到,在更新cask时,您使用的是
brew update
,而不是
brew cask update
,要升级cask,您必须运行
brew cask upgrade
,而不仅仅是
brew upgrade
。嘿,非常感谢您的辛勤工作!我很高兴我不是唯一一个不能做这些()&(*%&^!事情的人。如果你想添加任何类型的答案,我很乐意为你打勾。