在Centos 5上安装RMagick rubygem出现问题

17

我在Centos 5上安装RMagick rubygem时遇到了问题。我按照http://rmagick.rubyforge.org/install2-linux.html中详细的步骤进行操作,但当我尝试运行以下命令时:

sudo gem install rmagick

结果是:

Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
    ERROR: Failed to build gem native extension.

/usr/local/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... no
Can't install RMagick 2.11.0. Can't find Magick-config in /usr/bin:/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=/usr/local/bin/ruby


Gem files will remain installed in /usr/local/lib/ruby/gems/1.8/gems/rmagick-2.11.0 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.8/gems/rmagick-2.11.0/ext/RMagick/gem_make.out

目录 /usr/local/bin 包含 Magick-config,但我无法让 rubygems 查找到它。我尝试了下面的方法,但结果一样:
sudo gem install rmagick -- --with-opt-dir=/usr/local/bin

非常感谢您的帮助和建议。

7个回答

42

我最近将ImageMagick 6.5.4.7从CentOS6回溯到CentOS5,所以现在安装rmagick应该更容易了:

rpm -Uvh http://rbel.co/rbel5
yum install ImageMagick-devel ImageMagick-c++-devel
gem install rmagick

太棒了,非常感谢!我成功升级了imagemagick并安装了rmagick宝石。 - Alan David Garcia
谢谢,我到处都找了一遍,Rmagick很棒,但在尝试在CentOS上安装它时会很麻烦。 - Rami GB
非常感谢,你很棒。 - Samuel Chandra

26

所以我终于成功安装了rmagick rubygem的1.15.17版本!以下是我的操作步骤:

  1. 卸载我之前从源码安装的ImageMagick 6.5.4-9和代理库
  2. sudo yum install ImageMagick
  3. sudo yum install ImageMagick-devel
  4. curl -O http://www.zacharywhitley.com/linux/rpms/fedora/core/6/i386/msttcorefonts-2.0-1.noarch.rpm
  5. sudo rpm -ivh msttcorefonts-2.0-1.noarch.rpm
  6. ln -s /usr/share/fonts/msttcorefonts/ /usr/share/fonts/default/TrueType
  7. sudo gem install rmagick -v 1.15.17 --no-rdoc --no-ri

David BockWill的博客文章对我帮助很大。


1
字体链接似乎无法使用,所以我按照http://www.go2linux.org/msttcorefonts-true-type-fonts-on-linux上的说明安装了字体。效果非常好。 - Peter Brown
最后一步失败了,直到我添加了Ruby头文件:sudo yum install ruby-devel。 - mveerman
对我有用,谢谢Keith和Beerlington。实际上,我遇到了进一步的问题,因为我已经在我的系统上安装了Zend Server CE的不同版本的ImageMagick(没有devel,所以无法gem inst rmagick)。为了解决这个问题,我需要正确设置LD_LIBRARY_PATH环境变量为/usr/lib(而不是ZSCE位置),并将其传递给apache。为了使用passenger完成这个操作,我将我的apache指令:“PassengerRuby /usr/bin/ruby”转换为“PassengerRuby /usr/bin/ruby_env”,并填写了这个文件:#!/bin/sh export LD_LIBRARY_PATH=/usr/lib: exec "/usr/local/bin/ruby" "$@" - maraspin
FYI:在 Fedora 15 上,此软件包的名称为 mscore-fonts。 - Peter Carrero

9

rubiojr的答案对我有用,但rbel.co目前无法使用。您可以改用rbel.frameos.org:

rpm -Uvh http://rbel.frameos.org/rbel5
yum install ImageMagick-devel ImageMagick-c++-devel
gem install rmagick

3

Rmagick因为依赖于其他软件包等原因而安装困难。我刚在Ubuntu上经历了这个过程,诀窍就是安装正确的软件包,包括开发包等。我不熟悉CentOS,但是可能有人会提供适用于它的正确软件包。

如果一切都失败了,通常可以通过构建和安装ImageMagick来解决问题。

编辑:查看相关问题后,我看到以下内容:

在某些平台(例如CentOS 5.2),我不得不安装特定版本的RMagick,因为我的软件包管理器(yum)的默认存储库只有旧版本的RMagick devel库。我通过以下方式安装了此版本:

