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 でアップデートした各種モジュールのバージョンが違うので毎回微妙に動作が違うと思われます。
やっぱ、バージョンを統一した社内専用の自動インストールスクリプトみたいなのが必要っぽいですよね。
コメントやシェアをお願いします!