Rails: 安装rmagick出错 - ERROR: 无法构建本地扩展宝石

65

我正在尝试在我的本地机器上运行一个项目。我已经在我的Mac OS系统上安装了Ruby和Rails。它正常工作。我可以创建一个新的项目并且可以正常运行,没有任何错误,但是当我尝试运行现有的项目时,它说我们必须执行bundle install命令。当我运行该命令时,我会得到以下错误:

"An error occurred while installing rmagick (2.13.2), and Bundler cannot continue.
Make sure that `gem install rmagick -v '2.13.2'` succeeds before bundling."

当我运行命令 gem install rmagick -v '2.13.2' 时,它会返回以下错误信息:
ERROR:  Error installing rmagick:
ERROR: Failed to build gem native extension.

/usr/local/rvm/rubies/ruby-1.9.3-p392/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 /usr/local/rvm/gems/ruby-1.9.3-p392/bin:/usr/local/rvm/gems/ruby-1.9.3-p392@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p392/bin:/usr/local/rvm/gems/ruby-1.9.3-p392/bin:/usr/local/rvm/gems/ruby-1.9.3-p392@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p392/bin:/usr/local/rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/sm/bin:/opt/sm/pkg/active/bin:/opt/sm/pkg/active/sbin

*** 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=/usr/local/rvm/rubies/ruby-1.9.3-p392/bin/ruby


Gem files will remain installed in /usr/local/rvm/gems/ruby-1.9.3-p392/gems/rmagick-2.13.2 for inspection.
Results logged to /usr/local/rvm/gems/ruby-1.9.3-p392/gems/rmagick-2.13.2/ext/RMagick/gem_make.out

我已经搜索了,但没有在任何地方找到答案。


2
你需要按照这个答案的说明安装rmagick的开发库。 - Jack Bracken
20个回答

89

对于Ubuntu,我根据这个链接使用了以下方法:

$ sudo apt-get install libmagick++-dev

4
在安装了这个库之后仍然存在错误。 - Pavel Kalashnikov
1
以下软件包存在未满足的依赖关系: libmagick++-dev:依赖于libmagick++-6.q16-dev,但它将不会被安装。 - Unkas

51

在 Mac 上(以下代码适用于 OSX Mavericks):

brew install imagemagick
gem install rmagick

这对我非常有效,下面的@Anand Soni解释了为什么你首先会出现错误。 - AndyBean
对我起作用了。OSX El Capitan 10.11.5。 - Jagdeep Singh

45

在Mac上,您可以尝试这样做:

$ brew unlink imagemagick
$ brew install imagemagick@6 && brew link imagemagick@6 --force
$ gem install rmagick 

4
对我来说这是正确的答案。我的 rmagick 安装与 imagemagick@7.x 不兼容,如果你只是输入 brew install imagemagickbrew 默认会安装 imagemagick@7.x - Drew
我不知道为什么这个答案没有足够的赞。这是非常正确的。+1 - Harshit
这是你修复catpix安装的唯一方法! - orkenstein

13

我通过安装imagemagic解决了这个问题:

sudo apt-get install imagemagick

然后安装libmagick软件包:

sudo apt-get install libmagick++-dev

9
对于Linux Fedora,我遇到了同样的错误,并用以下两个命令进行了修复:
yum install ImageMagick

gem install rmagick 

为Centos安装ImageMagick-devel包。使用以下命令:

yum install ImageMagick-devel

gem install rmagick

7
首先,请确保您已安装了 Imagemagick
$ sudo apt-get install imagemagick

现在,它可以构建gem本地扩展。

然后,安装Rmagick gem:

$ sudo gem install rmagick

1
在新安装的Ubuntu 17.04上,仅仅安装imagemagick是不够的。我还需要安装libmagick++-dev,就像@Sirajus Salayhin的评论所说的那样。 - mez.pahlan

6

以下是我在16.04上所做的事情:

sudo apt-get install libmagickwand-dev
sudo apt-get install graphicsmagick-imagemagick-compat

然后像这样安装 gem。
PATH="/usr/lib/x86_64-linux-gnu/ImageMagick-6.8.9/bin-Q16:$PATH" gem install rmagick -v '2.13.2'

