我尝试在运行 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
我注意到问题如何修复由于缺少“gi.repository”而导致的融合“无法导入:GTK+”错误?和Meld 错误“无法导入:GTK+;没有名为存储库的模块”,但这个问题似乎有所不同。
我发现这个页面表明它/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
不能从源代码构建并且总是从二进制文件安装,所以我有点惊讶它似乎有错误的库版本。我找到了meld ruby 文件,但并不聪明。恐怕我对指定 brew 或 cask 构建一无所知。
谢谢!