■CentOS5.6 ImageMagickアップデートのメモ
 以前の記事で、ある特定のgifアニメファイルでCentOS標準インストールのImageMagickが暴走する件に対してImageMagickのHPから最新版をインストールして対処する方法を書いていたが、今回CentOS5.5から5.6にアップデートする際にここでハマったのでメモを残しておく。おそらく今後の更新でも同様の対処が必要。

 通常通りの yum upgrade ではImageMagickのバージョンが合わずエラーになり更新が停止するため、実際に行った対応は以下。

# yum remove ImageMagick
# yum upgrade

upgrade完了後に以前ダウンロード済みのImageMagickを再適用
# rpm -ivh ImageMagick-6.6.3-5.x86_64.rpm

 CentOS5.6では強制適用のためのforceオプションは不要ですんなりとインストールできた。convertテストでも特定のgifアニメファイルは正しくエラーになり、MyNETSからも適切にリサイズ等の動作が行え、問題なく利用することができた。

, ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...

■CentOSのImageMagickのバグ対応x86_64版
 手元のサーバを初めてx86_64版でインストールした結果、ImageMagickでまたハマったのでメモしておく。とりあえず解決はできたようなので、たぶん他でも大丈夫かと…(自信なし)
 ちなみに以前記事で書いた内容は全く役に立たなくなっていた。今回CentOS5と書いている部分では、特に注意書きがない限りx84_64版なので注意。

 CentOS5.6でのアップデート対応記事はこちら
 http://blog.isnext.net/issy/archives/1022

1)ImageMagickのバージョン確認

  1. # rpm -q ImageMagick

通常CentOS5でyumからImageMagickをインストールした場合、ImageMagick-6.2.8.0-4がi386版とx86_64版で2つインストールされているはずである。ここでは2つ入っていることが確認できればそれでいい。入っていない状態なら以下のコマンドでインストールしておく。

  1. # yum install ImageMagick

2)ImageMagickのHPからCentOS用rpm(x86_64)をダウンロードしてアップデートする

  1. # ~/download
  2. # wget http://www.imagemagick.org/download/linux/CentOS/x86_64/ImageMagick-6.6.3-5.x86_64.rpm
  3. # rpm -Uvh --force ImageMagick-6.6.3-5.x86_64.rpm

ついにCentOS5用のrpmが用意されたようで、これをダウンロードして強制的にアップデートをかける。(作業中にはダウンロードできたのだが、今確認したら404エラーになってるので更新されるのかもしれない)これで、問題が解決してしまうようだ。i386版と競合するファイルがあるのだが、man関係のファイルなので強制的にアップデートしてもたぶん問題はないと思われる。

障害の発生するgifでも正しくエラーになり、MyNETSでもリサイズが正しく動作しているので、i386版とx86_64版のバージョン違いが微妙に気になるが、スルーしておくことにする…。
実際作業して見て実感するが、CentOSのx86_64版はいろんな意味で微妙…。

ImageMagickのHPにはi386版も最新のCentOS用rpmがあるのでインストールしたくなるのだが、なぜかi386版のみ前の記事と同じライブラリが不足するため、いろいろインストールしないといけない状況に陥る。しかしx86_64版のCentOSではi386版の必要ライブラリがうまく導入できず(スキル不足のため)最終的にインストールできなかった。(前回記事の手法ではx86_64版が導入されるのみ。i386版のlibファイルを持ってきて配置してみたが認識されず…)

ちなみにyumでImageMagickをインストールしないで、直接ImageMagickのHPからファイルを持ってきてrpmでインストールすることもできるが、その場合、MyNETSで画像のリサイズができないという問題が発生した。障害の発生するgif自体はconvertでエラーになるので、適切に動いているようではあるが、お使いの環境によっては正しく動作しない場合があるので注意。

, , ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...

CentOSのImageMagickのバグ対応【4/11追記アリ】

CentOS5上で運用しているMyNETSのサイトで今年に入ってからしばしば高負荷が発生してアクセス障害になっていたので、友人らと原因を調査。不幸中の幸いというか高負荷発生時に友人がOSにログインしていたため原因が判明。結果、あるパターンの壊れたアニメGIFのファイルがアップロードされた際にImageMagickが変換しようとして高負荷状態を発生させていた。該当ファイルを抽出し、他のCentOS5のマシンで手動でconvertして再現確認。WindowsやMacOSX,Ubuntuでは該当ファイルはconvertでエラー表示で正しく処理中断になるため、CentOS用パッケージの問題と推測。

 既にこちらの内容は役に立ちません
 最新のx86_64版の話題はこちらを参照してください
http://blog.isnext.net/issy/archives/362

■ImageMagickのアップデート
CentOSはextraとepelがリポジトリ追加されているが、ImageMagickは

  1. # rpm -q ImageMagick
  2. ImageMagick-6.2.8.0-4.el5_1.1

と、最新の6.6.0-10には遠く及ばない。

