无法安装RMagick 2.13.1。找不到MagickWand.h文件。

155

当我尝试安装rmagick时,出现以下错误信息:

Can't install RMagick 2.13.1. Can't find MagickWand.h.
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

我使用的是Mac OSX 10.6.8操作系统,ruby版本为1.9.2p290,rvm版本为1.10.2。

请问有人能帮我解决这个问题吗?


1
也许这可以帮助:http://www.ruby-forum.com/topic/190824 - Daniel
嗨,丹尼尔。您提供的链接提供了 Debian 上 apt-get -y install libmagick9-dev 的解决方案,但遗憾的是,该解决方案在 Mac OSx 上无法使用。是否有其他替代方案? - blawzoo
尝试这个:https://github.com/maddox/magick-installer 它可以使用apt-get和C_...工作,但brew不行。 - jstreebin
1
简而言之:如果你在升级 Mavericks 后遇到了这个问题,请尝试使用 brew uninstall/reinstall imagemagick/pkgconfig(如 jwadsack 所建议的)。 - thewoolleyman
请查看我在这里的回答:https://dev59.com/-Wct5IYBdhLWcg3wKqa9#44126407 - Aleksandar Pavić
32个回答

0

可能您正在安装ImageMagick 7.x.x版本,这将在您的usr/lib/local/include/ImageMagick7.x.x文件夹中生成不同的文件夹名称。

在ImageMagick6.x.x版本中,我们有magickwand命名的文件夹,在ImageMagick7.x.x版本中,我们将其命名为MagickCoreMagickWand。因此,这个更新导致了一些gem安装问题,比如这里。它使用magick/some_header.hwand/some_header.h(意味着它们没有更新到新的7.x.x ImageMagick版本)。

这就是为什么我们会遇到这个错误:


    checking for outdated ImageMagick version (<= 6.4.9)... no
    checking for presence of MagickWand API (ImageMagick version >= 6.9.0)... no
     .... 
    checking for wand/MagickWand.h... no

并且在日志文件中会显示类似以下的内容:

error: 'MagickCore/method-attribute.h' file not found
#include "MagickCore/method-attribute.h"
         ^
解决方案

从官网 https://www.imagemagick.org/download/ 下载并安装您系统中的 ImageMagick6.x.x 版本,并使用以下命令进行安装(在解压缩 zip/tar 后):

./configure
make 
make install

然后执行

gem install rmagick

它将会生效。


在此之前,您可能还需要设置以下符号链接才能正常工作:

ln -s /usr/local/lib/libMagickWand-6.Q16.so.6 /home/marcelo/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/extensions/x86_64-linux/2.2.0-static/rmagick-2.16.0/libMagickWand-6.Q16.so.6
sudo ln -s /usr/local/lib/libMagickWand-6.Q16.so.6 /usr/lib
ln -s /usr/local/lib/libMagickCore-6.Q16.so.6 /home/marcelo/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/extensions/x86_64-linux/2.2.0-static/rmagick-2.16.0/libMagickCore-6.Q16.so.6
sudo ln -s /usr/local/lib/libMagickCore-6.Q16.so.6 /usr/lib

0

我在Ubuntu 20.04上遇到了这个问题,解决方法是通过linuxbrew安装ImageMagick:

brew install imagemagick@6 && brew link imagemagick@6 --force

然后按照brew文档操作即可:

要在PATH中优先使用imagemagick@6,请运行:

 echo 'export PATH="/home/linuxbrew/.linuxbrew/opt/imagemagick@6/bin:$PATH"' >> /home/visiond/.bash_profile

为了让编译器找到ImageMagick@6,请执行以下操作:

  export LDFLAGS="-L/home/linuxbrew/.linuxbrew/opt/imagemagick@6/lib"
  export CPPFLAGS="-I/home/linuxbrew/.linuxbrew/opt/imagemagick@6/include"

如果要让pkg-config找到imagemagick@6,请运行以下命令:

  export PKG_CONFIG_PATH="/home/linuxbrew/.linuxbrew/opt/imagemagick@6/lib/pkgconfig"

然后尝试重新安装 rmagick

gem install rmagick -v '2.16.0'

如果它抱怨缺少 pkg-config,请运行

brew reinstall pkg-config

现在再次尝试安装 rmagick,一切应该正常。

如果您正在使用 WSL,它仍然可能失败,请更改

gem'rmagick','~> 2.16.0'

改为

gem'rmagick','~> 2.15','>= 2.15.4',:platforms => :ruby

这样完全解决问题。

更新

有时,brew 选项会给出奇怪的错误,例如

Rmagick was configured with <some-imagemagick-version> but <other-imagemagick-version> is in use

这通常是与 linuxbrew 相关的问题,我用以下方法解决了它

回滚上面解释的所有内容 ^^

  brew uninstall imagemagick@6
  brew uninstall pkg-config

然后从您的bashrc中删除所有这些行。

 export PATH="/home/linuxbrew/.linuxbrew/opt/imagemagick@6/bin:$PATH"
 export LDFLAGS="-L/home/linuxbrew/.linuxbrew/opt/imagemagick@6/lib"
 export CPPFLAGS="-I/home/linuxbrew/.linuxbrew/opt/imagemagick@6/include"
 export PKG_CONFIG_PATH="/home/linuxbrew/.linuxbrew/opt/imagemagick@6/lib/pkgconfig"

刷新您的终端以获取最新更改。

source ~/.bashrc

确保没有安装任何imagemagick,请运行以下命令:

convert -version

如果您看到类似以下内容:

Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org
Copyright: © 1999-2019 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib

这意味着您的系统中仍然存在ImageMagick,可能是由于以下原因:

  • 您从源代码安装了ImageMagick
  • 您通过apt安装了ImageMagick

如果是1

通过进入运行make install的文件夹并运行make uninstall来删除ImageMagick,这将完全删除该软件包,然后再次尝试convert -version

如果是2

检查软件包的版本,如果您正在尝试安装rmagick < v3,则需要ImageMagick 6,否则任何ImageMagick都可以。

假设您有一个新版本的ImageMagick(即7),而您需要较旧版本的rmagick,则只需执行以下操作:

sudo apt remove --purge imagemagick

现在我们的系统已经清理干净,我们可以重新安装ImageMagick

sudo apt-get install imagemagick-6.q16

尝试再次安装rmagick

gem install rmagick -v '2.16.0'

如果它抱怨MagickCore,那么意味着你需要安装libmagickwand-dev,操作如下:

sudo apt-get install libmagickwand-dev

现在再试一次,一切应该正常工作 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接