RMagick安装:找不到MagickWand.h

问题描述 投票:145回答:20

更新qazxsw poi和qazxsw poi是一次痛苦的经历。我已经使用自制软件更新了Mac上的Imagemagick版本(MacOS El Capitan版本10.11.5),用于Ruby 2.3中的一个项目到RMagick

Imagemagick

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

6.9.5-9

如果无法安装,则无法启动整个应用程序。我尝试了$ convert --version Version: ImageMagick 6.9.5-9 Q16 x86_64 2016-09-09 的所有答案,并且它们都不适用于MacOS :-(我用自制软件重新安装了imagemagick和pkg-config,并尝试了各种版本的RMagick但没有成功.2.16.0是$ 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. 的最新版本。

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

here

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

RMagick

更新:

该错误仅发生在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✓
ruby macos imagemagick macos-sierra rmagick
20个回答
422
投票

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

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

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 brew unlink imagemagick brew install imagemagick@6 && brew link imagemagick@6 --force ,所以你需要强制链接。


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

5
投票

RMagick依赖于imagemagick版本6的过时版本。(见下文)Homebrew将此作为一个仅限keg的包提供,您可以使用以下命令安装:

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 获得):

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'

而不是强制链接,这有可能导致支持更新版本的imagemagick的其他软件出现问题,你可以使用建议的brew install imagemagick@6 s使RMagick gem在构建时获取旧版本:

brew info imagemagick@6

  1. 如果你了解Ruby和C,那就去==> 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" 吧!

4
投票

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

export

不应该链接 - 强制旧版本,因为这将改变你的路径中的二进制文件,好的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 会抱怨。

引用构建gem的原生扩展时安装的版本6中的头文件和库:

help contribute to the upgrade effort

注意:在没有指示lib和include文件夹的情况下为我工作,因为pkgconfig负责这个。

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


3
投票

以下是我使用Homebrew在macOS High Sierra 10.13.3上解决的问题(经过多次尝试和失败):

  1. 似乎RMagick 2.16.0与最新版本的ImageMagick(版本7)不兼容:$ brew install imagemagick@6
  2. 我卸载了imagemagick:brew doctor
  3. 然后我用这个公式安装了Imagemagick:$ PKG_CONFIG_PATH=/usr/local/Cellar/imagemagick@6/6.9.10-14/lib/pkgconfig/ gem install rmagick -v '2.16.0'
  4. http://wordsandmagic.com/2017/09/01/RMagick-2-16-0-Error-MagickWand

如果你已经安装了旧版本Imagemagick,这应该可以工作:brew uninstall imagemagick


2
投票

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

https://gist.github.com/JagdeepSingh/4b03cbeab16cc0bc729bbc6d275402d3

2
投票

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

gem install rmagick

0
投票

在我的系统上出现了严重错误,非常糟糕,以至于完全没问题,但是我安装完毕后我终于能够再次安装RMag.7 for Ruby 1.8.7了。

使用RVM cd /usr/local/Cellar/imagemagick/7.0.7-1/include/ImageMagick-7 ln -s MagickWand/ wand ln -s MagicCore/ magick 安装新的Ruby版本还安装了一个新的GCC编译器:它删除了旧的GCC版本4.6并安装了GCC版本4.9。显然,尽管pkg-config,GCC仍无法找到合适的标题。


0
投票

我在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 中完整地解释了安装过程。 无论如何...... 安装后安装Imagick&ImageMagick-devel和ImageMagick PHP库如下:

older version of ImageMagick with Homebrew

转到/ usr / include

rvm install 1.8.7

Important: copy ImageMagick folder from "/usr/include" to "/usr/local/include" for ImageMagick find "MagickWand.h"

我在imagick-3.4.3(ImageMagick-7)和centos 6.5和php56上测试了这个变化并完美地工作......

如果您已多次安装“ImageMagick”,请首先删除所有这些文件并查找“ImageMagick”和“imagick”文件夹并清除所有文件夹并继续安装此过程。

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

ImageMagick install in centos

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

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

祝好运...


0
投票

对于Ubuntu版本> 12而不使用自制程序,

cd /usr/include

如果你在wget链接中获得'7z'文件而不是'tar.gz'文件,那么

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

然后你可以恢复你的RMagick捆绑器。


0
投票

高山3.9图像构建得到相同的错误。它配有# phpize # ./configure --with-php-config=/usr/local/php56/bin/php-config ...

要解决这个问题,你可以使用alpine 3.5和wget http://www.imagemagick.org/download/<required_imagemagick_version> tar -xvf <path_to_your_downloaded_file>.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

或者使用3.5的软件包存储库安装ImageMagick 6.9.6.8-r1:

ImageMagick 7.0.8.38-r0

有关ImageMagick 7.0.x失败版本的rmagick repo中的ImageMagick 6.9.6.8-r1。所以希望它很快就能解决。


53
投票

我在ImageMagick 7.0.4-4中遇到了同样的问题。正确的解决方法是安装imagemagick@6。我发现keg-only非常有用,如果你不小心删除了你的imagemagick@6或从未安装过它。


-1
投票

首先,如果安装了6.x,则无需卸载imagemagick,如下所示。你可以看到当前的“主要”是FROM alpine:3.5 RUN apk add imagemagick-dev=6.9.6.8-r1 --repository http://dl-3.alpinelinux.org/alpine/v3.5/main/ 仍在那里。

There is an open issue

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

第二,不要强制链接imagemagick,尤其不要6.编辑:见¹ 除了--with-opt- *标志之外,还需要设置PKG_CONFIG_PATH。

这适用于我在High Sierra上使用Ruby 1.9.3-p551上面提到的brew设置:

7.0.7-8

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

¹:建筑工程,但是RMagick正在搜索的dylib路径是错误的。提出6.9.1-10澄清是否可以修复。否则需要手动符号化libMagickWand等。尽管如此,手动链接特定库仍然比使用$ 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 更安全。



20
投票

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

imagemagick@6

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

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

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

brew unlink imagemagick

它会完美地运作。


16
投票

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

Mac OS X Sierra:

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

14
投票

像ImageMagick 7这样的路径有很多变化:gem install rmagick ,而brew uninstall imagemagick brew install imagemagick@6 brew link imagemagick@6 --force 目前在rmagic gem中是硬连线的。在我的情况下,由于项目相当陈旧,因此无法更新gem。所以我最终安装了旧版本的ImageMagic。

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

include/.../wand

您也可以将其固定以供日后使用:qazxsw poi


11
投票

ImageMagick 7.0.4-4为我改变了一些东西。再也找不到wand/MagickWand.h了:

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

我的系统上仍然有ImageMagick 6.9.7-3,并改回来了

brew pin imagemagick

之后我可以毫无困难地安装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.

5
投票
% 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

5
投票

我还没有声誉留下这个评论改进另一个答案,但@ Evgeniy28的答案仅在安装pkg-config之后才在Sierra上使用,而pkg-config默认安装在新的Sierra机器上。

所以:

rmagick

成功:

% gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.16.0
1 gem installed
© www.soinside.com 2019 - 2024. All rights reserved.