質問: 初めてAWSでEC2の設定をしています。 PHPとImageMagickをインストールしたのですが、PNGが変換できません。 PHPのログを見ると、 ``` [0] => convert: no decode delegate for this image format `PNG' @ error/constitute.c/ReadImage/509. ``` と出ていましたので、色々調べて、「libpng 」をインストールしました。 しかし、何度やってもPNGが使えるようになりません。 ImageMagickのディレクトリで、`sudo ./configure` と打つと、 ``` PNG --with-png=yes no ``` と出ています。 インストールしたものは以下となります。 ``` [ec2-user@ip-XXX-XX-XX-XX src]$ ls autoconf-latest ImageMagick.tar.gz m4-1.4.18.tar.gz autoconf-latest.tar.gz libpng-1.6.29 zlib-1.2.11 download libpng-1.6.29.tar.gz zlib-1.2.11.tar.gz ImageMagick-7.0.5-4 m4-1.4.18 ``` ImageMagickのパスにlibpngが通っていない気がするのですが、 どこをどうチェックすればいいのかわかりません。 どなたか、どこをどうチェックすれば、何が足りないのかわかるようになるか、 教えていただけないでしょうか? どうぞよろしくお願い致します。 ※追記です。 libpng のインストールの具体的な手順は以下です。 ``` cd /usr/local/src/ sudo wget http://prdownloads.sourceforge.net/libpng/libpng-1.6.29.tar.gz sudo tar zxvf libpng-1.6.29.tar.gz cd libpng-1.6.29 sudo ./configure --enable--shared sudo make sudo make install ``` `./configure --enable--shared` のところは、よくわかっていません。 (編集者注: `--enable--shared` は必要ありません) のサイトを参考にしました。
回答: 質問者さんは、ディストリビューションのパッケージ管理ツールである `yum` で libpng をインストールし解決されています。 以下は雑多な参考情報です。 まずは、`config.log` を "png" などのキーワードで検索し、状況を調査するのがよいです。 ### ライブラリのチェック 例えば、libpng がインストール出来ているかのチェックには `pkg-config` コマンドが使えます。 以下は実際に、ImageMagick の configure が行なっている方法です。 ``` # インストール出来ていれば何も出力されないはず pkg-config --exists --print-errors "libpng >= 1.0.0" ``` `pkg-config` がライブラリの情報を探す場所(`search path`)は、やはり `pkg-config` コマンドで確認出来ます。 ``` pkg-config --variable pc_path pkg-config # 私の環境では以下が出力されます # /usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig ``` 野良ビルドしたライブラリは大抵 `/usr/local/` 以下にインストールしますから、上記のパスに `/usr/local/` 以下が含まれている必要があります。 もし含まれていなければ、 ``` # 例: 常に必要ならば ~/.profile などに記入 export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ``` のように、追加する事になります。 ### コンパイルのやり直し コンパイルを `./configure` からやり直す場合には、`make clean` も行なった方がよいです。 (これが必要なのに忘れた場合、make が「やる事がない」と言ってくるので気付くとは思いますが) ``` # 例えば ImageMagick のコンパイル・インストールをやり直すなら、たぶんこんな感じ ./configure make clean make sudo make install ``` ### sudo を使う箇所 全てのコマンドに `sudo` をつけるのは危険です。 これだと `root` で作業するのと変わりません。 ファイルの所有者を気にされているようですが、コンパイルは一般ユーザで進めて大丈夫です。 コンパイルなどは一般ユーザの権限で、**一般ユーザが書き込めるディレクトリで**行ない、インストール(`make install`)にだけ `sudo` を用いるのが定石です。 ### パッケージシステムの利用 必要な物を全てパッケージシステム外でコンパイルしてインストールなさっているようですが、これをやるならば、結構な作業量を覚悟する必要があります。 学習目的でないならば、こういった野良ビルドは最小限にした方がよいです。 例えば、ディストリビューションが提供する ImageMagick のパッケージが古すぎるとしても、他のパッケージ(autoconf、libpng など)は大丈夫かも知れません。 また、ImagiMagick 公式の RPM パッケージもありますね。 楽はしておいた方がよいと思います。