1
完美!在尝试多种解决方案后,这个方法适用于我的Ubuntu 18.04。 - Nimesh Nikum

3
可能您正在安装ImageMagick 7.x.x版本,它会在您的usr/lib/local/include/ImageMagick7.x.x文件夹中生成不同的文件夹名称。例如:

在ImageMagick6.x.x版本中,我们有名为magickwand的文件夹,在ImageMagick7.x.x版本中则将其命名为MagickCoreMagickWand。因此,这个更新可能会导致某些Gem安装出现问题,例如在这里使用了magick/some_header.hwand/some_header.h(意味着它们未与新的7.x.x ImageMagick版本更新)。这就是为什么我们会得到这个错误:

```

checking for outdated ImageMagick version (<= 6.4.9)... no
checking for presence of MagickWand API (ImageMagick version >= 6.9.0)... no
 .... 
checking for wand/MagickWand.h... no

并且在日志文件中会有类似以下的内容:

error: 'MagickCore/method-attribute.h' file not found
#include "MagickCore/method-attribute.h"
         ^

解决方法

从官网https://www.imagemagick.org/download/下载并安装您系统所需的ImageMagick6.x.x版本,然后使用以下命令进行安装(在解压缩zip / tar文件之后):

./configure
make 
make install

然后执行

gem install rmagick

它会生效。


2

当我在Ubuntu 20.04中设置一个Rails 6应用程序时,我遇到了同样的问题。

以下是我解决问题的方法:

RMagickRuby编程语言和ImageMagick图像处理库之间的接口。因此,我们首先需要安装ImageMagick的开发库:

步骤1:

Ubuntu上,您可以运行以下命令:

sudo apt-get install libmagickwand-dev

在Centos上,您可以运行以下命令:
sudo yum install gcc ImageMagick-devel make which

在 Arch Linux 上,你可以运行以下命令:
pacman -Syy pkg-config imagemagick

在 Alpine Linux 上,您可以运行以下命令:
apk add pkgconfig imagemagick imagemagick-dev imagemagick-libs

或者,如果您想要使用ImageMagick 6,您也可以运行它。
apk add pkgconfig imagemagick6 imagemagick6-dev imagemagick6-libs

在 macOS 上,你可以运行:
brew install pkg-config imagemagick

或者,如果您想使用ImageMagick 6,也可以运行。
brew install pkg-config imagemagick@6

在 Windows 上:
  1. 安装最新的 Ruby+Devkit 包,可以从 RubyInstaller for Windows 获取。
  2. 您可能需要配置 PATH 环境变量到编译器所在的位置。 (例如:set PATH=C:\Ruby27-x64\msys64\usr\bin;C:\Ruby27-x64\msys64\mingw64\bin;%PATH%)
  3. Windows Binary Release 下载 ImageMagick-7.XXXX-Q16-x64-dll.exe(不是 ImageMagick-7.XXXX-Q16-x64-static.exe)二进制文件,或者您可以从 Windows Binary Release 下载 ImageMagick 6。
  4. 安装 ImageMagick。您需要在 RMagick 的安装程序中打开复选框 将应用程序目录添加到系统路径为 C 和 C++ 安装开发头文件和库
步骤2:
安装RMagick Ruby宝石:
gem install rmagick

步骤3:
现在您可以将RMagick Ruby gem添加到您的Gemfile中:
gem 'rmagick', '~> 4.1'

注意:截至本文撰写时,最新版本为4.1。
第四步:
最后,您可以运行“bundle install”将gem安装到您的应用程序中。
资源:rmagick/rmagick GitHub页面
就这些了。
希望这有所帮助。

2

根据错误日志,看起来缺少"Magick-config"。 您需要安装ImageMagik或GraphicsMagick。下面是您应该遵循的命令,这些命令取自RMagik文档

1) Go to http://www.imagemagick.org or http://www.graphicsmagick.org and download the latest version of the software to a temporary directory. the extract them :

- tar xvzf ImageMagick.tar.gz
- cd ImageMagick-x.x.x

- ./configure --disable-static --with-modules --without-perl --without-magick-plus-plus --with-quantum-depth=8

- make
- sudo make install

- sudo gem install rmagick

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