RMagick 安装: 找不到 MagickWand.h

更新 魔术师想象力是一个痛苦的经历。我已经在我的 Mac (MacOS El Capitan Version 10.11.5)上更新了 Imagemagick 版本,在 Ruby 2.3到 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 上运行: ——我用自制软件重新安装了 image magick 和 pkg-config,并尝试了各种版本的 RMagick,但都没有成功。2.16.0是目前 魔术师的最新版本。

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中,可以安装 RMagick for Ruby 2.0和 Ruby 2.3。Ruby1.8.7和 ImageMagick 6.9.5似乎不兼容。

  • Ruby 1.8.7 x
  • Ruby 2.0
  • Ruby 2.3
50950 次浏览
$ 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

我的系统出现了严重的问题,非常严重以至于完全搞砸了,但是在我安装之后,我终于能够再次安装 RMagick for Ruby 1.8.7了

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

对我来说,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 7.0.4-4也遇到过同样的问题。正确的修复方法是安装 imagemagick@6。我发现,如果你意外删除了你的 imagemagick@6或从来没有安装它摆在首位的 https://github.com/Homebrew/homebrew-core/pull/8756有用。

在 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

要解决 麦克 OSX 塞拉利昂,高塞拉利昂,埃尔卡皮坦,莫哈韦沙漠,卡塔利纳,大苏尔和蒙特雷(m1芯片)中的问题,您可以执行以下操作:

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

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

macOs Sierra:

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

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

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

我还没有把这个作为改进另一个答案的评论的名声,但是@Evgeny28的答案只有在安装了 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

首先,如果已经安装了6.x,就不需要卸载 image magick,如下所示。您可以看到当前的“ main”是 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。

第二,不要强行连接成像魔术,尤其不是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/

建立里面的文件失败了,但这些都是无关紧要的。

1: 建设工程,dylib 路径 RMagick 正在搜索是错误的,虽然。提高了 第278期,以澄清这是否可以修复。否则,需要手动地对 libMagickWand 等进行符号链接。不过,手动链接特定库可能仍然比使用 brew link --force更安全。

请按照下面的步骤,根据您的需要更换一些零件。

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 安装在 centos 中中完整地解释了安装过程。

总之..。
安装 ImageMagick & ImageMagick-devel & ImageMagick PHP 库后,如下所示:

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

转到[包括]

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”查找“ able _ function”并清除“ proc _ open,popen,proc _ close”,因为 make image ick 需要这些函数, 完成安装之后,您可以将这些函数添加到“ php.ini”文件中的“ able _ function”中。

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

祝你好运。

下面是我如何解决(经过大量的尝试和失败)在 MacOS High Sierra10.13.3与家酿:

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

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

首先 断开您安装的图像魔术,这是没有正确安装在最新的 Mac 高山脉使用。

brew unlink imagemagick

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

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

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

gem install rmagick

一切都会好起来的。

对于 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

然后你就可以继续你的魔术包了。

这个能解决我的问题:

MacOS X Sierra:

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

不需要链接或取消链接任何东西,遵循酿造安装脚本的说明可以帮助:

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

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

RMagick 依赖于一个过时版本的 image magick,版本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 的其他软件带来问题,你可以使用建议的 export让 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,那就去 帮助对升级工作做出贡献吧!

阿尔卑斯山3.9图像建立得到相同的错误。它来自 ImageMagick 7.0.8.38-r0

要解决这个问题,你可以使用阿尔卑斯3.5和 ImageMagick 6.9.6.8-r1:

FROM alpine:3.5

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

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

在 rmagick repo 中有一个关于 ImageMagick 7.0.x 失败构建的公开问题 。希望很快就能修好。

我正在为一个客户机开发一个遗留的 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

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