红宝石 gem rmagick 在 Mac OS X 上无法安装

14

我知道这个问题之前已经被问过很多次,但是没有一个解决方案适用于我,现在我真的很绝望。

我正在尝试使用gem安装rMagick,以便安装diaspora。我已经通过homebrew安装了imagick,但是当我尝试运行gem install rmagick时,我收到以下错误:

ERROR:  Error installing rmagick:
    ERROR: Failed to build gem native extension.

        /Users/tobischweiger/.rvm/rubies/ruby-1.9.3-p385/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc-4.2... yes
checking for Magick-config... no
Can't install RMagick 2.13.2. Can't find Magick-config in /Users/tobischweiger/.rvm/gems/ruby-1.9.3-p385@diaspora/bin:/Users/tobischweiger/.rvm/gems/ruby-1.9.3-p385@global/bin:/Users/tobischweiger/.rvm/rubies/ruby-1.9.3-p385/bin:/Users/tobischweiger/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin

*** 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/tobischweiger/.rvm/rubies/ruby-1.9.3-p385/bin/ruby


Gem files will remain installed in /Users/tobischweiger/.rvm/gems/ruby-1.9.3-p385@diaspora/gems/rmagick-2.13.2 for inspection.
Results logged to /Users/tobischweiger/.rvm/gems/ruby-1.9.3-p385@diaspora/gems/rmagick-2.13.2/ext/RMagick/gem_make.out

我对gem和homebrew不是很熟悉,想请教一下有经验的人。


请在回答中包含您的OS X版本,因为这可能会影响答案。我的答案假定是Mountain Lion(10.8)。 - Marcelo De Polli
对不起,请问,我正在运行10.8.2版本。 - knurb
10个回答

23

在尝试安装 gem 之前,运行这个命令(使用 homebrew)。

brew install imagemagick

谢谢你的回答。就像我在原帖中所说的,我已经尝试过了。结果还是一样的。如果有帮助的话,我再试了一次,这是从brew install得到的消息:==> 正在下载http://downloads.sf.net/project/machomebrew/mirror/ImageMagick-6 已下载:/Library/Caches/Homebrew/imagemagick-6.7.7-6.tar.bz2 ==> 打补丁 正在打补丁文件configure Hunk#1成功于32371(偏移447行)。 ==> ./configure --disable-osx-universal-binary --without-perl --prefix=/usr/loca ==> make install 错误:空安装 - knurb
我可以毫无问题地运行这些命令,尝试运行gem insatll rmagick,但仍然出现相同的错误。 - knurb
问题是,你真的需要安装ImageMagick作为一个依赖项,没有其他办法。而Homebrew是最简单的方法。你试过在运行brew update之后安装它吗?如果你运行brew list,你能看到ImageMagick吗? - Marcelo De Polli

16

这是使用Homebrew的较不破坏性的版本,rmagic也不支持ImageMagick版本7

需要ImageMagick版本6.4.9或更高版本(6.×.x)。暂时不支持版本7;预计于2019年4月发布支持(https://github.com/rmagick/rmagick/pull/299

(来自自述文件)

您可以从www.imagemagick.org获取ImageMagick, 因此使用brew尝试以下内容:

brew install imagemagick@6
PKG_CONFIG_PATH=/usr/local/opt/imagemagick@6/lib/pkgconfig gem install rmagick

4
在Mavericks上,您可以这样做:
brew install pkgconfig
brew uninstall imagemagick
brew install imagemagick
brew link imagemagick
bundle install

够了,我觉得。


4

我正在使用OS X Lion操作系统。

我运行了brew doctor命令,发现imagemagick没有链接,所以它告诉我要运行brew link imagemagick

然后我关闭并重新打开了终端,一切都幸运地正常工作了。


太棒了!解决了我的问题!我和rmagick/imagemagick有一种爱恨交加的关系。安装起来很麻烦,但使用起来非常好。 - Automatico

3

我有类似的问题,这个对我起作用:

$ cd /usr/local/Cellar/imagemagick/6.8.0-10/lib
$ ln -s libMagick++-Q16.7.dylib   libMagick++.dylib
$ ln -s libMagickCore-Q16.7.dylib libMagickCore.dylib
$ ln -s libMagickWand-Q16.7.dylib libMagickWand.dylib

希望这能有所帮助。
来源:https://coderwall.com/p/wnomjg

这对我有用,因为我从这篇文章中得到了不同的错误堆栈,只检查InitializeMagick()失败了。 - Xiaohui Zhang

3

确保在进行以下操作时:

$ cd /usr/local/Cellar/imagemagick/6.8.0-10/lib
$ ln -s libMagick++-Q16.7.dylib   libMagick++.dylib
$ ln -s libMagickCore-Q16.7.dylib libMagickCore.dylib
$ ln -s libMagickWand-Q16.7.dylib libMagickWand.dylib

请将文件名更改为反映您的版本:您可以通过查看此处的lib文件夹中的文件名来查看:cd /usr/local/Cellar/imagemagick/VERSION/lib

例如:

ln -s libMagickWand-6.Q16.1.dylib libMagickWand.dylib

等等


2

在安装RMagick时需要检查不同的场景。请检查以下内容并确认:

  1. Check if you are not installing latest version of RMagick with older version of ruby. i.e. ruby 1.8.7 or so. You can not install latest version of RMagick with older version of Ruby. If so, you will probably get this error message.

    Building native extensions.  This could take a while...
    ERROR:  Error installing rmagick:
    ERROR: Failed to build gem native extension.
    
      /Users/user/.rbenv/versions/1.8.7-p375/bin/ruby extconf.rb
    
  2. Make sure you have installed imagemagick before you install RMagick.

    brew install imagemagick
    
  3. Also make sure you are installing RMagick with compatible version of imagemagick. RMagick is not compatible with latest version of imagemagick.

更进一步:如果你只需要调整大小、锐化、变换现有图像,那么你可以使用MiniMagick而不是RMagick。当我们需要创建图像、图表、绘画和排版时,就需要使用RMagick。MiniMagick比RMagick更易于使用,并且对系统资源的占用更轻。RMagick消耗大量内存。


1

0

对我而言,我得看一下输出,而在你的情况下是

/Users/tobischweiger/.rvm/gems/ruby-1.9.3-p385@diaspora/gems/rmagick-2.13.2/ext/RMagick

在那里有一个名为mkmf.log的文件,其中列出了它正在尝试编译和错误的确切内容。对我来说,链接器在执行此命令时失败:

ld: library not found for -lMagickCore

回顾它正在运行的命令,除了最后一部分之外,它看起来很好,见下面的片段:

-lMagickCore-6.Q16 -lMagickCore-6.Q16 -lruby-static -framework CoreFoundation -lMagickCore -lpthread -ldl -lobjc -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/lib/darwin/libclang_rt.osx.a

请注意,它从Magick-config获取输出并通过添加-lMagickCore-6.Q16来使用这些内容,但仍然尝试链接-lMagickCore。我认为这是extconf正在使用的have_library的副产品。对我来说,重要的是Homebrew没有提供libMagickCore.dylib库。可能是旧版本的rubygems,我认为正确的修复方法是更新have_library函数,但我通过创建一个名为libMagickCore.dylib的符号链接来解决了这个问题,该符号链接指向libMagickCore-6.Q16.dylib

0
我发现将我的Xcode更新到最新版本(4.6.1)的OSX 1.8.2上解决了这个问题,我成功安装了rmagick-2.13.2。

这就是让我出问题的原因。 - Forrest Wilkins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接