在 Centos 5 上安装 RMagick ruby​​gem 时出现问题

Posted

技术标签:

【中文标题】在 Centos 5 上安装 RMagick ruby​​gem 时出现问题【英文标题】:Problem installing RMagick rubygem on Centos 5 【发布时间】:2010-11-18 06:27:54 【问题描述】:

我在 Centos 5 上安装 RMagick ruby​​gem 时遇到问题。我已按照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 但我无法让 ruby​​gems 在那里查看。我尝试了以下但结果是一样的:

sudo gem install rmagick -- --with-opt-dir=/usr/local/bin

任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

我最近将 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 gem。 谢谢,找遍了整个地方,Rmagick 很棒,但是当你尝试在 centos 上安装它时会很痛苦 非常感谢,你太棒了。【参考方案2】:

所以我终于成功安装了 rmagick ruby​​gem 1.15.17 版!这是我所做的:

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

David Bock 和 Will 的博客条目非常宝贵。

【讨论】:

字体链接似乎不起作用,所以我按照go2linux.org/msttcorefonts-true-type-fonts-on-linux 的说明安装了字体。像魅力一样工作。 最后一步对我来说失败了,直到我添加了 ruby​​ 标头:sudo yum install ruby​​-devel 为我工作,谢谢 Keith & Beerlington。实际上我遇到了进一步的问题,在我的系统上已经安装了带有不同版本的 ImageMagick(没有开发,所以不能 gem inst rmagick)的 Zend Server CE。为了解决这个问题,我需要将 LD_LIBRARY_PATH 环境变量正确设置为 /usr/lib(而不是 ZSCE 位置)并将其传递给 apache。为了对乘客执行此操作,我将 apache 指令:“PassengerRuby /usr/bin/ruby”转换为“PassengerRuby /usr/bin/ruby_env”,并在此文件中填充:#!/bin/sh export LD_LIBRARY_PATH=/usr /lib: exec "/usr/local/bin/ruby" "$@" 仅供参考:在 Fedora 15 上,这个包被命名为 mscore-fonts。【参考方案3】:

answer from rubiojr 为我工作,但 rbel.co 目前已关闭。您可以改用 rbel.frameos.org:

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

【讨论】:

【参考方案4】:

rmagick 是出了名的难以安装,因为它依赖于其他包等。我刚刚在 Ubuntu 上玩过这个游戏,诀窍就是安装正确的包,包括开发包等。我不熟悉 CentOS但有人可能会为此提供合适的软件包。

如果一切都失败了,通常可以从源代码构建和安装 ImageMagick。

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

在某些平台 (CentOS 5.2) 上,我必须安装特定版本的 RMagick,因为我的包管理器 (yum) 的默认存储库只有旧版本的 RMagick 开发库。我通过以下方式安装了这个版本:

gem install rmagick -v 1.15.13

【讨论】:

我实际上已经尝试按照上面的建议安装旧版本,但它与安装的软件包不兼容。然后我从源代码配置、构建和安装 ImageMagick,首先按照rmagick.rubyforge.org/install2-linux.html 的建议安装了代表。然后我能够从源代码安装 RMagick,但由于我的 Rails 应用程序中的依赖关系,我需要将它安装为 RubyGem。我想知道的是如何强制 gem install 在 /usr/local/bin 中找到 Magick-config。 一个可能有效的肮脏技巧是将其符号链接到它确实看起来的某个地方。但是,根据我的经验,一旦您解决了 Magick-config 类型的问题,就会在其他地方出现另一个错误 - 我认为根本原因通常是没有一组兼容的软件包。在 ubuntu 上,我首先删除了所有与 ImageMagick 相关的软件包,然后通过谷歌搜索其他人所做的事情并反复试验,建立了一个似乎可以工作的套件。和你一样,出于同样的原因,我必须把它当作宝石。由于整个服务器构建是自动化的,因此还必须让 imagemagick 来自包。 感谢您的回复,弗兰克。您的 cmets 鼓励我回到导致我基于软件包成功安装 1.15.17 的道路上。【参考方案5】:

按照投票最多的答案中的说明进行操作后,仍然出现此错误:

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

如果您的字体文件让 rmagick 不满意,禁用 html 文档对于避免进一步的错误至关重要。只是解决这个问题大约 2 小时的结果。

【讨论】:

【参考方案6】:

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 碧玉开发 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

【讨论】:

【参考方案7】:

我在RHEL 5.4 中通过将/usr/local/bin/Magick-config 临时符号链接到/usr/bin/Magick-conf 解决了这个问题,因此gem 安装可以找到这个Magick-config 可执行文件。

就我而言,我使用--prefix=/usr/local 从源代码安装了ImageMagick。出于某种原因,gem install 不想在那里寻找配置,即使是gem install --local ../rmagick-2.12.2.gem -- -with-opt-dir=/usr/local/bin。运行 yum install ImageMagick-devel 会在那里得到二进制文件,但是 gem install 会说 ImageMagick 是错误的版本。

【讨论】:

以上是关于在 Centos 5 上安装 RMagick ruby​​gem 时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 10 上安装 rmagick

在 Mountain Lion 上安装 Rmagick 时出错

错误:在 Redhat 7 上安装 rmagick 时出错

在Ubuntu上安装rmagick

在Ubuntu上安装rmagick

在ubuntu/debian上安装rmagick依赖项