RMagick安装:找不到MagickWand.h


164

更新RMagickImagemagick是一个痛苦的经历。我已经在Mac(MacOS El Capitan版本10.11.5)的Mac上使用自制软件更新了Ruby 2.3中的一个项目的Imagemagick版本,以6.9.5-9

$ convert --version
Version: ImageMagick 6.9.5-9 Q16 x86_64 2016-09-09

现在,Ruby 1.8.7中的一个较旧的项目拒绝使用错误消息“此RMagick的安装已配置为ImageMagick 6.8.9,但正在使用ImageMagick 6.9.5-9”。因此,我卸载了“ rmagick”,但无法再次安装

$ gem install rmagick -v 2.16.0
Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
ERROR: Failed to build gem native extension.

checking for /usr/local/opt/gcc46/bin/gcc-4.6... yes
checking for Magick-config... yes
checking for outdated ImageMagick version (<= 6.4.9)... no
checking for presence of MagickWand API (ImageMagick version >= 6.9.0)... no
checking for Ruby version >= 1.8.5... yes
checking for stdint.h... no
checking for sys/types.h... no
checking for wand/MagickWand.h... no

Can't install RMagick 2.16.0. Can't find MagickWand.h. 

如果无法安装,则无法启动整个应用程序。我尝试了所有从答案在这里,他们都不适用于MacOS的:-(我重新安装的ImageMagick和pkg配置与自制,并尝试了各种版本的RMagick没有成功。2.16.0是最新版本的RMagick目前。

MagicWand似乎已在ImageMagick 6.9以上版本中使用,可以在计算机上找到它:

find /usr/local -name MagickWand.h
=> /usr/local/Cellar/imagemagick/6.9.5-9_1/include/ImageMagick-6/wand/MagickWand.h

find /usr/local -name MagickWand.pc
=> /usr/local/Cellar/imagemagick/6.9.5-9_1/lib/pkgconfig/MagickCore.pc

即使我在安装gem时指定了这些路径,它也不起作用(与上述错误相同):-(

C_INCLUDE_PATH=/usr/local/Cellar/imagemagick/6.9.5-9_1/include/ImageMagick-6 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig gem install rmagick

更新:

该错误仅发生在Ruby 1.8.7上,可以为Ruby 2.0和Ruby 2.3安装RMagick。Ruby 1.8.7和ImageMagick 6.9.5似乎不兼容。

  • 红宝石1.8.7 x
  • Ruby 2.0.0✓
  • Ruby 2.3.1✓


这是什么,哈利波特游戏?
有限赎罪

Answers:


460

要解决Mac OSX Sierra,High Sierra,El Capitan,Mojave和Catalina中的问题,可以执行以下操作:

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

imagemagick@6keg-only,因此您需要强制链接。


7
必须先手动取消链接,brew unlink imagemagick然后才能进行链接-但这确实可行。非常感谢。
哈里斯·克拉吉纳

2
哇。超级糟透了,我没有ImageMagick的最新版本,但这有效。谢谢!
Fomentia'7

1
与Ubuntu的Ubuntu 16.04.3 LTS完美的作品
violentr

55

我在ImageMagick 7.0.4-4中遇到了同样的问题。正确的解决方法是安装imagemagick@6。我发现https://github.com/Homebrew/homebrew-core/pull/8756很有用,如果您不小心删除imagemagick@6了它,或者根本没有安装过它。


哇!非常感谢您提供的链接。我浪费了将近一半的工作时间来解决这个问题。
kalehv

14
请注意,imagemagick @ 6仅适用于小桶,因此您需要强制链接。brew install imagemagick@6 && brew link imagemagick@6 --force为我解决了问题
成仁

1
太棒了,加油!这对我brew install --force imagemagick@6 && brew link imagemagick@6 --force
Bella

1
是的,安装以前的版本(6x)肯定会修复它。问题是imagemagick文件的文件夹结构在7x版本中已更改。在安装gem时,假设6x具有文件夹结构
Prakash Raman

不幸的是,回滚到imagemagick @ 6对我不起作用。即使在重新安装并重新链接后,尝试安装rmagick时仍然收到此消息: Using 6.9.8 Q16 from /usr/local/Cellar/imagemagick@6/6.9.8-3. checking for outdated ImageMagick version (<= 6.4.9)... yes checking for Ruby version >= 1.8.5... yes checking for stdint.h... no checking for sys/types.h... no checking for wand/MagickWand.h... no Can't install RMagick 2.15.0. Can't find MagickWand.h.
Hitchcock将于

32

macOS Sierra:

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

1
-1是因为您无缘无故地强制链接,也没有告诉任何人为什么这是一个坏主意。请参阅我的回答,以Homebrew而非MacPorts的方式“正确”地进行操作。
mmlac

21

首先,通过使用取消链接未正确安装在最新的mac high sierra中的已安装imagemagick。

brew unlink imagemagick

然后使用以下命令安装最新的imagemagic6

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

然后使用以下命令安装gem rmagick

gem install rmagick 

它将工作正常。


16

是的,这个解决了我的问题:

MacOS X Sierra:

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

14

在ImageMagick 7中,许多事情都发生了变化,例如以下路径:include/.../wand ,并且wand/MagickWand.h目前已硬连接到rmagic gem中。在我的情况下,由于项目太旧了,因此无法更新gem。因此,我最终安装了旧版本的ImageMagic。

您可以从6.xx安装最新版本:

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/6f014f2b7f1f9e618fd5c0ae9c93befea671f8be/Formula/imagemagick.rb

您也可以将其固定以供以后使用: brew pin imagemagick


1
为我工作:Mac OS10.12.X。我首先安装了ImageMagick 7,但在安装rails gem rmagick时遇到了问题。
西蒙·弗兰岑

11

ImageMagick 7.0.4-4对我来说有些改变。wand/MagickWand.h找不到了:

% brew unlink imagemagick && brew link imagemagick
Unlinking /usr/local/Cellar/imagemagick/7.0.4-4... 71 symlinks removed
Linking /usr/local/Cellar/imagemagick/7.0.4-4... 71 symlinks created
% gem install rmagick
Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
    ERROR: Failed to build gem native extension.

    /Users/holger/.rbenv/versions/2.2.2/bin/ruby -r ./siteconf20170116-21103-1aikaka.rb extconf.rb
checking for clang... yes
checking for Magick-config... no
checking for pkg-config... yes
checking for outdated ImageMagick version (<= 6.4.9)... no
checking for presence of MagickWand API (ImageMagick version >= 6.9.0)... no
checking for Ruby version >= 1.8.5... yes
checking for stdint.h... yes
checking for sys/types.h... yes
checking for wand/MagickWand.h... no

Can't install RMagick 2.16.0. Can't find MagickWand.h.

我的系统上仍然有ImageMagick 6.9.7-3,然后改回

% brew switch imagemagick 6.9.7-3
Cleaning /usr/local/Cellar/imagemagick/6.9.6-6
Cleaning /usr/local/Cellar/imagemagick/6.9.7-0
Cleaning /usr/local/Cellar/imagemagick/6.9.7-1
Cleaning /usr/local/Cellar/imagemagick/6.9.7-3
Cleaning /usr/local/Cellar/imagemagick/7.0.4-4
75 links created for /usr/local/Cellar/imagemagick/6.9.7-3

之后,我可以rmagick毫无问题地安装:

% gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.16.0
1 gem installed

您能找到任何解决方案吗?我也遇到了同样的问题。
凯末尔·阿克云云

就像我说的。切换回imagemagick 6.9可以修复它。
Holger Frohloff

1
谢谢,根据您的建议,我已将其修复。但是我想问的是您是否已使用最新的ImageMagick版本解决了该问题?然后我发现了相关的问题github.com/rmagick/rmagick/issues/256,它也建议像您一样降级ImageMagick。再次感谢。
凯末尔阿克云

不客气。我没有使用7.x版本解决问题。我想很快就会有一个修复。我们拭目以待。:)
Holger Frohloff

6

RMagick取决于ImageMagick的,版本6的过时的版本(见下文)家酿提供这是一个只小桶包,您可以与安装:

brew install imagemagick@6

构建输出将包括一个警告部分(brew info imagemagick@6如果您清除了输出,也可以从该部分获得):

==> Caveats
imagemagick@6 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have imagemagick@6 first in your PATH run:
  echo 'export PATH="/usr/local/opt/imagemagick@6/bin:$PATH"' >> ~/.zshrc

For compilers to find imagemagick@6 you may need to set:
  export LDFLAGS="-L/usr/local/opt/imagemagick@6/lib"
  export CPPFLAGS="-I/usr/local/opt/imagemagick@6/include"

For pkg-config to find imagemagick@6 you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/imagemagick@6/lib/pkgconfig"

除了强制链接可能会导致其他确实支持imagemagick较新版本的软件出现问题之外,您还可以使用建议的exports,使RMagick gem在构建时选择旧版本:

export LDFLAGS="-L/usr/local/opt/imagemagick@6/lib"
export CPPFLAGS="-I/usr/local/opt/imagemagick@6/include"
export PKG_CONFIG_PATH="/usr/local/opt/imagemagick@6/lib/pkgconfig"
gem install rmagick

  1. 如果您了解Ruby和C,请去帮助进行升级

5
$ brew remove imagemagick && brew install imagemagick

$ brew uninstall pkg-config && brew install pkg-config
$ brew unlink pkg-config && brew link pkg-config

$ gem install rmagick

感谢您的提示和建议,不幸的是它没有帮助:-(
0x4a6f4672

1
该答案是唯一提及的答案,pkg-config并且有效。
杰森·金

pkg-config是成功的关键。非常感谢。
迈克尔·约翰

5

我尚无口碑可言,无法发表评论以改进另一个答案,但是@ Evgeniy28的答案仅在还安装了pkg-config后才在Sierra上起作用,默认情况下,该软件包未在新的Sierra机器上安装。

所以:

brew install pkg-config
brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force

成功:

$ gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.16.0
Parsing documentation for rmagick-2.16.0
Installing ri documentation for rmagick-2.16.0
Done installing documentation for rmagick after 4 seconds
1 gem installed

为我工作,Sierra 10.12.6
Ivan Danci

5

请遵循以下内容,并根据需要更改某些部分。

brew unlink imagemagick
brew install imagemagick@6 && brew link imagemagick@6 --force
export PKG_CONFIG_PATH=/usr/local/Cellar/imagemagick@6/6.9.9-24/lib/pkgconfig
gem install rmagick -v '2.15.4'

4

安装imagemagick版本6,因为版本7不兼容:

$ brew install imagemagick@6

不应链接--force较旧的版本,因为这会更改您路径中的二进制文件,并且商品brew doctor会抱怨。

引用构建gem的本机扩展时安装的版本6中的标头和库:

$ PKG_CONFIG_PATH=/usr/local/Cellar/imagemagick@6/6.9.10-14/lib/pkgconfig/ gem install rmagick -v '2.16.0'

注意:为我工作时没有指出lib和include文件夹,因为pkgconfig对此负责。

注意:6.9.10-14是imagemagick @ 6的最新版本,但是如果需要使用其他版本,可以随时进行更改。


3

这是我使用Homebrew 在macOS High Sierra 10.13.3 上解决(经过多次尝试和失败之后)的方法:

  1. RMagick 2.16.0似乎与ImageMagick的最新版本(版本7)不兼容:http ://wordsandmagic.com/2017/09/01/RMagick-2-16-0-Error-MagickWand
  2. 我卸载了imagemagick: brew uninstall imagemagick
  3. 然后我使用以下公式安装了Imagemagick: https //gist.github.com/JagdeepSingh/4b03cbeab16cc0bc729bbc6d275402d3
  4. gem install rmagick

如果您已经安装了旧版本的Imagemagick,则应该可以使用:https : //stackoverflow.com/a/41674363


2

在7.0.7-1版中,您可以创建一个符号链接,但是编译以后会失败。

cd /usr/local/Cellar/imagemagick/7.0.7-1/include/ImageMagick-7
ln -s MagickWand/ wand
ln -s MagicCore/ magick

2

根据brew install脚本中的说明,无需链接或取消链接任何内容:

brew install imagemagick@6
LDFLAGS="-L/usr/local/opt/imagemagick@6/lib" CPPFLAGS="-I/usr/local/opt/imagemagick@6/include" PKG_CONFIG_PATH="/usr/local/opt/imagemagick@6/lib/pkgconfig" gem install rmagick


0

我的系统上出现严重错误,非常严重,以至于它完全被破坏了,但是我终于在安装后终于能够再次安装RMagick for Ruby 1.8.7。

使用RVM rvm install 1.8.7安装新的Ruby版本还安装了新的GCC编译器:它删除了较旧的GCC版本4.6,并安装了GCC版本4.9。显然,尽管使用了pkg-config,GCC仍找不到正确的头文件。


0

将在centos中的ImageMagick install中充分说明安装过程。

无论如何...
安装后,安装Imagick&ImageMagick-devel&ImageMagick PHP库,如下所示:

# yum install ImageMagick
# yum install ImageMagick-devel
# pecl install Imagick

转到/ usr / include

cd /usr/include

重要提示:将ImageMagick文件夹从“ / usr / include”复制到“ / usr / local / include”,以便ImageMagick找到“ MagickWand.h”

我在imagick-3.4.3(ImageMagick-7)和centos 6.5和php56上测试了此更改,并完美运行...

如果已经多次安装“ ImageMagick”,则首先将其全部删除,然后找到“ ImageMagick”和“ imagick”文件夹,然后清理所有文件夹,并继续进行此更改。

使用以下命令查找文件或文件夹:

find / -name 'ImageMagick*'
find / -name 'imagick*'

并继续安装,
然后不要忘记以下几行:转到“ php.ini”找到“ disable_functions”并清理“ proc_open,popen,proc_close”,因为imagick需要这些功能,完成安装后,可以将此功能添加到“ “ php.ini”文件上的“ disable_functions”。

# phpize
# ./configure --with-php-config=/usr/local/php56/bin/php-config 
...

祝好运...


0

对于Ubuntu版本> 12且未使用自制软件的情况,

wget http://www.imagemagick.org/download/<required_imagemagick_version>
tar -xvf <path_to_your_downloaded_file>.tar.gz

如果在wget链接中获取的是“ 7z”文件而不是“ tar.gz”文件,则

7z x <path_to_your_downloaded_file>.7z
cd <path_to_your_downloaded_file>/
make
./configure
sudo make install
sudo ldconfig /usr/local/lib

然后,您可以恢复RMagick的捆绑软件。


-1

首先,如果imagemagick已安装6.x,则无需卸载,如下所示。你可以看到当前的“主要”是7.0.7-8,但6.9.1-10仍然存在。

$ brew info imagemagick                                                            
imagemagick: stable 7.0.7-8 (bottled), HEAD
Tools and libraries to manipulate images in many formats
https://www.imagemagick.org/
/usr/local/Cellar/imagemagick/6.9.1-10 (1,450 files, 17.5MB)
  Poured from bottle on 2015-07-26 at 09:10:58
/usr/local/Cellar/imagemagick/7.0.6-9 (1,522 files, 22.8MB)
  Poured from bottle on 2017-08-21 at 14:44:16
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula

如果您没有旧的6.x版本,安装ImageMagick的@ 6。

其次,不要强制链接 imagemagick,尤其是不要6。编辑:请参阅¹
除了--with-opt- *标志之外,您还需要设置PKG_CONFIG_PATH。

这对我来说适用于High Sierra,并且在Ruby 1.9.3-p551上具有上述冲煮设置:

PKG_CONFIG_PATH=/usr/local/Cellar/imagemagick/6.9.1-10/lib/pkgconfig  \
  gem install rmagick -v '2.16.0' -- \
  --with-opt-lib=/usr/local/Cellar/imagemagick/6.9.1-10/lib/ \
  --with-opt-include=/usr/local/Cellar/imagemagick/6.9.1-10/include/ImageMagick-6/

构建ri文档失败,但是这些无关紧要。

¹:建筑工程,虽然RMagick搜索的dylib路径错误。提出了问题278,以澄清是否可以解决。否则,必须手动链接libMagickWand等。手动链接特定的库仍然比使用安全性更高brew link --force

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.