【问题标题】:Install Perl Image::Magick on Fedora在 Fedora 上安装 Perl Image::Magick
【发布时间】:2015-12-22 22:33:27
【问题描述】:

我正在通过 cpan 安装 Image::Magick,但我不断收到此错误。我试过强迫和不强迫它。我已经修剪了安装日志。我读过一些关于缺少 ImageMagick.h 文件的内容,但除此之外不完全了解。显然这是自 2007 年以来的一个普遍问题.....

[gandalf@Durmstrang ~]$ cpan -if Image::Magick

"/usr/bin/perl" "/usr/share/perl5/vendor_perl/ExtUtils/xsubpp"  -typemap "/usr/share/perl5/ExtUtils/typemap" -typemap "typemap"  Magick.xs > Magick.xsc && mv Magick.xsc Magick.c
gcc -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 -fno-strict-aliasing -pipe -fstack-protector -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 -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic   -DVERSION=\"6.89\" -DXS_VERSION=\"6.89\" -fPIC "-I/usr/lib64/perl5/CORE"  -D_LARGE_FILES=1 -DHAVE_CONFIG_H Magick.c
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:3516:31: error: ‘MagickComplexOptions’ undeclared (first use in this function)
         in=ParseCommandOption(MagickComplexOptions,MagickFalse,(char *)
                               ^
Magick.xs:3524:13: error: ‘ComplexOperator’ undeclared (first use in this function)
         op=(ComplexOperator) in;
             ^
Magick.xs:3524:30: error: expected ‘;’ before ‘in’
         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: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: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] Error 1
  JCRISTY/PerlMagick-6.89-1.tar.gz
  /usr/bin/make -- NOT OK
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible

【问题讨论】:

    标签: perl imagemagick


    【解决方案1】:

    问题在于 CPAN 不知道非 Perl 依赖项。

    Perl Image::Magick 模块只是一个 C 库的包装器。在构建 Perl 模块之前,您需要安装该库。

    $ sudo yum install ImageMagick
    

    可能还需要ImageMagick的开发包。

    $ sudo yum install ImageMagick-devel
    

    但是安装已经为 Fedora 打包的 RPM 版本可能更容易(这将自动获取任何其他要求)。

    $ sudo yum install ImageMagick-perl
    

    【讨论】:

    • 谢谢。我相信如果你只使用系统 perl 就可以了。
    【解决方案2】:

    在 Fedora、CentOS、Ubuntu 等中,在通过 cpan 程序安装 Image::Magick 时遇到了此类挑战,并且 Image::Magick 的安装脚本存在一些敏感问题。几年,似乎(如果有人搜索的话)。这既适用于桌面 Linux,也适用于 Apache cpanel。有recipies,但至少在Ubuntu,他们并没有解决所有问题。有时,为了让它正确,必须首先使用 ImageMagick 删除相关库以重置链接。所有建议的解决方案都围绕在使用“cpan”之前安装其他东西。但是,我发现最好的方法根本不是从源代码编译,而是在可用时安装二进制 ImageMagick 应用程序,以及 cpan 之前和之后的相关库,就像这样 - 在 Ubuntu 中,但适用于 Fedora应该相似或大致相同:

    sudo apt-get install perlmagick
    sudo apt-get install ImageMagick
    sudo cpan install Image::Magick
    sudo apt-get install libperl-dev
    

    为了完整起见,如果找不到正确的二进制文件,则必须注意预先安装所有相关库,如http://www.imagemagick.org 所示,然后这组命令将替换上面的第 2 行,当在 ' 之后执行时sudo -i'(在 Ubuntu 中)或 Fedora 中的等效项,位于临时文件夹中:

    wget http://www.imagemagick.org/download/ImageMagick.tar.gz
    tar xvfz ImageMagick.tar.gz
    cd Imag*
    ./configure --with-perl
    make
    make install
    

    安装完成后,继续执行上面的第 3 行。将命令的开头调整为适合其他形式的 linux 的形式。在此之后,在其开始时 use Image::Magick; 的 perl 程序应该能够完美地调整 jpg 图像的大小等。

    【讨论】:

      猜你喜欢
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 2013-03-10
      • 2012-10-23
      相关资源
      最近更新 更多