安装ImageMagick和rmagick在Mountain Lion上出现问题

11

我在Mountain Lion上安装rmagick时遇到了问题。我已经安装了Xcode 4.4和开发者工具,但仍然遇到了这个问题。

    Installing rmagick (2.13.1) with native extensions Unfortunately, a fatal error has occurred. Please report this error to the Bundler issue tracker at https://github.com/carlhuda/bundler/issues so that we can fix it. Thanks!
    /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:552:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

            /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/bin/ruby extconf.rb 
    checking for Ruby version >= 1.8.5... yes
    extconf.rb:128: Use RbConfig instead of obsolete and deprecated Config.
    checking for clang... yes
    checking for Magick-config... yes
    checking for ImageMagick version >= 6.4.9... yes
    checking for HDRI disabled version of ImageMagick... yes
    checking for stdint.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
        --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/mohit/.rvm/rubies/ruby-1.9.3-p125/bin/ruby
    /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
    You have to install development tools first.
        from /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:506:in `try_cpp'
        from /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:931:in `block in have_header'
        from /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
        from /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
        from /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:254:in `open'
        from /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'
        from /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:254:in `open'
        from /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'
        from /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'
        from /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/mkmf.rb:930:in `have_header'
        from extconf.rb:193:in `<main>'


    Gem files will remain installed in /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/rmagick-2.13.1 for inspection.
    Results logged to /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/rmagick-2.13.1/ext/RMagick/gem_make.out
        from /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:530:in `block in build_extensions'
        from /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:505:in `each'
        from /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:505:in `build_extensions'
        from /Users/mohit/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:180:in `install'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/source.rb:90:in `block in install'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/rubygems_integration.rb:82:in `preserve_paths'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/source.rb:89:in `install'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/installer.rb:73:in `block in install_gem_from_spec'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/rubygems_integration.rb:97:in `with_build_args'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/installer.rb:72:in `install_gem_from_spec'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/installer.rb:56:in `block in run'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/installer.rb:55:in `run'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/installer.rb:12:in `install'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/cli.rb:220:in `install'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/vendor/thor/task.rb:22:in `run'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/vendor/thor.rb:263:in `dispatch'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/vendor/thor/base.rb:386:in `start'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/bin/bundle:13:in `<top (required)>'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/bin/bundle:19:in `load'
        from /Users/mohit/.rvm/gems/ruby-1.9.3-p125/bin/bundle:19:in `<main>'
11个回答

20

今天早上我刚刚升级到Mountain Lion,然后就遇到了rmagick的问题。我过去曾经通过homebrew安装过ImageMagick,所以在安装完新的Xcode命令行工具之后就可以解决问题了。

brew update
brew uninstall ImageMagick
brew install ImageMagick
gem uninstall rmagick
gem install rmagick

与上面一些帖子提到的那样,我不需要使用gcc进行复杂操作。


14

我最终使用以下方法解决了这个问题:

$ 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


13

我曾经遇到过一个类似的问题,使用另一个 gem(hpricot),这个方法解决了它! - Eric Skiff

3
在将我的mac pro升级到Mountain Lion之后,我的ruby环境开始连续出现不同的错误。经过1-2小时的试错和搜索,以下是我如何修复我的ruby on rails环境的方法。
首先,我遇到了ruby env错误。当我运行foreman start时,它无法检测到git命令,并且Bundler会报错。 步骤1: 更新XCode。获取最新的Xcode 4.6。Mountain Lion在安装前没有安装ruby头文件,因此您需要从XCode手动安装。转到Xcode偏好设置/下载。 安装命令行工具 步骤2: 安装XQuartz 注销并重新登录。(您可能不需要这样做,因为imagemagick公式已更新) 步骤3: 现在,你的ruby env会开始出现Imagemagick错误。请执行以下操作: brew update brew uninstall imagemagick brew install --fresh imagemagick gem uninstall rmagick 2.13.2 gem install rmagick 尝试最后一个命令后,现在会给您提供本机扩展错误,如下所示。
Installing rmagick (2.13.1) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/priyanka/.rvm/rubies/ruby-1.9.2-p180/bin/ruby extconf.rb 
checking for Ruby version >= 1.8.5... yes
checking for /usr/bin/gcc-4.2... no
No C compiler found in ${ENV['PATH']}. See mkmf.log for details.
*** 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/priyanka/.rvm/rubies/ruby-1.9.2-p180/bin/ruby


Gem files will remain installed in /Users/priyanka/.rvm/gems/ruby-1.9.2-p180/gems/rmagick-      2.13.1 for inspection.
Results logged to /Users/priyanka/.rvm/gems/ruby-1.9.2-p180/gems/rmagick-2.13.1/ext/RMagick/gem_make.out
An error occured while installing rmagick (2.13.1), and Bundler cannot continue.
Make sure that `gem install rmagick -v '2.13.1'` succeeds before bundling.

步骤4: sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

这样就可以解决升级后Mountain Lion带来的所有问题。

只需运行bundle即可。


1

我遇到了类似的问题,但是在El Captain上。更好的解释在这里。 安装Xcode命令行工具后问题得以解决:

xcode-select --install

1

这里是我经过多次尝试后成功使用RMagick的简要概述。我认为以下方法是最好的,可以避免下载源代码并进行编译的痛苦 - 将其留给专家。

  • 需要安装Xcode和命令行工具以使用gcc/g++等。命令行工具不会自动安装,打开 Preferences 并安装。
  • 接下来安装 Macport
  • 同时也要安装 Homebrew
  • 确保安装了X11服务器 - 如果没有,请安装 - sudo port install -v xorg-server。我使用-v选项,因为它需要长时间安装,您可能会想知道它是否在执行操作或卡住了。
  • 安装pkgconfig - sudo brew install pkgconfig
  • 现在是时候安装ImageMagick了 - sudo port install -v ImageMagick
    不要使用brew安装ImageMagick - 它不能正确安装所有依赖项和委托。
  • 安装ImageMagick后 - 设置DISPLAY环境变量 - export DISPLAY=:0.0 - 更好的方法是将其放入您的.profile文件中。
  • 现在测试您的ImageMagick安装
  • 启动X11服务器(在安装X11服务器后,它将出现在您的应用程序列表中)
  • 从命令行运行 - $convert logo: logo.gif; identify logo.gif; display logo.gif - 它应该弹出一个显示logo.gif的窗口。
  • 还要从命令行运行一个命令 - $convert -list configure | grep -i delegates。它应该输出以下内容:
    DELEGATES bzlib fftw fontconfig freetype gs jpeg jng lcms2 lzma png tiff x11 xml zlib

  • 现在您应该可以运行sudo gem install RMagick

安装成功后,检查 RMagick 的安装位置,进入 examples 目录并运行其中的一些程序。

1

尝试更改您的路径,使得在/usr/bin之前插入/usr/local/bin。我发现这是通过运行brew doctor并允许我完成编译imagemagick。


1
没有任何解决方案适用于我,最终我运行了brew doctor,发现我需要使用brew link --overwrite imagemagick来链接imagemagick。

0

0

我发现对我来说解决方案是上面列出的步骤的组合,包括http://tektastic.com/2012/07/getting-rmagic-and-friends-to-work-on.html和这里http://robots.thoughtbot.com/post/27985816073/the-hitchhikers-guide-to-riding-a-mountain-lion,虽然我不必在任何一篇文章中执行所有列出的步骤。但我确实需要安装XCode的命令行工具,我在前几次尝试中错过了这个细节。我还需要使用homebrew安装gcc-4.2,并在我的bin目录中创建一个符号链接到该安装。

我可能对不同编译器正在发生的事情感到困惑,但是我会谨慎地将 /usr/bin/gcc 符号链接到 /usr/bin/gcc-4.2(这可能反过来又是通过 homebrew 安装的 gcc-4.2 的链接)。 在意识到我需要安装命令行工具之前,我曾尝试创建该符号链接,然后开始看到其他 gem 构建失败。 安装命令行工具解决了这些问题 - 我相信 Xcode 命令行工具将其链接为 llvm-gcc-4.2。


我还不得不卸载ImageMagick并使用Brew重新安装它。看起来解决了问题。 - Joshua Pinter

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