无法安装cpan模块Image :: Magick

这个问题仍然没有解决方案(向下滚动到“编辑5”以查看实际状态)

我想在我的无头Ubuntu服务器Ubuntu 14.04.2 LTS上安装Image :: Magick

 # cpan install Image::Magick Reading '/root/.cpan/Metadata' Database was generated on Thu, 21 May 2015 22:17:02 GMT Running install for module 'Image::Magick' Checksum for /root/.cpan/sources/authors/id/J/JC/JCRISTY/PerlMagick-6.89-1.tar.gz ok Configuring J/JC/JCRISTY/PerlMagick-6.89-1.tar.gz with Makefile.PL Checking if your kit is complete... Looks good Warning (mostly harmless): No library found for -lMagickCore-6.Q16 Generating a Unix-style Makefile Writing Makefile for Image::Magick Writing MYMETA.yml and MYMETA.json JCRISTY/PerlMagick-6.89-1.tar.gz /usr/bin/perl Makefile.PL INSTALLDIRS=site -- OK Running make for J/JC/JCRISTY/PerlMagick-6.89-1.tar.gz cp Magick.pm blib/lib/Image/Magick.pm AutoSplitting blib/lib/Image/Magick.pm (blib/lib/auto/Image/Magick) Running Mkbootstrap for Image::Magick () chmod 644 "Magick.bs" "/usr/bin/perl" "/usr/local/share/perl/5.18.2/ExtUtils/xsubpp" -typemap "/usr/share/perl/5.18/ExtUtils/typemap" -typemap "typemap" Magick.xs > Magick.xsc && mv Magick.xsc Magick.c cc -c -I/usr/local/include/ImageMagick-6 -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/usr/include/libxml2 -I"/usr/include/ImageMagick-6" -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/freetype2 -g -O2 -Wall -pthread -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -O2 -g -DVERSION=\"6.89\" -DXS_VERSION=\"6.89\" -fPIC "-I/usr/lib/perl/5.18/CORE" -D_LARGE_FILES=1 -DHAVE_CONFIG_H Magick.c Magick.xs:60:31: fatal error: magick/MagickCore.h: Datei oder Verzeichnis nicht gefunden #include  ^ compilation terminated. make: *** [Magick.o] Fehler 1 JCRISTY/PerlMagick-6.89-1.tar.gz make -- NOT OK 

显然,安装脚本试图包含头文件magick / MagickCore.h,但无法找到它。

当我在搜索引擎中搜索magick / MagickCore.h然后我发现许多post中有些人有同样的问题并要求,但我没有找到很多答案说“我有同样的问题” – 没有解。

有没有人有一个适用于Ubuntu Server 14.04.2的解决方案?

编辑1:
我已经安装了ImageMagic包:

 # apt-get install imagemagick 

但我仍然收到上面发布的错误。

编辑2:
根据其中一个答案的建议,我也试过了

 # apt-get install php5-imagick 

其次是

 # cpan install Image::Magick 

我仍然得到相同的错误(脚本找不到magick / MagickCore.h)

编辑3:
我跟着另一个建议并搜索了magick/MagickCore.h 。 答案是:

 libmagickcore-dev: /usr/include/ImageMagick/magick/MagickCore.h 

所以我安装了libmagickcore-dev (之前我执行过sudo -i ):

 apt-get install libmagickcore-dev 

此安装成功,以前缺少的头文件现在位于文件系统中:

 # find / -name MagickCore.h /usr/include/ImageMagick/magick/MagickCore.h 

所以我再次尝试过

 cpan install Image::Magick 

但我仍然得到这个错误:

 Magick.xs:60:31: fatal error: magick/MagickCore.h: Datei oder Verzeichnis nicht gefunden #include  ^ compilation terminated. 

(» Datei oder Verzeichnis nicht gefunden «是德语,我的母语,意思是“ 没有这样的文件或目录 ”)

编辑4:
有人告诉我编译器正在寻找magick/MagickCore.h而不是/usr/include/ImageMagick/但是在/usr/include/ImageMagick-6/ 。 所以我创建了一个符号链接:

 sudo ln -s /usr/include/ImageMagick /usr/include/ImageMagick-6 

