180

更新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

现在 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-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

即使我在 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
  • 红宝石 2.0.0 ✓
  • 红宝石 2.3.1 ✓
4

21 回答 21

501

要解决Mac OSX Sierra、High Sierra、El Capitan、Mojave、Catalina、Big Sur 和 Monterey(M1 芯片)中的问题,您可以执行以下操作:

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

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

于 2017-03-26T23:38:47.573 回答
56

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

于 2017-01-16T14:35:03.587 回答
33

macOS 塞拉利昂:

brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force
于 2017-06-19T14:03:34.800 回答
22

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

brew unlink imagemagick

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

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

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

gem install rmagick 

它会工作得很好。

于 2018-05-12T11:49:22.970 回答
17

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

MacOS X 塞拉利昂:

brew uninstall imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force
于 2018-07-10T02:17:20.113 回答
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

于 2017-01-16T15:52:41.053 回答
12

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
于 2017-01-16T10:34:14.410 回答
8

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"

您可以使用建议的 s 让 RMagick gem 在构建时选择旧版本,而不是强制链接,这可能会导致其他支持较新版本 imagemagick 的软件出现问题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

  1. 如果您了解 Ruby 和 C,请帮助为升级工作做出贡献
于 2019-03-02T18:13:56.420 回答
7

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

于 2018-12-06T01:13:09.427 回答
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
于 2016-09-14T16:01:32.190 回答
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
于 2017-10-08T18:01:18.277 回答
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'
于 2017-11-30T12:10:23.843 回答
4

使用 7.0.7-1 您可以创建符号链接,但稍后编译会失败。

cd /usr/local/Cellar/imagemagick/7.0.7-1/include/ImageMagick-7
ln -s MagickWand/ wand
ln -s MagickCore/ magick
于 2017-09-14T02:20:15.507 回答
3

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

  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

于 2018-03-09T13:22:31.547 回答
3

无需链接或取消链接任何内容,按照 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
于 2018-09-25T08:00:35.727 回答
1

alpine 3.9 映像构建出现相同的错误。它带有ImageMagick 7.0.8.38-r0

要解决这个问题,您可以使用 alpine 3.5 和ImageMagick 6.9.6.8-r1

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 repo 中有一个关于 ImageMagick 7.0.x 构建失败的未解决问题。所以希望它会很快得到修复。

于 2019-05-15T15:29:57.333 回答
0

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

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

于 2016-10-18T12:46:19.963 回答
0

首先,如果安装了 6.x,则不需要卸载 imagemagick,如下所示。您可以看到当前的“主要”是7.0.7-86.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.编辑:请参阅 1
除了 --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 路径是错误的。提出问题 #278以澄清这是否可以修复。否则需要手动链接 libMagickWand 等。手动链接特定库可能仍然比brew link --force虽然更安全。

于 2017-10-27T01:21:15.847 回答
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”,因为make imagick需要这些功能,完成安装后您可以将此功能添加到您的“ “php.ini”文件上的 disable_functions”。

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

祝你好运...

于 2018-01-02T10:29:24.150 回答
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 打包器。

于 2018-06-26T12:53:42.713 回答
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

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

于 2021-07-02T15:52:57.920 回答