本投稿のクライマックス
「試行錯誤。最終手段その2!パッケージ管理できなくなることを許容してソースからインストールしてみます♪★【成功】★」を実践すれば OK ですの。
ただし、本投稿のやり方では ImageMagick の yum や RPM でのパッケージ管理はできません。
きっかけ。Gem パッケージのインストールが失敗する
Gem(Ruby のライブラリ)の依存関係解決ツールである Bundler を利用して、Redmine に必要な Gem をインストールしたいのです!
その時に、ImageMagick のそこそこバージョンが新しい物が必要でした><。簡単にインストール出来ませんでしたので、その奮闘記を残します!
Gem パッケージインストールできなかった具体的な記録
cd /var/lib/redmine/ bundle install --without development test
上述の bundle コマンドを試してみますと、、、エラーですの><。
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 の rmagick がインストールされていないのか、バージョンが変なのか、そういった印象を受けます。エラーメッセージにあった、コマンドを実行してみます。
gem install rmagick -v '2.13.2'
エラーです><。どうやら CentOS にインストールした ImageMagic のバージョンが低いようですの><。
Can't install RMagick 2.13.2. You must have ImageMagick 6.4.9 or later.
調べてみましたところ、CentOS で yum インストールできるバージョンは次でした。
- ImageMagick 6.2.8.0-15.el5_8
インストールしたいもの振り返り
本投稿のゴールです。ImageMagick だけでなく、もう一つインストールしたいのです。
- ImageMagick 6.4.9 以上
- ImageMagick-devel
ImageMagick-devel は ImageMagick と対になるパッケージですので、バージョンを揃えてインストールいたします。
参考ページ探しました♪
- CentOS 5にImageMagickをインストールときのメモ – 4.5帖の生活
全体の流れが参考なります。特に、一旦 yum でインストールして、依存するパッケージを事前にインストールしておく考え方はなるほどと思いました。とはいえ、バージョンが対応していない低いものがインストールされてしまうかもしれないリスクも有るとは思います。 - CentOS 5.9にRedmine 2.3をインストールしてみた。 | Blog for Smartphone Seminar 2013
こちらも、Redmine インストール時に引っかかったところとして ImageMagick を挙げていらっしゃいます。ソースからコンパイルして成功しております♪わたくしたちは yum や rpm でインストールすることによりパッケージを管理したく考えておりますので、この方の方法は最終手段としたいのです! - CentOSのImageMagickのバグ対応【4/11追記アリ】
これも ImageMagick のバージョンが高いものをインストールする時の試行錯誤です。流れは上 2 つと同じですけれども、躓いた具体的な箇所が異なりますのでその分参考になります! - Package ImageMagick-libs
RPM のパッケージはどれを使えばよいのか。。。試行錯誤を重ねるうちに最新版ではダメそうでしたので選ぶ必要がありました。Fedora は CentOS と結構近いディストリビューションですので、こちらから選びました。 - Linuxコマンド集 – 【 rpm 】 RPMパッケージをインストール/アンインストールする:ITpro
いつも使用しております yum が使えませんので、rpm コマンドの勉強も兼ねてこちらのページを参考にしております。
試行錯誤。RPM で最新の ImageMagick をインストールします!【失敗】
まずは yum でインストールした ImageMagick、ImageMagick-devel を削除します。
# 一旦 ImageMagick、ImageMagick-devel を削除 yum remove ImageMagick
続いて、作業場所に移動し、2つのパッケージをダウンロードし、最新版(6.8.8-4)をインストールしてみます。
# 作業場所に移動 cd /tmp/ # ダウンロード wget ftp://ftp.imagemagick.org/pub/ImageMagick/linux/CentOS/i386/ImageMagick-6.8.8-4.i386.rpm wget ftp://ftp.imagemagick.org/pub/ImageMagick/linux/CentOS/i386/ImageMagick-devel-6.8.8-4.i386.rpm # インストール rpm -Uvh ImageMagick-6.8.8-4.i386.rpm
ここでエラーです><。
エラー: 依存性の欠如: libfftw3.so.3 は ImageMagick-6.8.8-4.i386 に必要とされています
libfftw3.so.3、つまり fftw3 が足りないとのことですので、yum でインストールいたしました。
yum install fftw3
これで無事に ImageMagic をインストールできました。
# インストール rpm -Uvh ImageMagick-6.8.8-4.i386.rpm
次は ImageMagic-devel ですけれども、、、次のエラーとなりました><。
エラー: 依存性の欠如: ImageMagick-libs = 6.8.8-4 は ImageMagick-devel-6.8.8-4.i386 に必要とされています freetype-devel は ImageMagick-devel-6.8.8-4.i386 に必要とされています jasper-devel は ImageMagick-devel-6.8.8-4.i386 に必要とされています
むむむ。か、解決すべく、これらをインストールします!
yum install freetype-devel jasper-devel
しかし、「ImageMagick-libs = 6.8.8-4 」がどうしても見つかりません。仕方ありませんので、ImageMagic を一旦アンインストールします。
# アンインストール rpm -e ImageMagick-6.8.8-4 # アンインストールの確認 rpm -q ImageMagick.i386
パッケージ ImageMagick.i386 はインストールされていません。
試行錯誤。ImageMagic-lib をインストールするために、バージョンを落としてインストールを試みます!【失敗】
ImageMagic-lib のバージョンと揃った ImageMagic をインストールする必要がありそうです。
Fedora の RPM ページを見まして、ImageMagic-lib の最も新しいバージョンを探しました。そして同じバージョンの ImageMagic、ImageMagic-devel もダウンロードいたします。
# 別のバージョンのパッケージをダウンロード wget ftp://rpmfind.net/linux/fedora/linux/development/rawhide/armhfp/os/Packages/i/ImageMagick-libs-6.8.7.0-4.fc21.armv7hl.rpm wget ftp://rpmfind.net/linux/fedora/linux/development/rawhide/armhfp/os/Packages/i/ImageMagick-6.8.7.0-4.fc21.armv7hl.rpm wget ftp://rpmfind.net/linux/fedora/linux/development/rawhide/armhfp/os/Packages/i/ImageMagick-devel-6.8.7.0-4.fc21.armv7hl.rpm
ではインストールしていきます。
rpm -Uvh ImageMagick-libs-6.8.7.0-4.fc21.armv7hl.rpm rpm -Uvh ImageMagick-6.8.7.0-4.fc21.armv7hl.rpm rpm -Uvh ImageMagick-devel-6.8.7.0-4.fc21.armv7hl.rpm
最初の「ImageMagick-libs」で出た「エラー: 依存性の欠如」で、26 のパッケージが足りないと言われました><。
- ld-linux-armhf.so.3
- ld-linux-armhf.so.3(GLIBC_2.4)
- libHalf.so.11
- libIex-2_1.so.11
- libIexMath-2_1.so.11
- libIlmImf-Imf_2_1.so.21
- libIlmThread-2_1.so.11
- libImath-2_1.so.11
- libc.so.6(GLIBC_2.11)
- libgcc_s.so.1(GCC_3.5)
- libgio-2.0.so.0
- libgs.so.9
- libjpeg.so.62(LIBJPEG_6.2)
- liblcms2.so.2
- libltdl.so.7
- liblzma.so.5
- liblzma.so.5(XZ_5.0)
- libpng16.so.16
- libpng16.so.16(PNG16_0)
- libtiff.so.5
- libtiff.so.5(LIBTIFF_4.0)
- libwebp.so.5
- libxml2.so.2(LIBXML2_2.4.30)
- libz.so.1(ZLIB_1.2.3.3)
- rpmlib(FileDigests) <= 4.6.0-1
- rpmlib(PayloadIsXz) <= 5.2-1
yum whatprovides で足りないソフトがどの yum パッケージに含まれているか調べる!【意味なかった】
これらをひとつひとつインストールしていくわけですが、どうやって調べましょうか?
できれば、yum でインストールしたいですわね。でも、足りていないものが、一体どのパッケージに含まれていか調べる必要があります。
次のページが参考になりそうです。ありがとう存じます。
結論から申し上げますと、うまく行きませんでした。10近くを以下のように調べたのですけれども、1つとしてヒットいたしませんでした。
yum whatprovides ld-linux-armhf.so.3 yum whatprovides */ld-linux-armhf.so.3 yum whatprovides *bin/ld-linux-armhf.so.3
なお、「*/ld-linux-armhf.so.3」や「*bin/ld-linux-armhf.so.3」は最初に実行した時に次のようなアドバイスが表示されたため実行したのでした。
Warning: 3.0.x versions of yum would erroneously match against filenames. You can use "*/ld-linux-armhf.so.3" and/or "*bin/ld-linux-armhf.so.3" to get that behaviour No Matches found
試行錯誤。yum で RPM を指定してインストールを試みる!【失敗】
途方に暮れてから、気を取り直し、またいろいろ調べて目に入ったページですわ。ヒントになるかしら!と思ったのは次の部分です。
- yum install RPM名
指定したRPMをインストールする。
早速、ダウンロードしたもののインストールできる気配のない ImageMagick-libs で試してみました。
[root@localhost tmp]# yum install ImageMagick-libs-6.8.7.0-4.fc21.armv7hl.rpm Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * base: www.ftp.ne.jp * epel: ftp.tsukuba.wide.ad.jp * extras: www.ftp.ne.jp * remi: remi.kazukioishi.net * rpmforge: mirror-fpt-telecom.fpt.net * updates: www.ftp.ne.jp Setting up Install Process Examining ImageMagick-libs-6.8.7.0-4.fc21.armv7hl.rpm: ImageMagick-libs-6.8.7.0-4.fc21.armv7hl Cannot add package ImageMagick-libs-6.8.7.0-4.fc21.armv7hl.rpm to transaction. Not a compatible architecture: armv7hl Nothing to do [root@localhost tmp]#
「Not a compatible architecture: armv7hl」が気になります。。。もしかして、CentOS 5.10、32bit の OS にこの RPM はインストールすることができないのではないでしょうか?そのため、さきほど yum whatprovides でもまったく情報が得られなかった、、、のではないかしら?
今度は、最初にインストールしようとした、ImageMagick-devel の最新版で同じ操作をしてみました。そうしますと、単純に ImageMagick-libs が無いと言われます。「Not a compatible architecture」ではございません。
[root@localhost tmp]# yum install ImageMagick-devel-6.8.8-4.i386.rpm …略… Error: Missing Dependency: ImageMagick-libs = 6.8.8-4 is needed by package ImageMagick-devel-6.8.8-4.i386 (/ImageMagick-devel-6.8.8-4.i386) Error: Missing Dependency: ImageMagick = 6.8.8-4 is needed by package ImageMagick-devel-6.8.8-4.i386 (/ImageMagick-devel-6.8.8-4.i386) You could try using --skip-broken to work around the problem You could try running: package-cleanup --problems package-cleanup --dupes rpm -Va --nofiles --nodigest [root@localhost tmp]#
試行錯誤。package-cleanup をインストールして依存性にどこか問題がないか試しました!【効果なし】
先ほどのエラー表示の最後、「package-cleanup –problems」「package-cleanup –dupes」「rpm -Va –nofiles –nodigest」が気になりました。rpm -V は検査ですのでなにかが変わるようなものではなさそうです。実行してみましょう。
その前に、「package-cleanup」は yum-utils に含まれているそうですので、こちらをインストールいたしました。
yum install yum-utils
それでは実行してみましょう。。。特にエラー表示はされませんわね。。。
[root@localhost tmp]# package-cleanup --problems Setting up yum Reading local RPM database Processing all local requires No problems found [root@localhost tmp]# package-cleanup --dupes Setting up yum [root@localhost tmp]# rpm -Va --nofiles --nodigest [root@localhost tmp]#
わかりません><。
試行錯誤。最終手段その1!依存性を無視して RPM インストールしてみます♪【失敗】
- 依存性を無視してインストールする
- パッケージ管理できなくなることを許容してソースからインストールする
いよいよこれらを試そうと思います。まずは、パッとできる依存性の無視からです。
まずは素直にインストールしてみます。
[root@localhost tmp]# rpm -ivh ImageMagick-6.8.8-4.i386.rpm 準備中... ########################################### [100%] 1:ImageMagick ########################################### [100%] [root@localhost tmp]# rpm -ivh ImageMagick-devel-6.8.8-4.i386.rpm エラー: 依存性の欠如: ImageMagick-libs = 6.8.8-4 は ImageMagick-devel-6.8.8-4.i386 に必要とされています
ImageMagick はインストール出来ましたが、ImageMagick-devel は libs が無いため失敗しました。予想通りです。
そこで、–nodebs を付けてインストールしました。
[root@localhost tmp]# rpm -ivh --nodeps ImageMagick-devel-6.8.8-4.i386.rpm 準備中... ########################################### [100%] 1:ImageMagick-devel ########################################### [100%]
インストール出来ました。そして、yum で確認しました。パッケージ管理できていることがわかります。
[root@localhost tmp]# yum list installed | grep ImageMagick ImageMagick.i386 6.8.8-4 installed ImageMagick-devel.i386 6.8.8-4 installed [root@localhost tmp]#
また、アンインストールができる、RPM でもアンインストールされていることも確かめました。
[root@localhost tmp]# yum remove ImageMagick …略… Removed: ImageMagick.i386 0:6.8.8-4 Dependency Removed: ImageMagick-devel.i386 0:6.8.8-4 Complete! [root@localhost tmp]# rpm -q ImageMagick-devel-6.8.8-4.i386.rpm パッケージ ImageMagick-devel-6.8.8-4.i386.rpm はインストールされていません。 [root@localhost tmp]# rpm -q ImageMagick-6.8.8-4.i386.rpm パッケージ ImageMagick-6.8.8-4.i386.rpm はインストールされていません。 [root@localhost tmp]#
この後、Gem パッケージの RMagick のインストールを試みましたが、エラーでダメでしたの><。
この方法は使えません!
試行錯誤。最終手段その2!パッケージ管理できなくなることを許容してソースからインストールしてみます♪★【成功】★
ポイントです。
- アンインストール時は make uninstall コマンドで行うため、解凍したソースはいつでもアクセスできるようにしておく必要がある。/tmp/ は時間経過で削除されるのでダメ。
- ソースのダウンロード元 → ImageMagick – Browse /old-sources/6.x/6.8 at SourceForge.net
- 参考ページ。大変助かり、そして勉強になりました。感謝いたします! → CentOS に ImageMagick, RMagick のインストール | akkunchoi@github
以下のコマンドでインストール出来ました♪
が、その前に、./configure の結果を見ますと、このままですと PNG 画像が扱えません。
Option Value ------------------------------------------------------------------------------- …略… PNG --with-png=yes no
ぜひとも PNG 画像も扱いたく思います。そこで、事前に libpng-devel を yum インストールします。
yum install libpng-devel
そして、./configure をやり直すのですわ。
最初からコマンドをまとめますと、ImageMagick 6.8.7-10 インストールは次で完了できました♪
cd ~ wget http://sourceforge.net/projects/imagemagick/files/old-sources/6.x/6.8/ImageMagick-6.8.7-10.tar.gz/download tar xzf ImageMagick-6.8.7-10.tar.gz cd ImageMagick-6.8.7-10 ./configure make make install
確認してみましょう。
# 確認用に適当に画像をコピーして入手 cp -a /var/www/icons/world2.png /tmp/world2.png # ImageMagick による変換 convert world2.png world2.jpg
これでエラーが出ず、world2.jpg が作成されました。どうやら成功ですわね♪
Gem パッケージの RMagick のインストール、試すところまでやってみますの!
そしてこの後、Gem パッケージの RMagick のインストールを試みましたが、エラーでダメでしたの><。
しかし、今回は対処ができそうです。PKG_CONFIG_PATH を設定すれば、きっとうまくいきますわ。
Package MagickCore was not found in the pkg-config search path. Perhaps you should add the directory containing `MagickCore.pc' to the PKG_CONFIG_PATH environment variable No package 'MagickCore' found Package MagickCore was not found in the pkg-config search path. Perhaps you should add the directory containing `MagickCore.pc' to the PKG_CONFIG_PATH environment variable No package 'MagickCore' found Package MagickCore was not found in the pkg-config search path. Perhaps you should add the directory containing `MagickCore.pc' to the PKG_CONFIG_PATH environment variable No package 'MagickCore' found Package MagickCore was not found in the pkg-config search path. Perhaps you should add the directory containing `MagickCore.pc' to the PKG_CONFIG_PATH environment variable
PKG_CONFIG_PATH を設定しました。少し不安なことがございます。exit 後、設定したパスはリセットされてしまいます。大丈夫でしょうか?bundle 時のみこのパス設定が必要なのであればこれでよいですわね。
わかりませんのでここでメモのみいたしまして、続けます。
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
こうして、無事に bundle で RMagic をインストールすることができました!
続いて、bundle console で試してみますと、やはりエラーが!
[root@localhost redmine]# bundle console irb(main):001:0> require "RMagick" LoadError: libMagickCore-6.Q16.so.1: cannot open shared object file: No such file or directory - /root/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/extensions/x86-linux/2.1.0-static/rmagick-2.13.2/RMagick2.so from /root/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/activesupport-3.2.16/lib/active_support/dependencies.rb:251:in `require' …略…
これは、ダイナミックリンクライブラリのパスが設定されいないからだそうですの。
次のように設定しました。/etc/ld.so.conf に設定しても良いのですけれども、/etc/ld.so.conf.d/ に設定ファイルを置くこともできるようですのでこちらに新規ファイルを作成する方法をとりました。
vim /etc/ld.so.conf.d/ImageMagick.conf
次の内容を書きました。この場所に、ImageMagick の so ファイルがございます。
/usr/local/lib
反映いたしましょう。
/sbin/ldconfig
確認いたしました。
/sbin/ldconfig -p | grep Magick
次のように結果が表示されました。OK ですわね♪
libMagickWand-6.Q16.so.1 (libc6) => /usr/local/lib/libMagickWand-6.Q16.so.1 libMagickWand-6.Q16.so (libc6) => /usr/local/lib/libMagickWand-6.Q16.so libMagickCore-6.Q16.so.1 (libc6) => /usr/local/lib/libMagickCore-6.Q16.so.1 libMagickCore-6.Q16.so (libc6) => /usr/local/lib/libMagickCore-6.Q16.so libMagick++-6.Q16.so.3 (libc6) => /usr/local/lib/libMagick++-6.Q16.so.3 libMagick++-6.Q16.so (libc6) => /usr/local/lib/libMagick++-6.Q16.so
では、もう一度 bundle console を試してみます。
[root@localhost redmine]# bundle console irb(main):001:0> require "RMagick" => true irb(main):002:0>
やりました!成功ですの!これで、ソースからの ImageMagick インストールが成功したと、そう言えますわね♪
おわりに
本投稿は、Redmine をインストールしたいのですけれども、Ruby を触ったことがありませんから Ruby のインストールから。Gem も触ったことありませんから、それも触ります。
そんな中で、ImageMagick のバージョンが低いために、bundle でエラーが発生、次に進めない事態に躓いておりました。
そこで、本投稿で満足いくまで調べました。
最後に、次のページのおかげでインストールと動作の確認をすることができました。もう一度御礼申し上げます。ありがとう存じます!
これでようやく、Redmine 2.4 のインストールを続けることができますの♪
以上です。
「ImageMagick をソースからインストールして Ruby の Gem の RMagick が動くまで実践!」への1件の返信
[…] ImageMagick をソースからインストールして Ruby の Gem の RMagick が動くまで実践! | oki2a24 […]