Невозможно запустить ImageMagick из-за несовместимой версии liblzma
Я пытаюсь настроить сервер для обслуживания приложения на Ruby, которое использует ImageMagick и гем RMagick. Сервер работает под управлением OS X 10.10. У меня есть другой сервер, на котором работают те же версии всего (ОС, ImageMagick, xz и гем RMagick), который работает как положено.
Однако каждый раз, когда я пытаюсь обслуживать приложение с нового сервера, я получаю сообщение об ошибке, в котором говорится, что "веб-приложение не может быть запущено" со следующей трассировкой:
dlopen(/Users/user/.rvm/gems/ruby-2.1.5@app/extensions/x86_64-darwin-14/2.1.0-static/rmagick-2.15.4/RMagick2.bundle, 9):
Library not loaded: /usr/local/lib/liblzma.5.dylib
Referenced from: /usr/local/opt/imagemagick/lib/libMagickCore-6.Q16.2.dylib
Reason: Incompatible library version: libMagickCore-6.Q16.2.dylib requires version 8.0.0 or later, but liblzma.5.dylib provides version 6.0.0 - /Users/user/.rvm/gems/ruby-2.1.5@app/extensions/x86_64-darwin-14/2.1.0-static/rmagick-2.15.4/RMagick2.bundle (LoadError)
По сути, похоже, что ImageMagick ищет версию liblzma 8.0.0, но находит только версию 6.0.0.
ImageMagick и xz устанавливаются с помощью Homebrew - в соответствии с другими ответами на вопросы пакет xz должен иметь liblzma 8.0.0.
Я попытался удалить и переустановить ImageMagick, гем rmagick и xz (пакет, из которого подается liblzma), но безрезультатно.
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
РЕДАКТИРОВАТЬ: выход работает otool
на /usr/local/lib/liblzma.5.dylib:
otool -L /usr/local/lib/liblzma.5.dylib
/usr/local/lib/liblzma.5.dylib:
/usr/local/opt/xz/lib/liblzma.5.dylib (compatibility version 8.0.0, current version 8.2.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
Я еще больше запутался.. явно над версией 8.0.0.
1 ответ
Хорошо, я понял это.
По какой-то причине ImageMagick, rmagick и / или passenger находили системную копию liblzma.5.dylib, расположенную в / usr / lib, а не копию homebrew setup в / usr / local / lib (несмотря на сообщение об ошибке, говорящее об этом искал в /usr/local/lib).
Я понял это, запустив команду otool на обеих копиях liblzma.5.dylib.
За /usr/local/lib/liblzma.5.dylib
:
otool -L /usr/local/lib/liblzma.5.dylib
/usr/local/lib/liblzma.5.dylib:
/usr/local/opt/xz/lib/liblzma.5.dylib (compatibility version 8.0.0, current version 8.2.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
За /usr/lib/liblzma.5.dylib
:
otool -L /usr/lib/liblzma.5.dylib
/usr/lib/liblzma.5.dylib:
/usr/lib/liblzma.5.dylib (compatibility version 6.0.0, current version 6.3.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
После перезапуска системы ImageMagick/rmagick/passenger начал использовать правильную копию liblzma.5.dylib.