33959


初めてAWSでEC2の設定をしています。  
PHPとImageMagickをインストールしたのですが、PNGが変換できません。

PHPのログを見ると、

[code]

    [0] => convert: no decode delegate for this image format `PNG' @ error/constitute.c/ReadImage/509.
    
[/code]

と出ていましたので、色々調べて、「libpng 」をインストールしました。  
しかし、何度やってもPNGが使えるようになりません。

ImageMagickのディレクトリで、`sudo ./configure` と打つと、

[code]

    PNG               --with-png=yes              no
    
[/code]

と出ています。

インストールしたものは以下となります。

[code]

    [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
    
[/code]

ImageMagickのパスにlibpngが通っていない気がするのですが、  
どこをどうチェックすればいいのかわかりません。

どなたか、どこをどうチェックすれば、何が足りないのかわかるようになるか、  
教えていただけないでしょうか？

どうぞよろしくお願い致します。

※追記です。  
libpng のインストールの具体的な手順は以下です。

[code]

    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
    
[/code]

`./configure --enable--shared` のところは、よくわかっていません。  
（編集者注: `--enable--shared` は必要ありません）  
<http://d.hatena.ne.jp/orz---orz/20070329> のサイトを参考にしました。


CC BY-SA 3.0
2017-04-12T09:15:48.007
33948
2017-04-12T15:04:31.677
2017-04-12T14:59:05.573
3054
18800
question
linux imagemagick
自分で make した ImageMagick が PNG を扱えません


質問者さんは、ディストリビューションのパッケージ管理ツールである `yum` で libpng をインストールし解決されています。  
以下は雑多な参考情報です。

* * *

まずは、`config.log` を "png" などのキーワードで検索し、状況を調査するのがよいです。

### ライブラリのチェック

例えば、libpng がインストール出来ているかのチェックには `pkg-config` コマンドが使えます。  
以下は実際に、ImageMagick の configure が行なっている方法です。

[code]

    # インストール出来ていれば何も出力されないはず
    pkg-config --exists --print-errors "libpng >= 1.0.0"
    
[/code]

* * *

`pkg-config` がライブラリの情報を探す場所(`search path`)は、やはり `pkg-config` コマンドで確認出来ます。

[code]

    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
    
[/code]

野良ビルドしたライブラリは大抵 `/usr/local/` 以下にインストールしますから、上記のパスに `/usr/local/`
以下が含まれている必要があります。  
もし含まれていなければ、

[code]

    # 例: 常に必要ならば ~/.profile などに記入
    export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
    
[/code]

のように、追加する事になります。

### コンパイルのやり直し

コンパイルを `./configure` からやり直す場合には、`make clean` も行なった方がよいです。  
（これが必要なのに忘れた場合、make が「やる事がない」と言ってくるので気付くとは思いますが）

[code]

    # 例えば ImageMagick のコンパイル・インストールをやり直すなら、たぶんこんな感じ
    ./configure
    make clean
    make
    sudo make install
    
[/code]

### sudo を使う箇所

全てのコマンドに `sudo` をつけるのは危険です。  
これだと `root` で作業するのと変わりません。  
ファイルの所有者を気にされているようですが、コンパイルは一般ユーザで進めて大丈夫です。  
コンパイルなどは一般ユーザの権限で、 **一般ユーザが書き込めるディレクトリで** 行ない、インストール（`make install`）にだけ `sudo`
を用いるのが定石です。

### パッケージシステムの利用

必要な物を全てパッケージシステム外でコンパイルしてインストールなさっているようですが、これをやるならば、結構な作業量を覚悟する必要があります。  
学習目的でないならば、こういった野良ビルドは最小限にした方がよいです。

例えば、ディストリビューションが提供する ImageMagick のパッケージが古すぎるとしても、他のパッケージ（autoconf、libpng
など）は大丈夫かも知れません。  
また、ImagiMagick 公式の RPM パッケージもありますね。  
楽はしておいた方がよいと思います。


CC BY-SA 3.0
2017-04-12T13:08:19.970
33959
2017-04-12T15:04:31.677
2017-04-12T15:04:31.677
3054
3054
33948
answer