RMagick安装:找不到MagickWand.h

0x4*_*672 152 ruby macos rmagick imagemagick macos-sierra

更新RMagickImagemagick是一个痛苦的期待.我用自制软件更新了Mac上的Imagemagick版本(MacOS El Capitan版本10.11.5),用于Ruby 2.3中的一个项目6.9.5-9

$ convert --version
Version: ImageMagick 6.9.5-9 Q16 x86_64 2016-09-09
Run Code Online (Sandbox Code Playgroud)

现在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. 
Run Code Online (Sandbox Code Playgroud)

如果无法安装,则无法启动整个应用程序.我从这里尝试了所有的答案,并且没有一个在MacOS上运行:-(我用自制程序重新安装了imagemagick和pkg-config,并尝试了各种版本的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
Run Code Online (Sandbox Code Playgroud)

即使我在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
Run Code Online (Sandbox Code Playgroud)

更新:

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

  • Ruby 1.8.7 x
  • Ruby2.0.0✓
  • Ruby2.3.​​1✓

K M*_*lam 434

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

brew unlink imagemagick
brew install imagemagick@6 && brew link imagemagick@6 --force
Run Code Online (Sandbox Code Playgroud)

imagemagick@6是的keg-only,所以你需要强制链接.

  • 必须在链接之前手动取消链接`brew unlink imagemagick` - 但它有效.非常感谢. (7认同)
  • 与大苏尔合作! (3认同)
  • Wow. Super sucks that I can't have the latest version of ImageMagick, but this works. Thanks! (2认同)
  • 适用于 Apple M1 和 Monterey (2认同)

Ray*_*Cox 54

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

  • 请注意,imagemagick @ 6仅为keg,因此您需要强制链接.`brew install imagemagick @ 6 && brew link imagemagick @ 6 --force`为我解决了这个问题 (14认同)

小智 30

macOs Sierra:

brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force
Run Code Online (Sandbox Code Playgroud)

  • -1 因为你无缘无故地强制链接,也没有告诉任何人为什么这是一个坏主意。请参阅我在 Homebrew 而不是 MacPorts 意义上“正确”执行此操作的答案。 (2认同)

Ali*_*rza 20

首先取消链接你安装的imagemagick,它没有正确安装在最新的mac high sierra中使用.

brew unlink imagemagick
Run Code Online (Sandbox Code Playgroud)

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

brew install imagemagick@6 && brew link imagemagick@6 --force
Run Code Online (Sandbox Code Playgroud)

然后使用下面的命令安装gem rmagick

gem install rmagick 
Run Code Online (Sandbox Code Playgroud)

它会完美地运作.


BMA*_*A88 16

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

MacOS X Sierra:

brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force
Run Code Online (Sandbox Code Playgroud)


Pet*_*oth 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


Hol*_*off 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.
Run Code Online (Sandbox Code Playgroud)

我的系统上仍然有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
Run Code Online (Sandbox Code Playgroud)

之后我可以rmagick毫无困难地安装:

% gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.16.0
1 gem installed
Run Code Online (Sandbox Code Playgroud)


小智 6

安装 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 的最新版本,但如果您需要使用其他版本,请随时更改它


Yur*_*dev 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
Run Code Online (Sandbox Code Playgroud)


小智 5

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

所以:

brew install pkg-config
brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force
Run Code Online (Sandbox Code Playgroud)

成功:

$ 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
Run Code Online (Sandbox Code Playgroud)


Lal*_*rya 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'
Run Code Online (Sandbox Code Playgroud)


Phi*_*vin 5

RMagick依赖于imagemagick的过时版本,即版本6。(请参阅下文) Homebrew将其作为纯桶包装提供,您可以通过以下方式安装:

brew install imagemagick@6
Run Code Online (Sandbox Code Playgroud)

构建输出将包括“ 警告”部分(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"
Run Code Online (Sandbox Code Playgroud)

除了强制链接可能会导致其他确实支持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
Run Code Online (Sandbox Code Playgroud)
  1. 如果您了解Ruby和C,请去帮助进行升级


0x4*_*672 0

我的系统出现严重错误,严重到完全搞砸了,但在安装后我终于能够再次安装 RMagick for Ruby 1.8.7

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