しかたがないので、最新版のtarballを落としてきてインストールしてみた。

  1. # cd ~/download
  2. # wget http://downloads.sourceforge.net/project/imagemagick/ImageMagick/00-6.6.0/ImageMagick-6.6.0-10.tar.gz?use_mirror=jaist
  3. # cd ImageMagick-6.6.0-10
  4. # ./configure
  5. # make
  6. # make install

いろいろ警告は表示されるものの一応インストールできた。…が

  1. # convert broken.gif hoge.gif

とすると変わらず高負荷発生。
おそらく警告が出ていた中に対策に必要なものがあるということだろう。
(4/11追記:コンパイルして導入するとデフォルトでは/usr/local/bin/convertにインストールされるため、CentOSのデフォルト/usr/bin/convertと異なり、そもそもここでの動作確認は適切な状況ではなかった

しかたないので、Fedora用に用意されているrpmファイルをダウンロードしてインストールする。

  1. # cd ~/download
  2. # wget http://www.imagemagick.org/download/linux/fedora/i386/ImageMagick-6.6.0-10.i386.rpm
  3.  
  4. # rpm -Uvh ImageMagick-6.6.0-10.i386.rpm
  5. エラー: 依存性の欠如:
  6. libHalf.so.4 は ImageMagick-6.6.0-10.i386 に必要とされています
  7. libIex.so.4 は ImageMagick-6.6.0-10.i386 に必要とされています
  8. libIlmImf.so.4 は ImageMagick-6.6.0-10.i386 に必要とされています
  9. libImath.so.4 は ImageMagick-6.6.0-10.i386 に必要とされています
  10. libcdt.so.4 は ImageMagick-6.6.0-10.i386 に必要とされています
  11. libdjvulibre.so.21 は ImageMagick-6.6.0-10.i386 に必要とされています
  12. libfftw3.so.3 は ImageMagick-6.6.0-10.i386 に必要とされています
  13. libgraph.so.4 は ImageMagick-6.6.0-10.i386 に必要とされています
  14. libgvc.so.5 は ImageMagick-6.6.0-10.i386 に必要とされています
  15. libltdl.so.3 は ImageMagick-6.6.0-10.i386 に必要とされています

ということで不足しているパッケージの追加をすべく
http://rpm.pbone.net/

で必要なライブラリを含むパッケージの在りかを探す。
必要なのは
OpenEXR
fftw3
Graphviz
djvulibre

epelでなんとかなるものはそこからinstall

  1. # yum install openexr fftw3

graphvizは最新版が必要なので、本家のCentOS用リポジトリを追加。

  1. # wget http://www.graphviz.org/graphviz-rhel.repo
  2. # mv graphviz-rhel.repo /etc/yum.repos.d/
  3. # yum install graphviz

djvulibreはdagリポジトリにあるのでそこから追加。

  1. # vi /etc/yum.repos.d/dag.repo
  2. [dag]
  3. name=Dag RPM Repository for CentOS5
  4. baseurl=http://ftp.riken.jp/Linux/dag/redhat/el5/en/$basearch/dag/
  5. enabled=0
  6. gpgcheck=1
  7.  
  8. # rpm --import http://ftp.riken.jp/Linux/dag/RPM-GPG-KEY.dag.txt
  9. # yum --enablerepo=dag install djvulibre

これで再度(追記を確認してください。これやっちゃいけません)

  1. # rpm -Uvh ImageMagick-6.6.0-10.i386.rpm

今度は無事に導入。

  1. # convert broken.gif hoge.gif
  2. convert: negative or zero image size `broken.gif' @ error/gif.c/ReadGIFImage/1237.
  3. convert: missing an image filename `hoge.gif' @ error/convert.c/ConvertImageCommand/2941.

正しくエラーになったので、これでOK。
これCentOSへのDoSになるんで報告すべきか悩み中。

…と思ったら、MyNETSで動作させてみたところ、GIF以外がリサイズできなくなってることが判明。
正しく動作していないのは、Fedora用を使ったからなのか、バージョンアップでコマンド変更があったのか。
追跡調査中。

— 4/11追記 —
調査の結果、Uvhでインストールしてはいけないことを確認。
そりゃそうか。別OS用だしね。

入れ替え時にやること。
既存のImageMagickをアンインストール

  1. # yum remove ImageMagick

アンインストールの確認

  1. # rpm -q ImageMagick
  2. パッケージ ImageMagick はインストールされていません。

一応他に入っていないか、残存libがないか確認

  1. # updatedb
  2. # localte convert
  3. # locate libMagick

CentOSではconvertsは/usr/bin/convertになるので
コンパイルインストール等を行って他にあったら残存lib含めて消しておく

  1. # rm -f /usr/local/bin/convert
  2. # rm -f /usr/local/lib/libMagick*

Fedora用最新版を新規インストール

  1. # rpm -ivh ImageMagick-6.6.0-10.i386.rpm

念のため再起動

  1. # reboot

これで正しくMyNETSで動作することを確認しました。
CentOSでアニメGIF投稿を受け付けるWebアプリで画像変換にImageMadickを利用している場合には、最新版へのアップデートをオススメします。

, ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...