我正在尝试设置服务器来提供使用ImageMagick和RMagick gem的Ruby应用程序。服务器正在运行OS X 10.10。我有另一台运行相同版本的服务器(OS,ImageMagick,xz和RMagick gem)的服务器正在按预期工作。
但是,每当我尝试从新服务器提供应用程序时,我都会收到错误消息“无法启动Web应用程序”,并带有以下跟踪:
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。
使用Homebrew安装ImageMagick和xz - 根据其他回答的问题,xz包应该有liblzma 8.0.0。
我尝试卸载并重新安装ImageMagick,rmagick gem和xz(liblzma所提供的包)无济于事。
如果您需要更多信息,请与我们联系。
编辑:在/usr/local/lib/liblzma.5.dylib上运行otool
的输出:
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版本。
答案 0 :(得分:2)
好的,我想出来了。
出于某种原因,ImageMagick,rmagick和/或乘客正在找到位于 / usr / lib 的liblzma.5.dylib的系统副本,而不是中的复制自制程序设置/ usr / local / lib (尽管错误消息说它正在/ usr / local / lib中查找)。
我通过在liblzma.5.dylib的两个副本上运行otool命令来解决这个问题。
if (tries == 0)
:
/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
系统重启后,ImageMagick / rmagick / passenger开始使用liblzma.5.dylib的正确副本。