并再次尝试安装模块:

 # cpan install Image::Magick ... chmod 644 "Magick.bs" "/usr/bin/perl" "/usr/local/share/perl/5.18.2/ExtUtils/xsubpp" -typemap "/usr/share/perl/5.18/ExtUtils/typemap" -typemap "typemap" Magick.xs > Magick.xsc && mv Magick.xsc Magick.c cc -c -I/usr/local/include/ImageMagick-6 -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/usr/include/libxml2 -I"/usr/include/ImageMagick-6" -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/freetype2 -g -O2 -Wall -pthread -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -O2 -g -DVERSION=\"6.89\" -DXS_VERSION=\"6.89\" -fPIC "-I/usr/lib/perl/5.18/CORE" -D_LARGE_FILES=1 -DHAVE_CONFIG_H Magick.c Magick.xs:545:33: error: 'MagickPixelIntensityOptions' undeclared here (not in a function) { "Grayscale", { {"method", MagickPixelIntensityOptions} } }, ^ Magick.xs: In function 'XS_Image__Magick_ComplexImages': Magick.xs:3475:5: error: unknown type name 'ComplexOperator' ComplexOperator ^ Magick.xs:3510:8: error: 'UndefinedComplexOperator' undeclared (first use in this function) op=UndefinedComplexOperator; ^ ... Magick.xs:10939:16: warning: assignment makes pointer from integer without a cast [enabled by default] image=MeanShiftImage(image,(size_t) geometry_info.rho,(size_t) ^ make: *** [Magick.o] Fehler 1 JCRISTY/PerlMagick-6.89-1.tar.gz make -- NOT OK 

所以,脚本确实找到了magick/MagickCore.h ,但现在抛出了很多其他错误。


编辑5(2015-09-17)

我有提示安装

apt-get install perlmagick