gem install rmagick -v 1.15.13

我实际上尝试安装旧版本,如上所建议,但它与已安装的软件包不兼容。然后,我按照http://rmagick.rubyforge.org/install2-linux.html的建议配置、构建和安装了ImageMagick源代码。我随后能够从源代码安装RMagick,但由于我的Rails应用程序中的依赖关系,我需要将其安装为RubyGem。我想知道的是如何强制gem install在/usr/local/bin中查找Magick-config。 - Keith Pitty
一个可能有效的肮脏解决方法是将其符号链接到某个看起来合适的地方。然而,根据我的经验,一旦你解决了Magick-config类型的问题,就会出现另一个错误 - 我认为根本原因通常是没有一组兼容的软件包。在Ubuntu上,我首先删除了与ImageMagick相关的所有软件包,然后通过搜索其他人所做的和试错来构建一个似乎可行的软件包集。像你一样,我必须将其作为gem使用,出于同样的原因。由于整个服务器构建都是自动化的,还必须从软件包中获取imagemagick。 - frankodwyer
感谢您的回复,弗兰克。您的评论鼓励我重新走上了这条路,并成功地安装了基于软件包的1.15.17版本。 - Keith Pitty

1

Centos 5.5的ImageMagick已经过时,因此需要从源代码安装才能使用rmagick。

获取源代码RPM包

wget ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/linux/SRPMS/ImageMagick.src.rpm
rpm -ivh --nomd5 ImageMagick.src.rpm
cd /usr/src/redhat/SPECS
rpmbuild -ba ImageMagick.spec

你可能会遇到以下依赖错误:

  • perl-devel
  • jasper-devel
  • djvulibre-devel

请将它们添加到你的 /etc/yum.repos.d/dag.repo 文件中。

[dag]
name=Dag RPM Repository for CentOS5
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el5/en/$basearch/dag/
enabled=0
gpgcheck=1

然后导入GPG密钥并安装djvulibre-devel

rpm --import http://ftp.riken.jp/Linux/dag/RPM-GPG-KEY.dag.txt
yum --enablerepo=dag install djvulibre-devel

然后检查你是否可以制作 RPM 包:

rpmbuild -ba ImageMagick.spec

如果您遇到perl-devel依赖错误。
yum install perl

然后编辑ImageMagick.spec文件,将"perl-devel"替换为"perl",保存并再次进行rpmbuild。

rpmbuild -ba ImageMagick.spec

因此,请安装其他依赖项:

yum install freetype
yum install gd-devel
wget http://www.osresources.com/files/centos-windows-fonts/msfonts.tbz
mkdir /usr/share/fonts/default/TrueType
tar xvjpf msfonts.tbz -C /usr/share/fonts/default/TrueType/

让我们安装它:

cd /usr/src/redhat/RPMS/i386
rpm -Uvh ImageMagick-*

最后,您可以测试RMagick是否已安装:

ruby -rrubygems -e "require 'RMagick'; puts Magick::Long_version;"

基于:

hi.baidu.com/rainchen/blog/item/089ef7364497de320a55a9a3.html

mobile-dev.izanagi-izanami.net/blog/?p=48


1

按照得票最高的答案的指示后,我仍然不断收到这个错误:

RMagick: unable to read font `(null)'.

所以我有一些要补充到第7步的内容,这是从David Bock博客的更新中得来的:

http://blog.codesherpas.com/on_the_path/2009/09/installing-centos-5-imagemagick-and-rmagick-september-2009-edition.html

gem install rmagick -v 1.15.17 --no-rdoc --no-ri -- --disable-htmldoc

禁用HTML文档对于避免字体文件导致Rmagick出现错误至关重要。这是我花费大约2个小时努力解决此问题的结果。


0

我在RHEL 5.4中解决了这个问题,通过将/usr/local/bin/Magick-config暂时链接到/usr/bin/Magick-conf,以便gem install可以找到这个Magick-config可执行文件。

在我的情况下,我使用--prefix=/usr/local从源代码安装了ImageMagick。由于某种原因,即使是gem install --local ../ rmagick-2.12.2.gem --with-opt-dir=/usr/local/bin, gem install也不想在那里查找配置信息。运行yum install ImageMagick-devel会将二进制文件放在那里,但是gem install会说ImageMagick版本错误。


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