brew cask install meld: 'невозможно импортировать GTK +': что не так с моей библиотекой?

Я попытался установить meld на свой iMac под управлением OS / X 10.13.1 High Sierra.

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

Отмечу вопросы Как исправить ошибку melds 'Невозможно импортировать: GTK +', вызванную отсутствием 'gi.repository'? и Ошибка 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

и когда я заменил libz.1.dylib в моем приложении meld на этот, все волшебным образом сработало.

У меня вопрос: как исправить homebrew, чтобы он использовал правильную версию библиотеки, чтобы у будущих пользователей не было этой проблемы?

Я вижу, что brew cask не может собирать из исходного кода и всегда устанавливается из двоичного файла, поэтому Я немного удивлен, что у него неправильная версия библиотеки. Я нашел файл meld ruby ​​, но я не мудрее. Боюсь, я ничего не знаю о том, как указывать составы для пива или бочки.

Спасибо!


person emrys57    schedule 16.11.2017    source источник
comment
Теперь это исправлено. Я понял, что, хотя для обновления контейнеров вы используете brew update, а не brew cask update, для обновления контейнеров необходимо запускать brew cask upgrade, а не только brew upgrade.   -  person user31389    schedule 19.01.2018
comment
Привет, большое спасибо за всю тяжелую работу! Я рад, что я не единственный, кто не может работать с этими () & (*% & ^! Штуками. Если вы хотите добавить какой-либо ответ, я с радостью поставлю галочку напротив него. ты.   -  person emrys57    schedule 19.01.2018


Ответы (2)


Теперь это исправлено вверх по течению. Все, что вам нужно сделать, это обновить бочку Meld.

Обновление немного противоречит здравому смыслу. Для обновления списка доступных контейнеров вы используете brew update, а не brew cask update, но для обновления контейнеров до новой версии вы используете brew cask upgrade, а не только brew upgrade.

Итак, правильная последовательность обновления всех установленных контейнеров:

brew update
brew cask upgrade
person user31389    schedule 23.01.2018

Не уверен, что это можно считать ответом, но начнем. Во-первых, спасибо за определение причины проблемы, так как она затронула и меня после обновления до 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

Первая строка удаляет символическую ссылку на local libz.1.dylib Meld (127692 байта, от 4 мая 2016 г.), которая, похоже, относится к версии 1.2.8. Следующая строка воссоздает эту символическую ссылку, но указывает на global (GTK +) libz.1.dylib (186432 байта, от 25 октября 2017 г.), возможно, версии 1.2.11.

Надеюсь, разработчик самодельной бочки Meld представит правильное исправление, но тем временем выполнение этих двух команд в терминале устраняет эту конкретную проблему Meld, так что Meld может работать под MacOS High Sierra.

person rugplots    schedule 20.11.2017
comment
Да, я примерно так и поступил, спасибо за объяснение. На самом деле я хотел бы понять, как предварительно скомпилированное приложение, которое, как я думал, теоретически завершено, оказалось несовместимой с библиотекой. И как заставить кого-нибудь из доморощенной бочки починить. - person emrys57; 20.11.2017