imagemagick - AWS Centos7 上的 Imagemagick 7 找不到库
问题描述
我的工作提供了一个设置,但更改配置的能力有限。我们有一个非标准配置,其中包括安装在特殊目录中的 ImageMagick 7。它可以工作,只要我使用目录的特殊路径,我就可以运行identify
并且没有问题。convert
它安装在一个包含许多其他东西的包中。整个软件包设置为安装在客户机器上。它已经工作了多年,但一位客户希望将它安装在 AWS Centos7 机器上,并且除了 Imagemagick 之外,它大部分都可以工作。
调用identify
或convert
收到此错误时会出现问题
{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
我知道这是一个很长的镜头,但某个地方的某个人可能会发表评论,可能会导致答案
解决方案
啊! 发现了我们的问题。在打包所有组件时,ImageMagick 使用库的硬编码路径进行编译。这意味着路径以/home/user_logged_in_when_compiling_imagemagick
. 在客户的服务器上,该软件包使用不同的主目录安装,因此失败。
呵呵!
推荐阅读
- javascript - 使用 for 循环和 indexOf 检查单词是否存在时出现标记错误
- azure-devops - 通过powershell构建的vsts中的git commit不起作用
- c# - 错误:将图像文件转换为字节时无法访问已关闭的文件
- javascript - How do I add a path to a cookie function?
- javascript - 使用 Node Stream 加入音频文件
- excel - 优化下一个循环的运行速度 vba
- php - PrestaShop 模块前端控制器
- wordpress - 临时 dns 错误 inet_e_resource_not_found
- asp.net-mvc - 如何在 .net mvc 中禁用模型视图复选框?
- ionic-framework - 当离子搜索栏上没有文本时,列表应该隐藏吗?