2016-04-27 21 views
1

Ich versuche, einen Server einzurichten, der eine Ruby-App bedient, die ImageMagick und das RMagick-Juwel verwendet. Auf dem Server wird OS X 10.10 ausgeführt. Ich habe einen anderen Server, der die gleichen Versionen von allem ausführt (OS, ImageMagick, XZ und RMagick Gem), die wie erwartet funktioniert.ImageMagick kann wegen inkompatibler Version von liblzma nicht gestartet werden

aber jedes Mal wenn ich versuche die App aus dem neuen Server zu dienen, erhalte ich eine Fehlermeldung, dass ‚Web-Anwendung kann nicht gestartet werden‘ mit der folgenden Spur:

dlopen(/Users/user/.rvm/gems/[email protected]/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/[email protected]/extensions/x86_64-darwin-14/2.1.0-static/rmagick-2.15.4/RMagick2.bundle (LoadError) 

Im Grunde sieht es aus wie ImageMagick sucht nach Version 8.0.0 von liblzma, aber nur nach Version 6.0.0.

ImageMagick und xz werden mit Homebrew installiert - nach anderen beantworteten Fragen sollte das XZ-Paket liblzma 8.0.0 haben.

Ich habe versucht, ImageMagick, das rmagick-Juwel und xz (das Paket, von dem die liblzma bedient wird) zu deinstallieren, aber vergeblich.

Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.


EDIT: Der Ausgang otool auf /usr/local/lib/liblzma.5.dylib laufen:

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) 

Ich bin noch mehr verwirrt .. es ist deutlich über Version 8.0.0.

+0

funktioniert imagemagick außerhalb von Ruby? – ThomasSevestre

+0

Ich habe gerade getestet, und ImageMagick selbst funktioniert. Ich konvertierte ein Bild auf eine kleinere Größe über die Befehlszeile und es funktioniert gut. – tecz

+0

Wenn Sie rmagick nicht wirklich brauchen, können Sie mini_magick ausprobieren. Es benutzt die Kommandozeile, so dass es funktionieren sollte. – ThomasSevestre

Antwort

1

Ok, das habe ich herausgefunden.

Aus irgendeinem Grund, ImageMagick, RMagick und/oder Passagier die Systemkopie von liblzma.5.dylib bei /usr/lib, sondern befanden sich zu finden als die Kopie Homebrew-Setup bei /usr/local/lib (trotz der Fehlermeldung, dass es in/usr/local/lib gesucht wurde).

Das habe ich herausgefunden, indem ich den otool-Befehl auf beiden Kopien von liblzma.5.dylib ausgeführt habe.

Für /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) 

Für /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) 

Nach einem Neustart des Systems, die ImageMagick/RMagick/Passagier begann die richtige Kopie von liblzma.5.dylib zu verwenden.