RMagick安装:找不到MagickWand.h

时间:2016-09-14 15:44:14

标签: ruby macos imagemagick macos-sierra rmagick

更新RMagickImagemagick是一个痛苦的期待。我已经在Mac上更新了Imagemagick版本(MacOS El Capitan版本10.11.5),并将自制软件更新为Ruby 2.3中的一个项目<HTML> <HEAD> <TITLE>Unauthorized</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000"> <H1>Unauthorized</H1> <H2>Error 401</H2> </BODY> </HTML>

6.9.5-9

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

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

如果无法安装,则无法启动整个应用程序。我尝试了here的所有答案,但没有一个在MacOS上运行:-(我用自制程序重新安装了imagemagick和pkg-config,并尝试了各种版本的RMagick但没有成功.2.16.0是{的最新版本{3}}目前。

MagicWand似乎用于ImageMagick版本&gt; 6.9,它可以在机器上找到:

$ 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. 

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

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

更新:

错误仅发生在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✓

21 个答案:

答案 0 :(得分:409)

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

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

imagemagick@6keg-only,因此您需要强行关联。

答案 1 :(得分:53)

我对 ImageMagick 7.0.4-4 也有同样的问题。正确的解决方法是安装imagemagick@6。如果您不小心删除了imagemagick@6或从未安装过det <- read.table(header = T, stringsAsFactors = F, text = " Group1 Group ripk2pre ripk2post HDAC2PRE HDAC2POST TNFalfapre TNFalfapost hdac1pre hdac1post 1 0 1.2953928 1.3764571 2.0882699 1.3751473 1.3707263 0.9081135 1.0558543 0.9428877 2 0 0.9123888 1.2130447 0.8429092 1.0029163 1.2713608 1.2682995 1.0769362 1.2495874 3 0 1.2437122 0.8164699 1.9392855 0.7427853 1.0119777 2.0928740 0.8362260 1.5880373 4 0 0.8352961 1.0609110 0.9104137 1.2687785 0.8347809 0.8345946 1.5121548 1.1003785 5 0 1.0563645 1.2732350 1.2210999 2.1879613 2.2030366 1.0042444 0.7399383 0.7093015") library(reshape2) library(dplyr) library(ggplot2) det %>% select(Group, ripk2pre, ripk2post) %>% melt(id.vars = c("Group")) %>% ggplot(aes(x = variable, y = value)) + geom_boxplot() ,我发现https://github.com/Homebrew/homebrew-core/pull/8756非常有用。

答案 2 :(得分:29)

macOs Sierra:

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

答案 3 :(得分:20)

首先 通过使用。

取消链接已安装的imagemagick,该映像未正确安装在最新的mac high sierra中
brew unlink imagemagick

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

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

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

gem install rmagick 

它将完美地运作。

答案 4 :(得分:14)

ImageMagick 7中的许多内容都发生了变化,如此路径:include/.../wand,而wand/MagickWand.h目前在rmagic gem中已经硬连线。在我的情况下,由于项目相当陈旧,因此无法更新gem。所以我最终安装了旧版本的ImageMagic。

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

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

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

答案 5 :(得分:14)

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

MacOS X Sierra:

modifyList(item) {
  if (!item.disabled && item.__temp) {
    Object.assign(item, item.__temp);
    delete item.__temp;
  }
},

答案 6 :(得分: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

答案 7 :(得分: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

答案 8 :(得分: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'

答案 9 :(得分:4)

我还没有声誉可以将此作为评论改进另一个答案,但@ 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

答案 10 :(得分:3)

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

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"

您可以使用建议的export来制作RMagick宝石,而不是强制链接,后者可能会导致其他支持 的软件的问题。在构建时选择旧版本:

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,请去help contribute to the upgrade effort

答案 11 :(得分: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
  5. 如果您已安装旧版Imagemagick,则应该可以使用:https://stackoverflow.com/a/41674363

答案 12 :(得分:2)

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

$ brew install imagemagick@6

不应该链接-强制使用较旧的版本,因为这会更改您路径中的二进制文件,而好的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的最新版本,但是如果需要使用其他版本,可以随时进行更改

答案 13 :(得分:1)

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

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

答案 14 :(得分:1)

按照brew安装脚本中的说明进行操作,无需链接或取消链接任何内容:

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

答案 15 :(得分:0)

对于高山3.9图像生成,存在相同的错误。它带有ImageMagick 7.0.8.38-r0

要修复在ImageMagick 6.9.6.8-r1上使用Alpine 3.5:

FROM alpine:3.5

或将ImageMagick 6.9.6.8-r1与3.5的软件包存储库一起安装:

RUN apk add imagemagick-dev=6.9.6.8-r1 --repository http://dl-3.alpinelinux.org/alpine/v3.5/main/
rmagick回购中的

There is an open issue关于ImageMagick 7.0.x的构建失败。所以希望它将很快得到解决。

参考https://stackoverflow.com/a/55971997/4950680

答案 16 :(得分:0)

我正在为客户端开发旧版 Ruby on Rails 应用程序(Ruby 2.1.x / Rails 3.2.x),并且需要让它在 MacOS Big Sur 上运行。

rmagick 失败后,输出如下:

    /Users/robbyrussell/.rbenv/versions/2.1.0/bin/ruby 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.
*** 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.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/robbyrussell/.rbenv/versions/2.1.0/bin/ruby

extconf failed, exit code 1

Gem files will remain installed in /Users/robbyrussell/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/rmagick-2.16.0 for inspection.
Results logged to /Users/robbyrussell/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/extensions/x86_64-darwin-20/2.1.0-static/rmagick-2.16.0/gem_make.out

我解决这个问题的下一步是指示 Bundler 将一些标志传递给编译器:

bundle config build.rmagick -- --with-cflags=-Wno-implicit-function-declaration

通过 Homebrew,我运行了以下内容:

% brew install imagemagick@6

然后按照输出的指导,我跑了:

% export PKG_CONFIG_PATH="/usr/local/opt/imagemagick@6/lib/pkgconfig"

% bundle install
.....
Fetching rmagick 2.16.0
Installing rmagick 2.16.0 with native extensions

瞧,我现在可以在本地运行这个应用程序了。

答案 17 :(得分: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的捆绑软件。

答案 18 :(得分:0)

我在ImageMagick install in centos中完整地解释了安装过程。

无论如何......
安装完成后安装Imagick&amp; ImageMagick-devel&amp; 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”&amp; “imagick”文件夹并清除所有这些文件夹,并通过此更改继续安装过程。

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

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

继续安装
在下面的行之前不要忘记: 去“php.ini”找到“disable_functions”并清理“proc_open,popen,proc_close”因为想象力需要这些功能, 完成安装后,您可以将此功能添加到“php.ini”文件中的“disable_functions”。

# phpize
# ./configure --with-php-config=/usr/local/php56/bin/php-config 
...
祝你好运......

答案 19 :(得分:0)

我的系统出现严重问题,严重错误以至于完全没问题,但是我安装完毕后我终于能够再次为Ruby 1.8.7安装RMagick

安装带有RVM rvm install 1.8.7的新Ruby版本还安装了一个新的GCC编译器:它删除了旧的GCC版本4.6并安装了GCC版本4.9。显然,尽管pkg-config,GCC仍无法找到合适的标题。

答案 20 :(得分:-1)

首先,如果安装了6.x,则无需卸载imagemagick,如下所示。您可以看到当前的“主要内容”为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上面提到的brew设置:

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路径是错误的。提出Issue #278以澄清是否可以修复此问题。否则需要手动符号化libMagickWand等。手动链接特定库可能比brew link --force更安全。