但它说,已经安装了最新版本。 但无论如何我试图安装Image :: Magick。 它仍然不起作用:

 # cpan install Image::Magick Reading '/root/.cpan/Metadata' Database was generated on Mon, 31 Aug 2015 22:41:03 GMT Fetching with LWP: http://ftp.u-tx.net/CPAN/authors/01mailrc.txt.gz Reading '/root/.cpan/sources/authors/01mailrc.txt.gz' ............................................................................DONE Fetching with LWP: http://ftp.u-tx.net/CPAN/modules/02packages.details.txt.gz Reading '/root/.cpan/sources/modules/02packages.details.txt.gz' Database was generated on Wed, 16 Sep 2015 22:41:02 GMT ............................................................................DONE Fetching with LWP: http://ftp.u-tx.net/CPAN/modules/03modlist.data.gz Reading '/root/.cpan/sources/modules/03modlist.data.gz' DONE Writing /root/.cpan/Metadata Running install for module 'Image::Magick' Checksum for /root/.cpan/sources/authors/id/J/JC/JCRISTY/PerlMagick-6.89-1.tar.gz ok tmp-18091 for tmp-18091: Datei oder Verzeichnis nicht gefunden at /usr/share/perl/5.18/CPAN/Distribution.pm line 468. Configuring J/JC/JCRISTY/PerlMagick-6.89-1.tar.gz with Makefile.PL Checking if your kit is complete... Looks good Warning (mostly harmless): No library found for -lMagickCore-6.Q16 Generating a Unix-style Makefile Writing Makefile for Image::Magick Writing MYMETA.yml and MYMETA.json JCRISTY/PerlMagick-6.89-1.tar.gz /usr/bin/perl Makefile.PL INSTALLDIRS=site -- OK Running make for J/JC/JCRISTY/PerlMagick-6.89-1.tar.gz cp Magick.pm blib/lib/Image/Magick.pm AutoSplitting blib/lib/Image/Magick.pm (blib/lib/auto/Image/Magick) Running Mkbootstrap for Image::Magick () chmod 644 "Magick.bs" "/usr/bin/perl" "/usr/local/share/perl/5.18.2/ExtUtils/xsubpp" -typemap "/usr/share/perl/5.18/ExtUtils/typemap" -typemap "typemap" Magick.xs > Magick.xsc && mv Magick.xsc Magick.c cc -c -I/usr/local/include/ImageMagick-6 -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/usr/include/libxml2 -I"/usr/include/ImageMagick-6" -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/freetype2 -g -O2 -Wall -pthread -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16 -O2 -g -DVERSION=\"6.89\" -DXS_VERSION=\"6.89\" -fPIC "-I/usr/lib/perl/5.18/CORE" -D_LARGE_FILES=1 -DHAVE_CONFIG_H Magick.c Magick.xs:545:33: error: 'MagickPixelIntensityOptions' undeclared here (not in a function) { "Grayscale", { {"method", MagickPixelIntensityOptions} } }, ^ Magick.xs: In function 'XS_Image__Magick_ComplexImages': Magick.xs:3475:5: error: unknown type name 'ComplexOperator' ComplexOperator ^ Magick.xs:3510:8: error: 'UndefinedComplexOperator' undeclared (first use in this function) op=UndefinedComplexOperator; ^ Magick.xs:3510:8: note: each undeclared identifier is reported only once for each function it appears in Magick.xs:3510:7: warning: assignment makes integer from pointer without a cast [enabled by default] op=UndefinedComplexOperator; ^ Magick.xs:3516:31: error: 'MagickComplexOptions' undeclared (first use in this function) in=ParseCommandOption(MagickComplexOptions,MagickFalse,(char *) ^ Magick.xs:3517:11: error: incompatible type for argument 1 of 'ParseCommandOption' SvPV(ST(1),na)); ^ In file included from /usr/include/ImageMagick-6/magick/MagickCore.h:115:0, from Magick.xs:60: /usr/include/ImageMagick-6/magick/option.h:166:3: note: expected 'CommandOption' but argument is of type 'struct Methods *' ParseCommandOption(const CommandOption,const MagickBooleanType,const char *); ^ Magick.xs:3516:11: warning: assignment makes integer from pointer without a cast [enabled by default] in=ParseCommandOption(MagickComplexOptions,MagickFalse,(char *) ^ Magick.xs:3524:13: error: 'ComplexOperator' undeclared (first use in this function) op=(ComplexOperator) in; ^ Magick.xs:3524:11: warning: assignment makes integer from pointer without a cast [enabled by default] op=(ComplexOperator) in; ^ Magick.xs:3524:30: error: expected ';' before 'in' op=(ComplexOperator) in; ^ Magick.xs:3541:19: error: incompatible type for argument 1 of 'ParseCommandOption' MagickComplexOptions,MagickFalse,SvPV(ST(i),na)); ^ In file included from /usr/include/ImageMagick-6/magick/MagickCore.h:115:0, from Magick.xs:60: /usr/include/ImageMagick-6/magick/option.h:166:3: note: expected 'CommandOption' but argument is of type 'struct Methods *' ParseCommandOption(const CommandOption,const MagickBooleanType,const char *); ^ Magick.xs:3540:48: warning: pointer/integer type mismatch in conditional expression [enabled by default] in=!SvPOK(ST(i)) ? SvIV(ST(i)) : ParseCommandOption( ^ Magick.xs:3540:19: warning: assignment makes integer from pointer without a cast [enabled by default] in=!SvPOK(ST(i)) ? SvIV(ST(i)) : ParseCommandOption( ^ Magick.xs:3548:19: warning: assignment makes integer from pointer without a cast [enabled by default] op=(ComplexOperator) in; ^ Magick.xs:3548:38: error: expected ';' before 'in' op=(ComplexOperator) in; ^ Magick.xs:3563:5: warning: implicit declaration of function 'ComplexImages' [-Wimplicit-function-declaration] image=ComplexImages(image,op,exception); ^ Magick.xs:3563:10: warning: assignment makes pointer from integer without a cast [enabled by default] image=ComplexImages(image,op,exception); ^ Magick.xs: In function 'XS_Image__Magick_Mogrify': Magick.xs:9175:11: warning: implicit declaration of function 'SolarizeImageChannel' [-Wimplicit-function-declaration] (void) SolarizeImageChannel(image,channel,geometry_info.rho, ^ Magick.xs:9824:11: warning: implicit declaration of function 'RotationalBlurImageChannel' [-Wimplicit-function-declaration] image=RotationalBlurImageChannel(image,channel,geometry_info.rho, ^ Magick.xs:9824:16: warning: assignment makes pointer from integer without a cast [enabled by default] image=RotationalBlurImageChannel(image,channel,geometry_info.rho, ^ Magick.xs:10112:11: warning: implicit declaration of function 'AutoOrientImage' [-Wimplicit-function-declaration] image=AutoOrientImage(image,image->orientation,exception); ^ Magick.xs:10112:16: warning: assignment makes pointer from integer without a cast [enabled by default] image=AutoOrientImage(image,image->orientation,exception); ^ Magick.xs:10824:11: warning: implicit declaration of function 'PerceptibleImageChannel' [-Wimplicit-function-declaration] (void) PerceptibleImageChannel(image,channel,epsilon); ^ Magick.xs:10853:11: warning: implicit declaration of function 'PolynomialImageChannel' [-Wimplicit-function-declaration] image=PolynomialImageChannel(image,channel,number_terms >> 1,terms, ^ Magick.xs:10853:16: warning: assignment makes pointer from integer without a cast [enabled by default] image=PolynomialImageChannel(image,channel,number_terms >> 1,terms, ^ Magick.xs:10860:11: error: unknown type name 'PixelIntensityMethod' PixelIntensityMethod ^ Magick.xs:10863:18: error: 'UndefinedPixelIntensityMethod' undeclared (first use in this function) method=UndefinedPixelIntensityMethod; ^ Magick.xs:10863:17: warning: assignment makes integer from pointer without a cast [enabled by default] method=UndefinedPixelIntensityMethod; ^ Magick.xs:10865:21: error: 'PixelIntensityMethod' undeclared (first use in this function) method=(PixelIntensityMethod) argument_list[0].integer_reference; ^ Magick.xs:10865:19: warning: assignment makes integer from pointer without a cast [enabled by default] method=(PixelIntensityMethod) argument_list[0].integer_reference; ^ Magick.xs:10865:43: error: expected ';' before 'argument_list' method=(PixelIntensityMethod) argument_list[0].integer_reference; ^ Magick.xs:10866:11: warning: implicit declaration of function 'GrayscaleImage' [-Wimplicit-function-declaration] (void) GrayscaleImage(image,method); ^ Magick.xs:10895:11: warning: implicit declaration of function 'CannyEdgeImage' [-Wimplicit-function-declaration] image=CannyEdgeImage(image,geometry_info.rho,geometry_info.sigma, ^ Magick.xs:10895:16: warning: assignment makes pointer from integer without a cast [enabled by default] image=CannyEdgeImage(image,geometry_info.rho,geometry_info.sigma, ^ Magick.xs:10916:11: warning: implicit declaration of function 'HoughLineImage' [-Wimplicit-function-declaration] image=HoughLineImage(image,(size_t) geometry_info.rho,(size_t) ^ Magick.xs:10916:16: warning: assignment makes pointer from integer without a cast [enabled by default] image=HoughLineImage(image,(size_t) geometry_info.rho,(size_t) ^ Magick.xs:10939:11: warning: implicit declaration of function 'MeanShiftImage' [-Wimplicit-function-declaration] image=MeanShiftImage(image,(size_t) geometry_info.rho,(size_t) ^ Magick.xs:10939:16: warning: assignment makes pointer from integer without a cast [enabled by default] image=MeanShiftImage(image,(size_t) geometry_info.rho,(size_t) ^ make: *** [Magick.o] Fehler 1 JCRISTY/PerlMagick-6.89-1.tar.gz make -- NOT OK 

