mrtg のインストールでGD関連のエラーが発生するときの対処方法

引き続き、サーバのセットアップをしているわけですが、いつも成功する mrtg が何故かインストールに失敗する。解決方法を見つけるのに苦労したので備忘録。

普通に、mrtg を ./configure すると、GD ライブラリがリンクできないと言われるエラー。実行結果を抜粋すると、こんな感じのエラーがでてます。

- スポンサーリンク -

checking for gdImageGif in -lgd... no
checking for gdImagePng in -lgd... no
checking for gdImagePng_jpg in -lgd... no
checking for gdImagePng_jpg_ft in -lgd... no
checking for gdImageGd in -lgd... no

checking gd.h usability... yes
checking gd.h presence... yes
checking for gd.h... yes

** Ooops, one of many bad things happened:

   a)  You don't have the GD library installed.
       Get it from http://www.boutell.com, compile it and
       use either --with-gd-lib=DIR and --with-gd-inc=DIR to specify
       its location. You might also have to use --with-z-inc,
             --with-z-lib and --with-png-inc, --with-png-lib for gd
             versions 1.6 and higher.  Check config.log for more
       information on the problem.

   b)  You have the GD library installed, but not the gd.h
       header file.  Download the source (see above) and use
       --with-gd-inc=DIR to specify where the file can be found.

   c)  You have the library and the header file installed, but
       you also have a shared GD library in the same directory. 
       Remove the shared library files and/or links (e.g. 
       libgd.so.2.0.0, libgd.so and libgd.so.2).  This is especially
             likely if you're using a recent (post 1.8.4) version of GD
       and didn't configure it with --disable-shared.

   d)  You have gd library installed and also it's headers, but you are
       missing libpng (and headers) or freetype (and headers)
       (mrtg does not use freetype, but if your copy of gd is precompiled
       against it, you have to install it ... 

   Consider following the instructions in doc/mrtg-unix-guide.txt

ここで、重要なのは、

checking for gdImageGif in -lgd... no
checking for gdImagePng in -lgd... no
checking for gdImagePng_jpg in -lgd... no
checking for gdImagePng_jpg_ft in -lgd... no
checking for gdImageGd in -lgd... no

の部分。GD ライブラリがリンクできないと言っている。で、ちなみに、GD をインストールする際にはいつもはこんな感じ。

cd /usr/local/src/
wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
tar xvfz gd-2.0.33.tar.gz
cd gd-2.0.33
./configure --with-pic
make install

でインストールしてうまくいるわけですが、どうも今回はダメみたい。もう一度エラーの内容をよく見ると、c) と d) あたりがヒントのようです。つまりは、freetype と shared を disable にする必要があるみたい。

cd /usr/local/src/
wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
tar xvfz gd-2.0.33.tar.gz
cd gd-2.0.33
./configure --disable-shared --without-freetype --without-jpeg
make install

で、続いて共有ライブラリを削除する。

rm -rf /usr/local/lib/libgd.so /usr/local/lib/libgd.so.2 /usr/local/lib/libgd.so.2.0.0 

これで、mrtg が正常にインストールできました。サーバのセットアップって、毎回やる度に微妙に挙動が違って大変です。。。多分、up2date や yum でアップデートした各種モジュールのバージョンが違うので毎回微妙に動作が違うと思われます。

やっぱ、バージョンを統一した社内専用の自動インストールスクリプトみたいなのが必要っぽいですよね。

- スポンサーリンク -