我在工作中使用了 2 台 Debian 服务器,一台是开发服务器,另一台是生产服务器。我尝试让 imagemagick 在两台服务器上都运行,但出于某种原因,生产服务器可以很好地运行 imagemagick,但开发服务器似乎不想运行。
我在两台服务器上都输入了
convert --version
并得到了这个回应
生产:
Version: ImageMagick 6.6.0-4 2012-04-24 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2010 ImageMagick Studio LLC
Features: OpenMP
发展:
convert: error while loading shared libraries: libMagickCore.so.2: cannot open shared object file: No such file or directory
我对两台服务器都进行了 dpkg 检查版本,得到了以下信息
生产:
ii imagemagick 8:6.6.0.4-3+squeeze2 image manipulation programs
ii libmagickcore3 8:6.6.0.4-3+squeeze2 low-level image manipulation library
ii libmagickcore3-extra 8:6.6.0.4-3+squeeze2 low-level image manipulation library - extra codecs
ii libmagickwand3 8:6.6.0.4-3+squeeze2 image manipulation library
ii php5-imagick 3.0.0~rc1-1 ImageMagick module for php5
发展:
ii imagemagick 8:6.6.0.4-3+squeeze2 image manipulation programs
ii libmagickcore3 8:6.6.0.4-3+squeeze2 low-level image manipulation library
ii libmagickcore3-extra 8:6.6.0.4-3+squeeze2 low-level image manipulation library - extra codecs
ii libmagickwand3 8:6.6.0.4-3+squeeze2 image manipulation library
ii php5-imagick 3.0.0~rc1-1 ImageMagick module for php5
我在整个操作系统中查找 libMagickCore.so.2 但一直没有找到它,但我在两台服务器上都找到了这些文件。
生产:
lrwxrwxrwx 1 root root 22 May 2 14:32 libMagickCore.so.3 -> libMagickCore.so.3.0.0
-rw-r--r-- 1 root root 2.3M Apr 24 15:44 libMagickCore.so.3.0.0
lrwxrwxrwx 1 root root 22 May 2 14:32 libMagickWand.so.3 -> libMagickWand.so.3.0.0
-rw-r--r-- 1 root root 1.1M Apr 24 15:44 libMagickWand.so.3.0.0
发展:
lrwxrwxrwx 1 root root 22 May 2 14:35 libMagickCore.so.2 -> libMagickCore.so.3.0.0
lrwxrwxrwx 1 root root 22 May 2 14:30 libMagickCore.so.3 -> libMagickCore.so.3.0.0
-rw-r--r-- 1 root root 2.3M Apr 24 15:44 libMagickCore.so.3.0.0
lrwxrwxrwx 1 root root 22 May 2 14:30 libMagickWand.so.3 -> libMagickWand.so.3.0.0
-rw-r--r-- 1 root root 1.1M Apr 24 15:44 libMagickWand.so.3.0.0
我手动将 libMagickCore.so.2 添加到开发服务器上以查看是否可以工作,但没有成功。
我从开发服务器中清除了所有 imagemagick 并重新安装它,但仍然没有任何效果。我运行了 ldconfig,它会为版本 3 创建链接,但不会为版本 2 创建链接。我甚至重新启动了机器,在两台机器上都进行了更新/升级,但我还是不知道该怎么办。有人能给我其他想法吗?
太感谢了!
- 编辑 -
运行命令
which convert
产生了这些输出
生产
/usr/bin/convert
发展
/usr/local/bin/convert
所以...这最终成了我的问题...我从我的开发服务器上删除了 /usr/local/bin 中的转换,之后它就正常工作了。
答案1
我很高兴你解决了这个问题。为了帮助其他遇到类似情况的人,我在这里只留下这一点:
要在本地查找图书馆:
# updatedb
# locate libMagickCore
要从包管理器中找到该库:
# apt-file search libMagickCore
检查系统是否可以找到你的库(是否在路径中)
# ldconfig -p | grep -i nameoflibrary
如果您的图书馆不在列表中,但在系统中,您可以添加它:
# ldconfig -n /path/toyournew/library/
将其永久添加到路径中:
# /etc/ld.so.conf.d/libc.conf
无论是哪个库,这都应该足以解决将来的此类问题。
答案2
我听从了 ablackhat 的建议,这样做which convert
表明我的开发服务器正在 /usr/local/bin 中查找 convert 可执行文件。我从该目录中删除了可执行文件,然后运行,which convert
结果显示我的服务器现在正在使用 /usr/bin 中的可执行文件。当我运行convert --version
/usr/bin/convert 时,一切都按预期运行。