代码之家  ›  专栏  ›  技术社区  ›  emrys57

brew cask安装meld:“无法导入GTK+”:我的库有什么问题?

  •  4
  • emrys57  · 技术社区  · 8 年前

    我试图在运行OS/X10.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
    

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

    我的问题是:

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

    谢谢

    2 回复  |  直到 8 年前
        1
  •  3
  •   rugplots    8 年前

    不确定这是否可以作为一个答案,但接下来。首先,感谢您确定问题的原因,因为这也是升级到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 bytes,日期2016年5月4日),似乎是版本1.2.8。下一行重新创建了符号链接,但指向 全球的 (GTK+) libz。1.dylib (186432 bytes,日期2017年10月25日),可能为1.2.11版本。

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

        2
  •  2
  •   user31389    8 年前

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

    更新有点违反直觉。更新您使用的可用容器列表 brew update brew cask update ,但要将casks升级到您使用的新版本 brew cask upgrade brew upgrade .

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

    brew update
    brew cask upgrade