这是报告的第一个错误:

tmp-18091 for tmp-18091:Datei oder Verzeichnis nicht gefunden atus /share/perl/5.18/CPAN/Distribution.pm第468行。

这可能是英文的:

对于tmp-18091,tmp-18091:在/usr/share/perl/5.18/CPAN/Distribution.pm第468行没有这样的文件或目录。

我安装Image magick的最终解决方案是:

(完成所有步骤后)

从源下载ImageMagick的当前版本

6.9.2在我的情况下:

下载后,切换到Download文件夹并:

 tar xvfz ImageMagick-6.9.2-4.tar.gz cd ImageMagick-6.9.2-4/ ./configure --with-perl make (*) sudo make install 

然后一切顺利

(*)另一个缺少的部分, lperl ,所以在这个过程中我必须添加: sudo apt-get install libperl-dev

迭戈的解决方案有效。

对于ImageMagick-6.9.1和ImageMagick-6.9.5版本,类似的程序对我有用。

从源代码构建Image :: Magick perl模块

请访问: http : //www.imagemagick.org/script/download.php

从其中一个镜像下载tar.gz文件:

 ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.9.5-8.tar.gz 

提取到〜/ home / src:

 $ cd ~/home/src $ mv ~/Downloads/ImageMagick-6.9.5-8.tar.gz . $ tar xzvf ImageMagick-6.9.5-8.tar.gz 

使用Perl绑定配置Image Magic

 $ cd ImageMagick-6.9.5-8 $ ./configure --with-perl $ make 

确保安装了perl dev文件

 $ sudo-apt get install libperl-dev 

安装Image Magick

 $ make install # or sudo make install 

检查它是否有效:

 $ perldoc Image::Magick 

资源:

 http://www.imagemagick.org/script/perl-magick.php http://www.imagemagick.org/script/examples.php http://www.imagemagick.org/script/command-line-options.php 

安装包php5-imagick并尝试再次通过CPAN安装。

尝试安装标头:

 sudo apt-get install libmagickcore-6-headers libmagick++-6-headers libmagickwand-6-headers 

-dev包一起使用:

 sudo apt-get install libmagic-dev libmagick++-6.q16-dev libmagickcore-6.q16-dev libmagickcore-dev libmagick++-dev libmagickwand-6.q16-dev libmagickwand-dev libmagic-ocaml-dev libmagics++-dev libmagics++-metview-dev