首页 > 解决方案 > AWS Centos7 上的 Imagemagick 7 找不到库

问题描述

我的工作提供了一个设置,但更改配置的能力有限。我们有一个非标准配置,其中包括安装在特殊目录中的 ImageMagick 7。它可以工作,只要我使用目录的特殊路径,我就可以运行identify并且没有问题。convert

它安装在一个包含许多其他东西的包中。整个软件包设置为安装在客户机器上。它已经工作了多年,但一位客户希望将它安装在 AWS Centos7 机器上,并且除了 Imagemagick 之外,它大部分都可以工作。

调用identifyconvert收到此错误时会出现问题

 {package_name_removed}/vendor/imagemagick/CentOS6/bin/identify: error while loading 
     shared libraries: libMagickCore-7.Q16HDRI.so.5: cannot open shared object file: No such 
    file or directory
 

libMagickCore-7.Q16HDRI.so.5存在于CentOS7/lib目录中。

LD_LIBRARY_PATH我可以通过使用环境变量来解决这个问题。但这需要更改软件包安装,而这是无法做到的。LD_LIBRARY_PATH如果没有环境变量,我们无法理解为什么这可以在非 AWS 堆栈上的 Centos7 上运行。不知何故,可执行二进制文件能够在libMagickCore-7.Q16HDRI.so.5没有的情况下找到,LD_LIBRARY_PATH并且“不知何故”在 AWS Centos7 中不起作用

我无法使用不同的标志重新编译 ImageMagick,无法添加LD_LIBRARY_PATH,无法创建符号链接,因为所有这些都需要更改我们的包,而这是不可能的。

如果我将 ImageMagick 安装在一个干净的 AWS Centos7 映像中,那么它可以完美运行。

我需要知道 AWS Centos7 映像可能有什么不同,这可能会阻止 Imagemagick 在未设置的情况下找到libMagickCore-7.Q16HDRI.so.5文件。LD_LIBRARY_PATH

我知道这是一个很长的镜头,但某个地方的某个人可能会发表评论,可能会导致答案

标签: imagemagickcentos7

解决方案


啊! 发现了我们的问题。在打包所有组件时,ImageMagick 使用库的硬编码路径进行编译。这意味着路径以/home/user_logged_in_when_compiling_imagemagick. 在客户的服务器上,该软件包使用不同的主目录安装,因此失败。

呵呵!


推荐阅读