「Linux」カテゴリーアーカイブ

CentOSにImageMagickをソースからインストール → RMagickをインストール

ImageMagickが依存しているライブラリをyumでインストール。

$ sudo yum install bzip2-devel lcms-devel libjpeg-devel libX11-devel libXt-devel libtiff-devel ghostscript-devel libXext-devel libpng-devel

ImageMagickのダウンロードサイトからソースを取得して、ビルドとインストールを行う。

$ wget ftp://ftp.../ImageMagick.tar.gz
$ tar xzvf ImageMagick.tar.gz
$ cd ImageMagick-6.6.7-10/
$ ./configure && make
$ sudo make install

インストールを確認

$ which Magick-config
/usr/local/bin/Magick-config
$ Magick-config --version
6.6.7 Q16

RMagickをインストール

$ 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.13.1. 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.13.1 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.8/gems/rmagick-2.13.1/ext/RMagick/gem_make.out

のように
Can't install RMagick 2.13.1. Can't find Magick-config in /usr/bin:/bin
というエラーになる場合は、sudoした時に/usr/local/binにPATHが通っていない(環境変数が引き継がれていない)ので、PATHが引き継がれるよう設定してから、再度rmagickをインストールする。

$ sudo gem install rmagick
Building native extensions.  This could take a while...
Successfully installed rmagick-2.13.1
1 gem installed

ldconfig

実行時に以下のようなエラーになる場合

libMagickCore.so.4: cannot open shared object file: No such file or directory - /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/gems/1.8/gems/rmagick-2.13.1/lib/RMagick2.so
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/gems/1.8/gems/rmagick-2.13.1/lib/RMagick2.so

これは、共有ライブラリが認識されていないために起きている。
libMagickCore.so.4が/usr/local/libに存在するのに認識されていない場合は、/usr/local/libをldconfigで追加してやる必要がある。
まず、ldconfigを実行してキャッシュを生成する。

$ sudo /sbin/ldconfig

それでもエラーになる場合は、ldconfig に -p オプションを付けて実行してキャッシュを確認してみる。

$ sudo /sbin/ldconfig -p

ldconfig -p の出力結果にlibMagickCore.so.4が見つからない場合は、ディレクトリを追加する必要がある。
ldconfigで読み込まれる/etc/ld.so.confを編集。

include ld.so.conf.d/*.conf

となっていたのを

/usr/local/lib
include ld.so.conf.d/*.conf

のように、共有ライブラリが含まれるディレクトリを追加する。
そしてldconfigを実行してキャッシュを作成する。

$ sudo /sbin/ldconfig

-pオプションでキャッシュを確認。

$ sudo /sbin/ldconfig -p

出力結果に、以下のように使用する共有ライブラリが含まれるようになればOK。

	libMagickWand.so.4 (libc6,x86-64) => /usr/local/lib/libMagickWand.so.4
	libMagickWand.so (libc6,x86-64) => /usr/local/lib/libMagickWand.so
	libMagickCore.so.4 (libc6,x86-64) => /usr/local/lib/libMagickCore.so.4
	libMagickCore.so (libc6,x86-64) => /usr/local/lib/libMagickCore.so
	libMagick++.so.4 (libc6,x86-64) => /usr/local/lib/libMagick++.so.4
	libMagick++.so (libc6,x86-64) => /usr/local/lib/libMagick++.so

Railsアプリケーションで

config.gem "rmagick", :lib => "RMagick"

としている場合に、

Missing these required gems: rmagick >= 0

というエラーになってしまう場合も共有ライブラリが認識されていない可能性があるので、ldconfigをチェックする。

Can't install RMagick 2.13.1. Can't find MagickWand.h.

Can't install RMagick 2.13.1. Can't find MagickWand.h.

というエラーでRMagickをインストールできない場合は、PKG_CONFIG_PATHを設定してインストールする。
Can’t install RMagick 2.13.1. Can’t find MagickWand.h.

sudoでPATHなどの環境変数を引き継ぐ

$ sudo visudo
#Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Defaults:admin !env_reset

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
をコメントアウトして、
Defaults:admin !env_reset
を追加する。(adminは、使用するユーザ名とする)

CentOS5では、上記ではうまくいかなかった。
その場合は、ユーザの ~/.bashrc に

alias sudo='sudo env PATH=$PATH'

を追加する。
ただし、その場合、sudo -i とかできなくなる。

rubyインストールしてあるのにsudoすると「/usr/bin/env: ruby: そのようなファイルやディレクトリはありません」と言われる - プログラマ 福重 伸太朗 〜基本へ帰ろう〜