【问题标题】:ImageMagick unable to start because of incompatible version of liblzma由于 liblzma 版本不兼容,ImageMagick 无法启动
【发布时间】:2016-04-27 21:31:37
【问题描述】:

我正在尝试设置服务器来为使用 ImageMagick 和 RMagick gem 的 Ruby 应用程序提供服务。服务器正在运行 OS X 10.10。我有另一台服务器运行相同版本的所有内容(操作系统、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 似乎在寻找 8.0.0 版的 liblzma,但只找到 6.0.0 版。

ImageMagick 和 xz 是使用 Homebrew 安装的——根据其他回答的问题,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 版。

【问题讨论】:

  • imagemagick 在 ruby​​ 之外能正常工作吗?
  • 我刚刚测试过,ImageMagick 本身正在工作。我通过命令行将图像转换为更小的尺寸,它工作得很好。
  • 除非你真的需要rmagick,你可以试试mini_magick。它正在使用命令行,所以它应该可以工作
  • 不幸的是,我现在需要 rmagick :( 我正在尝试调试由其他人编写的使用 rmagick 的应用程序

标签: ruby macos imagemagick rmagick xz


【解决方案1】:

好的,我想通了。

出于某种原因,ImageMagick、rmagick 和/或乘客在 /usr/lib 中找到 liblzma.5.dylib 的系统副本,而不是在 中的副本自制程序设置/usr/local/lib(尽管错误消息说它正在 /usr/local/lib 中查找)。

我通过在 liblzma.5.dylib 的两个副本上运行 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)

对于/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 的正确副本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 2015-07-09
    • 2019-05-20
    • 2014-08-10
    • 2023-03-12
    • 2018-06-27
    • 2016-08-15
    • 1970-01-01
    相关资源
    最近更新 更多