설치 환경

OS : CentOS 5.4 i386
Web : Apache2
CGG : gcc version 4.1.2
Perl : 5.8.8


아래와 같은 라이브러리가 필요하다. 웹에서 검색하여 다운 받도록 하자.

GD-2.0.33
ZLIB-1.2.3
LIBPNG-1.2.8
FREETYPE-2.1.10
RRDTOOL-1.2.12
libart-lgpl-2.1.10


설치에 앞서 환경변수를 설정한다.

[root@mrtg ~]# BUILD_DIR=/usr/local/rrdbuild
[root@mrtg ~]# INSTALL_DIR=/usr/local/rrdtool-1.2.12
[root@mrtg ~]# export BUILD_DIR INSTALL_DIR



STEP 1.

zlib부터 설치를 시작한다.

[root@mrtg ~]# cd /usr/local
[root@mrtg local]# mkdir -p rrdbuild
[root@mrtg local]# cd rrdbuild
[root@mrtg rrdbuild]# lftpget http://google-desktop-for-linux-mirror.googlecode.com/files/zlib-1.2.3.tar.gz
[root@mrtg rrdbuild]# tar xvfz zlib-1.2.3.tar.gz
zlib/
zlib/1.2.3/
zlib/1.2.3/ChangeLog
zlib/1.2.3/FAQ
zlib/1.2.3/INDEX
zlib/1.2.3/Makefile
zlib/1.2.3/Makefile.in
zlib/1.2.3/README
zlib/1.2.3/adler32.c
zlib/1.2.3/algorithm.txt
zlib/1.2.3/compress.c
zlib/1.2.3/configure
zlib/1.2.3/crc32.c
.................... 생략 .......................
zlib/1.2.3/projects/visualc6/zlib.dsp
zlib/1.2.3/projects/visualc6/zlib.dsw
zlib/1.2.3/qnx/
zlib/1.2.3/qnx/package.qpg
zlib/1.2.3/win32/
zlib/1.2.3/win32/DLL_FAQ.txt
zlib/1.2.3/win32/Makefile.bor
zlib/1.2.3/win32/Makefile.emx
zlib/1.2.3/win32/Makefile.gcc
zlib/1.2.3/win32/Makefile.msc
zlib/1.2.3/win32/VisualC.txt
zlib/1.2.3/win32/zlib.def
zlib/1.2.3/win32/zlib1.rc

[root@mrtg rrdbuild]# CFLAGS="-O3 -fPIC"
[root@mrtg rrdbuild]# export CFLAGS
[root@mrtg rrdbuild]# cd zlib
[root@mrtg zlib]# cd 1.2.3
[root@mrtg 1.2.3]# ./configure --prefix=$BUILD_DIR/lb
Checking for gcc...
Building static library libz.a version 1.2.3 with gcc.
Checking for unistd.h... Yes.
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()
Checking for vsnprintf() in stdio.h... Yes.
Checking for return value of vsnprintf()... Yes.
Checking for errno.h... Yes.
Checking for mmap support... Yes.
[root@mrtg 1.2.3]# make
gcc -O3 -fPIC -DUSE_MMAP   -c -o example.o example.c
gcc -O3 -fPIC -DUSE_MMAP   -c -o adler32.o adler32.c
gcc -O3 -fPIC -DUSE_MMAP   -c -o compress.o compress.c
gcc -O3 -fPIC -DUSE_MMAP   -c -o crc32.o crc32.c
gcc -O3 -fPIC -DUSE_MMAP   -c -o gzio.o gzio.c
gcc -O3 -fPIC -DUSE_MMAP   -c -o uncompr.o uncompr.c
gcc -O3 -fPIC -DUSE_MMAP   -c -o deflate.o deflate.c
gcc -O3 -fPIC -DUSE_MMAP   -c -o trees.o trees.c
gcc -O3 -fPIC -DUSE_MMAP   -c -o zutil.o zutil.c
gcc -O3 -fPIC -DUSE_MMAP   -c -o inflate.o inflate.c
gcc -O3 -fPIC -DUSE_MMAP   -c -o infback.o infback.c
gcc -O3 -fPIC -DUSE_MMAP   -c -o inftrees.o inftrees.c
gcc -O3 -fPIC -DUSE_MMAP   -c -o inffast.o inffast.c
ar rc libz.a adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o zutil.o inflate.o infback.o inftrees.o inffast.o
gcc -O3 -fPIC -DUSE_MMAP -o example example.o -L. libz.a
gcc -O3 -fPIC -DUSE_MMAP   -c -o minigzip.o minigzip.c
gcc -O3 -fPIC -DUSE_MMAP -o minigzip minigzip.o -L. libz.a

[root@mrtg 1.2.3]# make install
cp zlib.h zconf.h /usr/local/rrdbuild/lb/include
chmod 644 /usr/local/rrdbuild/lb/include/zlib.h /usr/local/rrdbuild/lb/include/zconf.h
cp libz.a /usr/local/rrdbuild/lb/lib
cd /usr/local/rrdbuild/lb/lib; chmod 755 libz.a
cd /usr/local/rrdbuild/lb/lib; if test -f libz.so.1.2.3; then \
          rm -f libz.so libz.so.1; \
          ln -s libz.so.1.2.3 libz.so; \
          ln -s libz.so.1.2.3 libz.so.1; \
          (ldconfig || true)  >/dev/null 2>&1; \
        fi
cp zlib.3 /usr/local/rrdbuild/lb/share/man/man3
chmod 644 /usr/local/rrdbuild/lb/share/man/man3/zlib.3

[root@mrtg 1.2.3]#

zlib 설치가 완료 되었다.




STEP 2.

libpng를 설치한다.

[root@mrtg rrdbuild]# cd /usr/local/rrdbuild
[root@mrtg rrdbuild]# lftpget ftp://ftp.kr.freebsd.org/pub/xorg/X11R7.0/src/extras/libpng-1.2.8-config.tar.gz
[root@mrtg rrdbuild]# tar xvfz libpng-1.2.8-config.tar.gz
libpng-1.2.8-config/
libpng-1.2.8-config/contrib/
libpng-1.2.8-config/contrib/gregbook/
libpng-1.2.8-config/contrib/gregbook/writepng.h
libpng-1.2.8-config/contrib/gregbook/Makefile.sgi
libpng-1.2.8-config/contrib/gregbook/Makefile.unx
libpng-1.2.8-config/contrib/gregbook/Makefile.w32
libpng-1.2.8-config/contrib/gregbook/README
libpng-1.2.8-config/contrib/gregbook/makevms.com
libpng-1.2.8-config/contrib/gregbook/readpng.c
libpng-1.2.8-config/contrib/gregbook/readpng.h
libpng-1.2.8-config/contrib/gregbook/readpng2.c
libpng-1.2.8-config/contrib/gregbook/readpng2.h
libpng-1.2.8-config/contrib/gregbook/rpng-win.c
libpng-1.2.8-config/contrib/gregbook/rpng-x.c
libpng-1.2.8-config/contrib/gregbook/rpng2-win.c
libpng-1.2.8-config/contrib/gregbook/rpng2-x.c
..................... 생략 ...................
libpng-1.2.8-config/autogen.sh
libpng-1.2.8-config/config.guess
libpng-1.2.8-config/config.h.in
libpng-1.2.8-config/config.sub
libpng-1.2.8-config/configure.ac
libpng-1.2.8-config/depcomp
libpng-1.2.8-config/install-sh
libpng-1.2.8-config/missing
libpng-1.2.8-config/ltmain.sh
libpng-1.2.8-config/mkinstalldirs
libpng-1.2.8-config/test-pngtest.sh

[root@mrtg rrdbuild]# CPPFLAGS=-I$BUILD_DIR/lb/include
[root@mrtg rrdbuild]# LDFLAGS=-L$BUILD_DIR/lb/lib
[root@mrtg rrdbuild]# CFLAGS="-O3 -fPIC"
[root@mrtg rrdbuild]# export CPPFLAGS LDFLAGS CFLAGS
[root@mrtg rrdbuild]# cd libpng-1.2.8-config
[root@mrtg libpng-1.2.8-config]# ./configure --prefix=$BUILD_DIR/lb --disable-shared
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
..................... 생략 ......................
checking for memset... yes
checking for pow... no
checking for strrchr... yes
checking for sqrt... no
checking for sqrt in -lm... yes
checking for zlibVersion in -lz... yes
checking pkgconfig directory... ${prefix}/lib/pkgconfig
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands

[root@mrtg libpng-1.2.8-config]# make
make  all-am
make[1]: Entering directory `/usr/local/rrdbuild/libpng-1.2.8-config'
if /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.     -O3 -fPIC -MT png.lo -MD -MP -MF ".deps/png.Tpo" \
          -c -o png.lo `test -f 'png.c' || echo './'`png.c; \
        then mv ".deps/png.Tpo" ".deps/png.Plo"; \
........................ 생략 ......................
( cat ./scripts/libpng-config-head.in; \
        echo prefix=\"/usr/local/rrdbuild/lb\"; \
        echo I_opts=\"-I/usr/local/rrdbuild/lb/include\"; \
        echo L_opts=\"-L/usr/local/rrdbuild/lb/lib\"; \
        echo R_opts=\"-Wl,-rpath,/usr/local/rrdbuild/lb/lib\"; \
        echo libs=\"-lpng12 -lz -lm\"; \
        cat ./scripts/libpng-config-body.in ) > libpng-config
cp libpng-config libpng12-config
make[1]: Leaving directory `/usr/local/rrdbuild/libpng-1.2.8-config'

[root@mrtg libpng-1.2.8-config]# make install
make[1]: Entering directory `/usr/local/rrdbuild/libpng-1.2.8-config'
/bin/sh ./mkinstalldirs /usr/local/rrdbuild/lb/bin
mkdir -p -- /usr/local/rrdbuild/lb/bin
 /usr/bin/install -c libpng-config /usr/local/rrdbuild/lb/bin/libpng-config
 /usr/bin/install -c libpng12-config /usr/local/rrdbuild/lb/bin/libpng12-config
/bin/sh ./mkinstalldirs /usr/local/rrdbuild/lb/lib
 /bin/sh ./libtool --mode=install /usr/bin/install -c  libpng12.la /usr/local/rrdbuild/lb/lib/libpng12.la
/usr/bin/install -c .libs/libpng12.lai /usr/local/rrdbuild/lb/lib/libpng12.la
......................... 생략 .........................
mkdir -p -- /usr/local/rrdbuild/lb/man/man5
 /usr/bin/install -c -m 644 ./png.5 /usr/local/rrdbuild/lb/man/man5/png.5
/bin/sh ./mkinstalldirs /usr/local/rrdbuild/lb/include/libpng
mkdir -p -- /usr/local/rrdbuild/lb/include/libpng
 /usr/bin/install -c -m 644 png.h /usr/local/rrdbuild/lb/include/libpng/png.h
 /usr/bin/install -c -m 644 pngconf.h /usr/local/rrdbuild/lb/include/libpng/pngconf.h
make[1]: Leaving directory `/usr/local/rrdbuild/libpng-1.2.8-config'
[root@mrtg libpng-1.2.8-config]#

libpng 설치가 완료 되었다.




STEP 3.

freetype2를 설치한다.

[root@mrtg libpng-1.2.8-config]# cd /usr/local/rrdbuild
[root@mrtg rrdbuild]# lftpget ftp://ftp.netlabs.org/pub/Cairo/cairo-1.0.2-2005.11.01/cairo-1.0.2-os2-deps/freetype-2.1.10.tar.gz
[root@mrtg freetype-2.1.10]# tar xvfz freetype-2.1.10.tar.gz
....................... 생략 .........................
freetype-2.1.10/src/type42/type42.c
freetype-2.1.10/src/winfonts/
freetype-2.1.10/src/winfonts/fnterrs.h
freetype-2.1.10/src/winfonts/Jamfile
freetype-2.1.10/src/winfonts/module.mk
freetype-2.1.10/src/winfonts/rules.mk
freetype-2.1.10/src/winfonts/winfnt.c
freetype-2.1.10/src/winfonts/winfnt.h

[root@mrtg rrdbuild]# CPPFLAGS=-I$BUILD_DIR/lb/include
[root@mrtg rrdbuild]# LDFLAGS=-L$BUILD_DIR/lb/lib
[root@mrtg rrdbuild]# CFLAGS="-O3 -fPIC"
[root@mrtg rrdbuild]# export CPPFLAGS LDFLAGS CFLAGS
[root@mrtg rrdbuild]# cd freetype-2.1.10
[root@mrtg freetype-2.1.10]# ./configure --prefix=$BUILD_DIR/lb --disable-shared
cd builds/unix; ./configure --prefix=/usr/local/rrdbuild/lb --disable-shared
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
..................... 생략 .......................
If this does not correspond to your system or settings please remove the file
`config.mk' from this directory then read the INSTALL file for help.

Otherwise, simply type `make' again to build the library,
or `make refdoc' to build the API reference (the latter needs python).

make: Nothing to be done for `unix'.
[root@mrtg freetype-2.1.10]# set env GNUMAKE /usr/local/bin/make
[root@mrtg freetype-2.1.10]# ./configure --prefix=$BUILD_DIR/lb --disable-shared
cd builds/unix; ./configure --prefix=/usr/local/rrdbuild/lb --disable-shared
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for gcc... gcc
........................ 생략 .........................
  configuration rules         ./builds/unix/unix.mk

If this does not correspond to your system or settings please remove the file
`config.mk' from this directory then read the INSTALL file for help.

Otherwise, simply type `make' again to build the library,
or `make refdoc' to build the API reference (the latter needs python).

make: Nothing to be done for `unix'.
[root@mrtg freetype-2.1.10]# make
.................... 생략 ...................
2.1.10/objs/ftlzw.o /usr/local/rrdbuild/freetype-2.1.10/objs/otvalid.o /usr/local/rrdbuild/freetype-2.1.10/objs/pcf.o /usr/local/rrdbuild/freetype-2.1.10/objs/pfr.o /usr/local/rrdbuild/freetype-2.1.10/objs/psaux.o /usr/local/rrdbuild/freetype-2.1.10/objs/pshinter.o /usr/local/rrdbuild/freetype-2.1.10/objs/psnames.o /usr/local/rrdbuild/freetype-2.1.10/objs/raster.o /usr/local/rrdbuild/freetype-2.1.10/objs/sfnt.o /usr/local/rrdbuild/freetype-2.1.10/objs/smooth.o /usr/local/rrdbuild/freetype-2.1.10/objs/truetype.o /usr/local/rrdbuild/freetype-2.1.10/objs/type1.o /usr/local/rrdbuild/freetype-2.1.10/objs/type42.o /usr/local/rrdbuild/freetype-2.1.10/objs/winfnt.o
ranlib /usr/local/rrdbuild/freetype-2.1.10/objs/.libs/libfreetype.a
creating /usr/local/rrdbuild/freetype-2.1.10/objs/libfreetype.la
(cd /usr/local/rrdbuild/freetype-2.1.10/objs/.libs && rm -f libfreetype.la && ln -s ../libfreetype.la libfreetype.la)

[root@mrtg freetype-2.1.10]# make install
/usr/bin/install -c -m 644 ./builds/unix/ftconfig.h \
          /usr/local/rrdbuild/lb/include/freetype2/freetype/config/ftconfig.h
/usr/bin/install -c -m 755 ./builds/unix/freetype-config \
          /usr/local/rrdbuild/lb/bin/freetype-config
/usr/bin/install -c -m 644 ./builds/unix/freetype2.m4 \
          /usr/local/rrdbuild/lb/share/aclocal/freetype2.m4
/usr/bin/install -c -m 644 ./builds/unix/freetype2.pc \
          /usr/local/rrdbuild/lb/lib/pkgconfig/freetype2.pc

[root@mrtg freetype-2.1.10]#

freetype2 설치가 완료 되었다.




STEP 4.

libart-lgpl을 설치한다.

[root@mrtg freetype-2.1.10]# cd /usr/local/rrdbuild
[root@mrtg rrdbuild]# lftpget http://ftp.se.debian.org/pub/gnome/sources/libart_lgpl/2.3/libart_lgpl-2.3.17.tar.gz
[root@mrtg rrdbuild]# tar xvfz libart_lgpl-2.3.17.tar.gz
libart_lgpl-2.3.17/
libart_lgpl-2.3.17/art_svp_vpath.h
libart_lgpl-2.3.17/art_svp_vpath_stroke.c
libart_lgpl-2.3.17/art_rgb_affine.c
libart_lgpl-2.3.17/art_svp_ops.h
libart_lgpl-2.3.17/art_uta_vpath.h
.................. 생략 ....................
libart_lgpl-2.3.17/art_render_gradient.c
libart_lgpl-2.3.17/art_rgb_affine.h
libart_lgpl-2.3.17/art_misc.c
libart_lgpl-2.3.17/art_render.c
libart_lgpl-2.3.17/art_rgb_pixbuf_affine.c

[root@mrtg rrdbuild]# cd libart_lgpl-2.3.17
[root@mrtg libart_lgpl-2.3.17]# CFLAGS="-O3 -fPIC"
[root@mrtg libart_lgpl-2.3.17]# export CPPFLAGS
[root@mrtg libart_lgpl-2.3.17]# ./configure --prefix=$BUILD_DIR/lb --disable-shared
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking whether make sets $(MAKE)... yes
checking for working aclocal-1.4... found
................... 생략 .....................
config.status: creating libart-2.0.pc
config.status: creating libart-2.0-uninstalled.pc
config.status: creating libart-zip
config.status: creating config.h
config.status: executing default-1 commands
config.status: executing default commands
[root@mrtg libart_lgpl-2.3.17]# make

.................... 생략 ......................
testart.c:520: warning: ?utput_svp_ppm?defined but not used
/bin/sh ./libtool --mode=link gcc  -O3 -fPIC -Wall -Wmissing-prototypes -L/usr/local/rrdbuild/lb/lib -o testart  testart.o ./libart_lgpl_2.la -lm
gcc -O3 -fPIC -Wall -Wmissing-prototypes -o testart testart.o  -L/usr/local/rrdbuild/lb/lib ./.libs/libart_lgpl_2.a -lm
gcc -DHAVE_CONFIG_H -I. -I. -I. -I. -I. -DLIBART_COMPILATION    -O3 -fPIC -Wall -Wmissing-prototypes -c testuta.c
/bin/sh ./libtool --mode=link gcc  -O3 -fPIC -Wall -Wmissing-prototypes -L/usr/local/rrdbuild/lb/lib -o testuta  testuta.o ./libart_lgpl_2.la -lm
gcc -O3 -fPIC -Wall -Wmissing-prototypes -o testuta testuta.o  -L/usr/local/rrdbuild/lb/lib ./.libs/libart_lgpl_2.a -lm
cp -f libart-config libart2-config

[root@mrtg libart_lgpl-2.3.17]# make install
make[1]: Entering directory `/usr/local/rrdbuild/libart_lgpl-2.3.17'
/bin/sh ./mkinstalldirs /usr/local/rrdbuild/lb/lib
/bin/sh ./libtool  --mode=install /usr/bin/install -c libart_lgpl_2.la /usr/local/rrdbuild/lb/lib/libart_lgpl_2.la
/usr/bin/install -c .libs/libart_lgpl_2.lai /usr/local/rrdbuild/lb/lib/libart_lgpl_2.la
/usr/bin/install -c .libs/libart_lgpl_2.a /usr/local/rrdbuild/lb/lib/libart_lgpl_2.a
ranlib /usr/local/rrdbuild/lb/lib/libart_lgpl_2.a
chmod 644 /usr/local/rrdbuild/lb/lib/libart_lgpl_2.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/rrdbuild/lb/lib
....................... 생략 .....................
 /usr/bin/install -c -m 644 art_vpath_bpath.h /usr/local/rrdbuild/lb/include/libart-2.0/libart_lgpl/art_vpath_bpath.h
 /usr/bin/install -c -m 644 art_vpath_dash.h /usr/local/rrdbuild/lb/include/libart-2.0/libart_lgpl/art_vpath_dash.h
 /usr/bin/install -c -m 644 art_vpath_svp.h /usr/local/rrdbuild/lb/include/libart-2.0/libart_lgpl/art_vpath_svp.h
 /usr/bin/install -c -m 644 libart.h /usr/local/rrdbuild/lb/include/libart-2.0/libart_lgpl/libart.h
 /usr/bin/install -c -m 644 libart-features.h /usr/local/rrdbuild/lb/include/libart-2.0/libart_lgpl/libart-features.h
make[1]: Leaving directory `/usr/local/rrdbuild/libart_lgpl-2.3.17'

[root@mrtg libart_lgpl-2.3.17]#

지금까지 설치한 라이브러리는 모두 static 형태이므로 라이브러리를 사용하기 위하여 ranlib을 사용한다.

[root@mrtg libart_lgpl-2.3.17]# ranlib $BUILD_DIR/lb/lib/*.a

libart-lgpl 설치가 완료 되었다.





STEP 5.

gd를 설치 한다.

[root@mrtg libart_lgpl-2.3.17]# cd /usr/local/rrdbuild
[root@mrtg rrdbuild]# lftpget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
[root@mrtg rrdbuild]# tar xvfz gd-2.0.33.tar.gz                              
gd-2.0.33/
gd-2.0.33/config/
gd-2.0.33/config/Makefile.am
gd-2.0.33/config/Makefile.in
............................ 생략 .............................
gd-2.0.33/test/Makefile.in
gd-2.0.33/test/gdtest.gd2
gd-2.0.33/test/gdtest.png
gd-2.0.33/test/gdtest_200_300_150_100.png
gd-2.0.33/test/gdtest_merge.png
gd-2.0.33/test/gdtest_wbmp_to_png.png

[root@mrtg rrdbuild]# cd gd-2.0.33
[root@mrtg gd-2.0.33]# CPPFLAGS=-I$BUILD_DIR/lb/include
[root@mrtg gd-2.0.33]# export CPPFLAGS
[root@mrtg gd-2.0.33]# ./configure --prefix=$BUILD_DIR/lb --disable-shared
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
........................ 생략 ......................
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config/Makefile
config.status: creating config/gdlib-config
config.status: creating test/Makefile
config.status: creating config.h
config.status: executing depfiles commands

[root@mrtg gd-2.0.33]# make
make  all-recursive
make[1]: Entering directory `/usr/local/rrdbuild/gd-2.0.33'
Making all in config
make[2]: Entering directory `/usr/local/rrdbuild/gd-2.0.33/config'
make[2]: Nothing to be done for `all'.
................... 생략 ................
gd_png.c:741: error: expected ')' before 'gdMalloc'
gd_png.c:798: error: expected ')' before 'gdMalloc'
make[2]: *** [gd_png.lo] Error 1
make[2]: Leaving directory `/usr/local/rrdbuild/gd-2.0.33'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/rrdbuild/gd-2.0.33'
make: *** [all] Error 2

[root@mrtg gd-2.0.33]# make install
Making install in config
make[1]: Entering directory `/usr/local/rrdbuild/gd-2.0.33/config'
make[2]: Entering directory `/usr/local/rrdbuild/gd-2.0.33/config'
test -z "/usr/local/rrdbuild/lb/bin" || mkdir -p -- "/usr/local/rrdbuild/lb/bin"
 /usr/bin/install -c 'gdlib-config' '/usr/local/rrdbuild/lb/bin/gdlib-config'
..................... 생략 ..................
gd_png.c:688: error: 'palette' undeclared (first use in this function)
gd_png.c:719: error: 'png_bytep' undeclared (first use in this function)
gd_png.c:719: error: 'row_pointers' undeclared (first use in this function)
gd_png.c:725: error: 'prow_pointers' undeclared (first use in this function)
gd_png.c:741: error: expected ')' before 'gdMalloc'
gd_png.c:798: error: expected ')' before 'gdMalloc'
make[1]: *** [gd_png.lo] Error 1
make[1]: Leaving directory `/usr/local/rrdbuild/gd-2.0.33'
make: *** [install-recursive] Error 1

[root@mrtg gd-2.0.33]#

gd 설치가 완료 되었다.

GD 컴파일시 위에서 설치한 라이브러리가 인식되는지 반드시 확인한다. freetype을 인식하지 못하는 경우가 있는데, 이때는 PATH에 /usr/local/rrdbuild/lb/bin or /usr/local/rrdbuild/lib/include를 추가한다.

[root@mrtg gd-2.0.33]# vi ~/.bash_profile

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH
unset USERNAME


아래와 같이 변경한다.

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/local/rrdbuild/lb/bin:/usr/local/rrdbuild/lib/include

export PATH
unset USERNAME


변경된 PATH를 적용 시키려면 아래와 같이 명령어를 입력한다.

[root@mrtg gd-2.0.33]# source ~/.bash_profile




STEP 6.

RRDTOOL을 설치한다.

[root@mrtg gd-2.0.33]# IR=-I$BUILD_DIR/lb/include
[root@mrtg gd-2.0.33]# CPPFLAGS="$IR $IR/libart-2.0 $IR/freetype2 $IR/libpng"
[root@mrtg gd-2.0.33]# LDFLAGS="-L$BUILD_DIR/lb/lib"
[root@mrtg gd-2.0.33]# CFLAGS=-O3
[root@mrtg gd-2.0.33]# export CPPFLAGS LDFLAGS CFLAGS
[root@mrtg gd-2.0.33]# cd /usr/local/rrdbuild
[root@mrtg rrdbuild]# lftpget ftp://ftp.free.fr/.mirrors1/ftp.netbsd.org/packages/distfiles/rrdtool-1.2.12.tar.gz
[root@mrtg rrdbuild]# tar xvfz rrdtool-1.2.12.tar.gz                                                                   
rrdtool-1.2.12/bindings/tcl/README
rrdtool-1.2.12/bindings/tcl/Makefile.am
rrdtool-1.2.12/bindings/tcl/Makefile.in
rrdtool-1.2.12/bindings/tcl/ifOctets.tcl.in
rrdtool-1.2.12/bindings/tcl/tclrrd.c
................... 생략 .....................
rrdtool-1.2.12/doc/rrdgraph_data.txt
rrdtool-1.2.12/doc/rrdresize.txt
rrdtool-1.2.12/doc/rrdtutorial.txt
rrdtool-1.2.12/doc/rrdtool-dump.dtd
rrdtool-1.2.12/doc/rrdtool-xport.dtd
[root@mrtg rrdbuild]# cd rrdtool-1.2.12
[root@mrtg rrdtool-1.2.12]#
[root@mrtg rrdtool-1.2.12]# ./configure --prefix=$INSTALL_DIR --disable-python --disable-tcl
..................... 생략 .....................
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing default commands
checking in... and out again
ordering CD from
http://people.ee.ethz.ch/~oetiker/wish .... just kidding ;-)

----------------------------------------------------------------
Config is DONE!

          With MMAP IO: yes
          Perl Modules: perl_piped perl_shared
           Perl Binary: /usr/bin/perl
          Perl Version: 5.8.8
          Perl Options: PREFIX=/usr/local/rrdtool-1.2.12 LIB=/usr/local/rrdtool-1.2.12/lib/perl/5.8.8
    Build Tcl Bindings: no
 Build Python Bindings: no
          Build rrdcgi: yes
       Build librrd MT: yes


Type 'make' to compile the software and use 'make install' to
install everything to: /usr/local/rrdtool-1.2.12.

       ... that wishlist is NO JOKE. If you find RRDtool useful
make me happy. Go to
http://people.ee.ethz.ch/oetiker/wish and
place an order.

                               -- Tobi Oetiker <tobi@oetiker.ch>
----------------------------------------------------------------

[root@mrtg rrdtool-1.2.12]# make clean
Making clean in examples
make[1]: Entering directory `/usr/local/rrdbuild/rrdtool-1.2.12/examples'
rm -rf .libs _libs
rm -f *.lo
make[1]: Leaving directory `/usr/local/rrdbuild/rrdtool-1.2.12/examples'
.................... 생략 ........................
make[1]: Leaving directory `/usr/local/rrdbuild/rrdtool-1.2.12/src'
Making clean in .
make[1]: Entering directory `/usr/local/rrdbuild/rrdtool-1.2.12'
test -z "config.cache" || rm -f config.cache
rm -rf .libs _libs
rm -f *.lo
make[1]: Leaving directory `/usr/local/rrdbuild/rrdtool-1.2.12'

[root@mrtg rrdtool-1.2.12]# make
.................... 생략 ........................
pod2html --infile=rrdtutorial.pod --outfile=rrdtutorial.html --noindex --htmlroot=. --podpath=. --title=rrdtutorial
ln -s ../bindings/perl-shared/RRDs.pm RRDs.pod
pod2html --infile=RRDs.pod --outfile=RRDs.html --noindex --htmlroot=. --podpath=. --title=RRDs
ln -s ../bindings/perl-piped/RRDp.pm RRDp.pod
pod2html --infile=RRDp.pod --outfile=RRDp.html --noindex --htmlroot=. --podpath=. --title=RRDp
make[2]: Leaving directory `/usr/local/rrdbuild/rrdtool-1.2.12/doc'
Making all in examples
make[2]: Entering directory `/usr/local/rrdbuild/rrdtool-1.2.12/examples'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/usr/local/rrdbuild/rrdtool-1.2.12/examples'
make[2]: Entering directory `/usr/local/rrdbuild/rrdtool-1.2.12'
make[2]: Nothing to be done for `all-am'.
make[2]: Leaving directory `/usr/local/rrdbuild/rrdtool-1.2.12'
make[1]: Leaving directory `/usr/local/rrdbuild/rrdtool-1.2.12'

[root@mrtg rrdtool-1.2.12]# make install
.................... 생략 ........................
 /usr/bin/install -c 'cgi-demo.cgi' '/usr/local/rrdtool-1.2.12/share/rrdtool/examples/cgi-demo.cgi'
 /usr/bin/install -c 'piped-demo.pl' '/usr/local/rrdtool-1.2.12/share/rrdtool/examples/piped-demo.pl'
 /usr/bin/install -c 'shared-demo.pl' '/usr/local/rrdtool-1.2.12/share/rrdtool/examples/shared-demo.pl'
 /usr/bin/install -c 'stripes.pl' '/usr/local/rrdtool-1.2.12/share/rrdtool/examples/stripes.pl'
 /usr/bin/install -c 'bigtops.pl' '/usr/local/rrdtool-1.2.12/share/rrdtool/examples/bigtops.pl'
 /usr/bin/install -c 'minmax.pl' '/usr/local/rrdtool-1.2.12/share/rrdtool/examples/minmax.pl'
 /usr/bin/install -c '4charts.pl' '/usr/local/rrdtool-1.2.12/share/rrdtool/examples/4charts.pl'
make[2]: Leaving directory `/usr/local/rrdbuild/rrdtool-1.2.12/examples'
make[1]: Leaving directory `/usr/local/rrdbuild/rrdtool-1.2.12/examples'
make[1]: Entering directory `/usr/local/rrdbuild/rrdtool-1.2.12'
make[2]: Entering directory `/usr/local/rrdbuild/rrdtool-1.2.12'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/usr/local/rrdbuild/rrdtool-1.2.12'
make[1]: Leaving directory `/usr/local/rrdbuild/rrdtool-1.2.12'

[root@mrtg rrdtool-1.2.12]#





STEP 7.

MRTG를 설치 한다.

[root@mrtg rrdtool-1.2.12]# cd /usr/local/rrdbuild
[root@mrtg rrdbuild]# lftpget ftp://ftp.ps.pl/dsk0/ftp.freebsd.org/FreeBSD/ports/distfiles/mrtg-2.12.2.tar.gz
[root@mrtg mrtg-2.12.2]# tar xvfz mrtg-2.12.2.tar.gz
....................... 생략 ........................
mrtg-2.12.2/doc/mrtg-squid.1
mrtg-2.12.2/doc/mrtg-squid.html
mrtg-2.12.2/doc/mrtg-squid.pod
mrtg-2.12.2/doc/mrtg-squid.txt
mrtg-2.12.2/doc/mrtg-unix-guide.1
mrtg-2.12.2/doc/mrtg-unix-guide.html
mrtg-2.12.2/doc/mrtg-unix-guide.pod
mrtg-2.12.2/doc/mrtg-unix-guide.txt
mrtg-2.12.2/doc/mrtg-webserver.1
mrtg-2.12.2/doc/mrtg-webserver.html
mrtg-2.12.2/doc/mrtg-webserver.pod
mrtg-2.12.2/doc/mrtg-webserver.txt
mrtg-2.12.2/doc/mrtg.1
mrtg-2.12.2/doc/mrtg.html
mrtg-2.12.2/doc/mrtg.pod
mrtg-2.12.2/doc/mrtg.txt

[root@mrtg rrdbuild]# cd mrtg-2.12.2
[root@mrtg mrtg-2.12.2]# ./configure --prefix=/usr/local/mrtg-2  --with-gd=/usr/loca/rrdbuild/lb --with-z=/usr/local/rrdbuild/lb --with-png=/usr/local/rrdbuild/lb
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
....................... 생략 ........................
** 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
[root@mrtg mrtg-2.12.2]# --with-z=/usr/local/rrdbuild/lb  -with-png=/usr/local/rrdbuild/lb
-bash: --with-z=/usr/local/rrdbuild/lb: No such file or directory

[root@mrtg mrtg-2.12.2]#

gd관련 라이브러리가 설치되지 않아서 mrtg를 설치 할 수 없으므로, 관련 라이브러리를 yum을 통해 설치한다.

[root@mrtg mrtg-2.12.2]# yum -y install gd-devel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * addons:
ftp.daum.net
 * base: ftp.daum.net
 * extras: ftp.daum.net
 * updates: ftp.daum.net
addons                                                                                      |  951 B     00:00    
base                                                                                      | 2.1 kB     00:00    
extras                                                                                      | 2.1 kB     00:00    
updates                                                                                      | 1.9 kB     00:00    
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package gd-devel.i386 0:2.0.33-9.4.el5_4.2 set to be updated
--> Processing Dependency: gd = 2.0.33-9.4.el5_4.2 for package: gd-devel
--> Processing Dependency: freetype-devel for package: gd-devel
--> Processing Dependency: libpng-devel for package: gd-devel
--> Processing Dependency: libXpm-devel for package: gd-devel
--> Processing Dependency: libX11-devel for package: gd-devel
--> Processing Dependency: libjpeg-devel for package: gd-devel
--> Processing Dependency: fontconfig-devel for package: gd-devel
--> Running transaction check
---> Package fontconfig-devel.i386 0:2.4.1-7.el5 set to be updated
---> Package freetype-devel.i386 0:2.2.1-21.el5_3 set to be updated
---> Package gd.i386 0:2.0.33-9.4.el5_4.2 set to be updated
---> Package libX11-devel.i386 0:1.0.3-11.el5 set to be updated
--> Processing Dependency: xorg-x11-proto-devel >= 7.1-2 for package: libX11-devel
--> Processing Dependency: libXau-devel for package: libX11-devel
--> Processing Dependency: libXdmcp-devel for package: libX11-devel
---> Package libXpm-devel.i386 0:3.5.5-3 set to be updated
---> Package libjpeg-devel.i386 0:6b-37 set to be updated
---> Package libpng-devel.i386 2:1.2.10-7.1.el5_3.2 set to be updated
--> Running transaction check
---> Package libXau-devel.i386 0:1.0.1-3.1 set to be updated
---> Package libXdmcp-devel.i386 0:1.0.1-2.1 set to be updated
---> Package xorg-x11-proto-devel.i386 0:7.1-13.el5 set to be updated
--> Processing Dependency: mesa-libGL-devel for package: xorg-x11-proto-devel
--> Running transaction check
---> Package mesa-libGL-devel.i386 0:6.5.1-7.7.el5 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================================
 Package                       Arch                             Version                          Repository                            Size
===========================================================================================================
Installing:
 gd-devel                       i386                       2.0.33-9.4.el5_4.2                      updates                               97 k
Installing for dependencies:
 fontconfig-devel             i386                            2.4.1-7.el5                             base                                168 k
 freetype-devel               i386                            2.2.1-21.el5_3                         base                                146 k
 libX11-devel                  i386                            1.0.3-11.el5                            base                                661 k
 libXau-devel                  i386                             1.0.1-3.1                              base                                 11 k
 libXdmcp-devel             i386                             1.0.1-2.1                               base                                7.5 k
 libXpm-devel                 i386                              3.5.5-3                                base                                31 k
 libjpeg-devel                 i386                               6b-37                                 base                               105 k
 libpng-devel                  i386                       2:1.2.10-7.1.el5_3.2                      base                               181 k
 mesa-libGL-devel         i386                             6.5.1-7.7.el5                          base                               466 k
 xorg-x11-proto-devel     i386                              7.1-13.el5                             base                              247 k
Updating for dependencies:
 gd                       i386                                 2.0.33-9.4.el5_4.2                      updates                            154 k

Transaction Summary
===================================================================================================================================================================================================================================================================================
Install     11 Package(s)        
Update       1 Package(s)        
Remove       0 Package(s)        

Total download size: 2.2 M
Downloading Packages:
(1/12): libXdmcp-devel-1.0.1-2.1.i386.rpm                                                                           | 7.5 kB     00:00    
(2/12): libXau-devel-1.0.1-3.1.i386.rpm                                                                               |  11 kB     00:00    
(3/12): libXpm-devel-3.5.5-3.i386.rpm                                                                                 |  31 kB     00:00    
(4/12): gd-devel-2.0.33-9.4.el5_4.2.i386.rpm                                                                         |  97 kB     00:00    
(5/12): libjpeg-devel-6b-37.i386.rpm                                                                                   | 105 kB     00:00    
(6/12): freetype-devel-2.2.1-21.el5_3.i386.rpm                                                                      | 146 kB     00:00    
(7/12): gd-2.0.33-9.4.el5_4.2.i386.rpm                                                                                 | 154 kB     00:00    
(8/12): fontconfig-devel-2.4.1-7.el5.i386.rpm                                                                        | 168 kB     00:00    
(9/12): libpng-devel-1.2.10-7.1.el5_3.2.i386.rpm                                                                    | 181 kB     00:00    
(10/12): xorg-x11-proto-devel-7.1-13.el5.i386.rpm                                                                | 247 kB     00:00    
(11/12): mesa-libGL-devel-6.5.1-7.7.el5.i386.rpm                                                                | 466 kB     00:00    
(12/12): libX11-devel-1.0.3-11.el5.i386.rpm                                                                          | 661 kB     00:00    
------------------------------------------------------------------------------------------------------------Total                                                                                                                1.6 MB/s | 2.2 MB     00:01    
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897
base/gpgkey                                                                                                                   | 1.5 kB     00:00    
Importing GPG key 0xE8562897 "CentOS-5 Key (CentOS 5 Official Signing Key) <
centos-5-key@centos.org>" from /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : freetype-devel                                                                                               1/13
  Installing     : fontconfig-devel                                                                                             2/13
  Installing     : libpng-devel                                                                                                  3/13
  Installing     : libXau-devel                                                                                                  4/13
  Installing     : libjpeg-devel                                                                                                  5/13
  Updating       : gd                                                                                                              6/13
  Installing     : xorg-x11-proto-devel                                                                                      7/13
  Installing     : libXdmcp-devel                                                                                              8/13
  Installing     : libX11-devel                                                                                                   9/13
  Installing     : mesa-libGL-devel                                                                                          10/13
  Installing     : libXpm-devel                                                                                                11/13
  Installing     : gd-devel                                                                                                      12/13
  Cleanup        : gd                                                                                                             13/13

Installed:
  gd-devel.i386 0:2.0.33-9.4.el5_4.2
Dependency Installed:
  fontconfig-devel.i386 0:2.4.1-7.el5    freetype-devel.i386 0:2.2.1-21.el5_3    libX11-devel.i386 0:1.0.3-11.el5  libXau-devel.i386 0:1.0.1-3.1  libXdmcp-devel.i386 0:1.0.1-2.1  libXpm-devel.i386 0:3.5.5-3  libjpeg-devel.i386 0:6b-37  libpng-devel.i386 2:1.2.10-7.1.el5_3.2
  mesa-libGL-devel.i386 0:6.5.1-7.7.el5  xorg-x11-proto-devel.i386 0:7.1-13.el5

Dependency Updated:
  gd.i386 0:2.0.33-9.4.el5_4.2                                                                                                                                                                                                                                                    

Complete!
[root@mrtg mrtg-2.12.2]#

gd 관련 라이브러리를 설치 하였으므로, mrtg를 다시 설치 해 본다.

[root@mrtg mrtg-2.12.2]# ./configure --prefix=/usr/local/mrtg-2  --with-gd=/usr/loca/rrdbuild/lb --with-z=/usr/local/rrdbuild/lb --with-png=/usr/local/rrdbuild/lb
........................ 생략 ........................
checking for gdImagePng_jpg in -lgd... no
checking for gdImagePng_jpg_ft in -lgd... no
checking for gdImageGd in -lgd... yes
checking gd.h usability... yes
checking gd.h presence... yes
checking for gd.h... yes
checking the weather... (cached) it's fine
checking if we can use GCC-specific compiler options... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
ordering CD from
http://people.ee.ethz.ch/~oetiker/wish .... just kidding ;-)

----------------------------------------------------------------
Config is DONE!

Type 'make' to compile the software

       ... that wishlist mentioned above does really exist. So if
you feel like showing your appreciation for MRTG, this is the
place to go. I just love CDs and DVDs

                            -- Tobi Oetiker <oetiker@ee.ethz.ch>
----------------------------------------------------------------
[root@mrtg mrtg-2.12.2]# make
gcc -I/usr/local/rrdbuild/lb/include -I/usr/local/rrdbuild/lb/include/libart-2.0 -I/usr/local/rrdbuild/lb/include/freetype2 -I/usr/local/rrdbuild/lb/include/libpng -I/usr/loca/rrdbuild/lb -I/usr/local/rrdbuild/lb -I/usr/local/rrdbuild/lb -DGFORM_GD=gdImagePng -O3 -Wall -Wpointer-arith -Wcast-align -Wmissing-declarations -Wnested-externs -Winline -W -DHAVE_CONFIG_H -c ./src/rateup.c -o bin/rateup.o
./src/rateup.c: In function ?mage?
./src/rateup.c:1142: warning: pointer targets in passing argument 5 of ?dImageString?differ in signedness
LD_RUN_PATH=/usr/local/rrdbuild/lb:/usr/local/rrdbuild/lb:/usr/loca/rrdbuild/lb gcc bin/rateup.o -o bin/rateup -L/usr/local/rrdbuild/lb/lib -L/usr/loca/rrdbuild/lb -L/usr/local/rrdbuild/lb -L/usr/local/rrdbuild/lb  -Wl,-Bstatic -lgd -lpng -lz -Wl,-Bdynamic  -lm
/usr/bin/perl -0777 -p -i~ -e
's@^#!\s*/\S*perl@#! /usr/bin/perl@' ./bin/cfgmaker ./bin/indexmaker ./bin/mrtg
/usr/bin/perl -0777 -p -i~ -e
's@GRAPHFMT="...";@GRAPHFMT="png";@' ./bin/mrtg ./bin/indexmaker
[root@mrtg mrtg-2.12.2]# make install
/bin/sh ./mkinstalldirs /usr/local/mrtg-2/bin
mkdir /usr/local/mrtg-2
mkdir /usr/local/mrtg-2/bin
for x in ./bin/mrtg ./bin/cfgmaker ./bin/indexmaker; do \
          /usr/bin/install -c -m 755 $x /usr/local/mrtg-2/bin; done
for x in bin/rateup; do \
          /usr/bin/install -c -m 755 $x /usr/local/mrtg-2/bin; done
/bin/sh ./mkinstalldirs /usr/local/mrtg-2/lib/mrtg2/Pod
mkdir /usr/local/mrtg-2/lib
mkdir /usr/local/mrtg-2/lib/mrtg2
mkdir /usr/local/mrtg-2/lib/mrtg2/Pod
for x in ./lib/mrtg2/*.pm; do \
          /usr/bin/install -c -m 644 $x /usr/local/mrtg-2/lib/mrtg2; done
for x in ./lib/mrtg2/Pod/*.pm; do \
          /usr/bin/install -c -m 644 $x /usr/local/mrtg-2/lib/mrtg2/Pod; done
/bin/sh ./mkinstalldirs /usr/local/mrtg-2/share/mrtg2/icons
mkdir /usr/local/mrtg-2/share
mkdir /usr/local/mrtg-2/share/mrtg2
mkdir /usr/local/mrtg-2/share/mrtg2/icons
for x in ./images/*.gif ./images/*.png; do \
          /usr/bin/install -c -m 644 $x /usr/local/mrtg-2/share/mrtg2/icons; done
/bin/sh ./mkinstalldirs /usr/local/mrtg-2/share/doc/mrtg2
mkdir /usr/local/mrtg-2/share/doc
mkdir /usr/local/mrtg-2/share/doc/mrtg2
(cd .; for x in COPYING COPYRIGHT README CHANGES THANKS doc/*.pod doc/*.html doc/*.wml doc/*.txt doc/*.png; do \
          /usr/bin/install -c -m 644 $x /usr/local/mrtg-2/share/doc/mrtg2; done)
/bin/sh ./mkinstalldirs /usr/local/mrtg-2/man/man1
mkdir /usr/local/mrtg-2/man
mkdir /usr/local/mrtg-2/man/man1
for x in ./doc/*.1; do \
          /usr/bin/install -c -m 644 $x /usr/local/mrtg-2/man/man1; done

[root@mrtg mrtg-2.12.2]#


MRTG 설치가 완료 되었으며, MRTG나 RRDTOOL을 사용하기 위해서 PATH를 지정하여 편리하게 사용하기로 한다.
[root@mrtg mrtg-2.12.2]# vi ~root/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin:/usr/local/rrdbuild/lb/bin:/usr/local/rrdbuild/lib/include:/usr/local/mrtg-2/bin/:/usr/local/rrdtool-1.2.12/bin

export PATH
unset USERNAME



위에 굵게 표시 된 부분을 추가한다.

[root@mrtg mrtg-2.12.2]# source ~root/.bash_profile
[root@mrtg mrtg-2.12.2]#

변경된 PATH를 불러와 설정을 적용 시킨다. 이 설정 이후부터는 서버를 재부팅 하더라도 PATH가 적용된다.

[root@mrtg mrtg-2.12.2]# mrtg
-----------------------------------------------------------------------
ERROR: Mrtg will most likely not work properly when the environment
       variable LANG is set to UTF-8. Please run mrtg in an environment
       where this is not the case. Try the following command to start:

       env LANG=C /usr/local/mrtg-2/bin/mrtg 
-----------------------------------------------------------------------

[root@mrtg mrtg-2.12.2]#

MRTG가 제대로 적용 되었는지 확인하기 위해서 mrtg를 실행시켰다.
mrtg가 실행은 되었지만, 언어 설정이 맞지 않아 동작을 하지 않으므로 이에 맞게 설정을 변경 해주어야 한다.
X윈도에서 한글로 사용하는 것이 편리하다는 생각으로 한글로 설치도 해보고, 영문으로 설치도 해보았는데 근본적으로 위에 맡게 언어를 설정해주면 이 문제가 해결 되었다.

[root@mrtg mrtg-2.12.2]# vi /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"


아래와 같이 변경하고 저장한다.

LANG="C"
SYSFONT="latarcyrheb-sun16"



[root@mrtg mrtg-2.12.2]# reboot

Broadcast message from root (pts/1) (Thu Mar 25 11:52:28 2010):

The system is going down for reboot NOW!
[root@mrtg mrtg-2.12.2]#

재부팅을 하여도 설정사항이 제대로 적용 되었는지 확인하기 위해서 재부팅을 하였다.



서버가 부팅 된 후 MRTG가 제대로 동작하는지 확인 해 본다.

[root@mrtg ~]# mrtg
Usage: mrtg <config-file>

mrtg-2.12.2 is the Multi Router Traffic Grapher.

If you want to know more about this tool, you might want
to read the docs. They came together with mrtg!

Home: http://people.ee.ethz.ch/~oetiker/webtools/mrtg/

[root@mrtg ~]#

MRTG가 제대로 작동하며, 이로써 MRTG 설치가 완료 되었다.
MRTG를 사용 하기 위해서 cfg 파일과 rrd 파일 그리고 log를 저장 할 곳이 필요 할 것이다.
내가 설치 한 서버에서는 mrtg를 관리 할 사용자를 생성하였으며, 그 디렉토리 안에 cfg, data, log 라는 이름으로 각 저장 할 디렉토리를 추가로 생성 해 주었다.

[root@mrtg ~]# adduser mrtg
[root@mrtg ~]# cd /home/mrtg/
[root@mrtg mrtg]# mkdir cfg
[root@mrtg mrtg]# mkdir data
[root@mrtg mrtg]# mkdir log




STEP 8.

웹에서 mrtg를 세팅 한 후 볼 수 있게 Apache를 설치한다.

[root@mrtg mrtg-2.12.2]# cd /usr/local/rrdbuild
[root@mrtg rrdbuild]# lftpget http://mirror.apache-kr.org/httpd/httpd-2.2.15.tar.gz
[root@mrtg rrdbuild]# tar xvfz httpd-2.2.15.tar.gz
..................... 생략 ...................
httpd-2.2.15/server/mpm_common.c
httpd-2.2.15/server/.indent.pro
httpd-2.2.15/server/util_charset.c
httpd-2.2.15/server/eoc_bucket.c
httpd-2.2.15/BuildAll.dsp
httpd-2.2.15/acinclude.m4
httpd-2.2.15/Makefile.win
httpd-2.2.15/httpd.spec
httpd-2.2.15/configure
httpd-2.2.15/configure.in
httpd-2.2.15/VERSIONING
httpd-2.2.15/README
httpd-2.2.15/LAYOUT
httpd-2.2.15/buildconf
httpd-2.2.15/.gdbinit
[root@mrtg rrdbuild]# cd httpd-2.2.15
[root@mrtg httpd-2.2.15]# ./configure --prefix=/usr/local/apache --enable-mods-shared=all --enable-so --enable-rewrite
...................... 생략 ........................
config.status: creating docs/conf/extra/httpd-mpm.conf
config.status: creating docs/conf/extra/httpd-multilang-errordoc.conf
config.status: creating docs/conf/extra/httpd-ssl.conf
config.status: creating docs/conf/extra/httpd-userdir.conf
config.status: creating docs/conf/extra/httpd-vhosts.conf
config.status: creating include/ap_config_layout.h
config.status: creating support/apxs
config.status: creating support/apachectl
config.status: creating support/dbmmanage
config.status: creating support/envvars-std
config.status: creating support/log_server_status
config.status: creating support/logresolve.pl
config.status: creating support/phf_abuse_log.cgi
config.status: creating support/split-logfile
config.status: creating build/rules.mk
config.status: creating build/pkg/pkginfo
config.status: creating build/config_vars.sh
config.status: creating include/ap_config_auto.h
config.status: executing default commands

[root@mrtg httpd-2.2.15]#

--prefix=/usr/local/apache는 /usr/local/apache에 설치한다.

--enable-mods-shared=all은 DSO모드라고 한다는데, 모듈이 추가로 설치 되었을 때 다시 컴파일 하지 않고 추가 할 수 있어서 좋다고 한다.

--enable-so는 DSO모드를 활성화 한다고 한다.

--enable-rewrite는 URL 재작성 모듈을 활성화 한다.


[root@mrtg httpd-2.2.15]# make
......................... 생략 ...............................
/usr/local/rrdbuild/httpd-2.2.15/srclib/apr/libtool --silent --mode=compile gcc -pthread  -O3  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE  -I/usr/local/rrdbuild/lb/include -I/usr/local/rrdbuild/lb/include/libart-2.0 -I/usr/local/rrdbuild/lb/include/freetype2 -I/usr/local/rrdbuild/lb/include/libpng  -I/usr/local/rrdbuild/httpd-2.2.15/srclib/pcre -I. -I/usr/local/rrdbuild/httpd-2.2.15/os/unix -I/usr/local/rrdbuild/httpd-2.2.15/server/mpm/prefork -I/usr/local/rrdbuild/httpd-2.2.15/modules/http -I/usr/local/rrdbuild/httpd-2.2.15/modules/filters -I/usr/local/rrdbuild/httpd-2.2.15/modules/proxy -I/usr/local/rrdbuild/httpd-2.2.15/include -I/usr/local/rrdbuild/httpd-2.2.15/modules/generators -I/usr/local/rrdbuild/httpd-2.2.15/modules/mappers -I/usr/local/rrdbuild/httpd-2.2.15/modules/database -I/usr/local/rrdbuild/httpd-2.2.15/srclib/apr/include -I/usr/local/rrdbuild/httpd-2.2.15/srclib/apr-util/include -I/usr/local/rrdbuild/httpd-2.2.15/server -I/usr/local/rrdbuild/httpd-2.2.15/modules/proxy/../generators -I/usr/local/rrdbuild/httpd-2.2.15/modules/ssl -I/usr/local/rrdbuild/httpd-2.2.15/modules/dav/main -prefer-pic -c mod_rewrite.c && touch mod_rewrite.slo
/usr/local/rrdbuild/httpd-2.2.15/srclib/apr/libtool --silent --mode=link gcc -pthread  -O3    -L/usr/local/rrdbuild/lb/lib    -o mod_rewrite.la -rpath /usr/local/apache/modules -module -avoid-version  mod_rewrite.lo
make[4]: Leaving directory `/usr/local/rrdbuild/httpd-2.2.15/modules/mappers'
make[3]: Leaving directory `/usr/local/rrdbuild/httpd-2.2.15/modules/mappers'
make[2]: Leaving directory `/usr/local/rrdbuild/httpd-2.2.15/modules'
make[2]: Entering directory `/usr/local/rrdbuild/httpd-2.2.15/support'
make[2]: Leaving directory `/usr/local/rrdbuild/httpd-2.2.15/support'

make[1]: Leaving directory `/usr/local/rrdbuild/httpd-2.2.15'
[root@mrtg httpd-2.2.15]# make install
................... 생략 ...................
mkdir /usr/local/apache/htdocs
Installing error documents
mkdir /usr/local/apache/error
Installing icons
mkdir /usr/local/apache/icons
mkdir /usr/local/apache/logs
Installing CGIs
mkdir /usr/local/apache/cgi-bin
Installing header files
Installing build system files
Installing man pages and online manual
mkdir /usr/local/apache/man
mkdir /usr/local/apache/man/man1
mkdir /usr/local/apache/man/man8
mkdir /usr/local/apache/manual
make[1]: Leaving directory `/usr/local/rrdbuild/httpd-2.2.15'

[root@mrtg httpd-2.2.15]#

Apache의 환경을 설정한다.

[root@mrtg httpd-2.2.15]# vi /usr/local/apache/conf/httpd.conf
<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User daemon
Group daemon

</IfModule>
</IfModule>


위 부분을 아래와 같이 변경한다.

<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch. 
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User nobody
Group nobody

</IfModule>
</IfModule>



# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName
www.example.com:80

위 부분을 아래와 같이 주석을 제거해 준다. 그리고 IP에 맞게 웹서버를 등록 해 준다.

필자의 경우에는 DNS 서버를 올리지 않았기 때문에 IP를 입력 하였다.

# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#

ServerName 192.168.100.2:80

이제 Apache 설치는 완료 되었으며 Apache를 실행하면 된다.

[root@mrtg httpd-2.2.15]# /usr/local/apache/bin/apachectl start
[root@mrtg httpd-2.2.15]#


웹서버가 뜨는 것을 확인 할 수 있다.

위 스샷과 같이 안 나온다면, 리눅스 설치 시 방화벽에 http 포트를 열어주었는지 확인한다.



[root@mrtg httpd-2.2.15]# vi /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/usr/local/apache/bin/apachectl start

위와 같이 리눅스가 부팅 될 때 웹서버가 자동으로 실행되게 저장한다.



Apache 설치가 완료 되었지만, MRTG는 cgi를 이용하여 웹서버에 표현을 해주기 때문에 cgi를 실행 할 수 있게 httpd.conf의 설정 부분을 변경해야 한다.

[root@mrtg httpd-2.2.15]# cd /usr/local/apache/conf/
[root@mrtg conf]# vi httpd.conf
# running httpd, as with most system services.
#
User daemon
Group daemon

</IfModule>
</IfModule>

# 'Main' server configuration

아래와 같이 변경 한다.

# running httpd, as with most system services.
#
User nobody
Group nobody

</IfModule>
</IfModule>

# 'Main' server configuration



# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

#
# The following lines prevent .htaccess and .htpasswd files from being


역시 아래와 같이 추가한다.

# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
    DirectoryIndex index.html index.htm index.php index.cgi
</IfModule>

#
# The following lines prevent .htaccess and .htpasswd files from being



<Directory "/usr/local/apache/cgi-bin">
    AllowOverride None
    Options none
    Order allow,deny
    Allow from all
</Directory>


아래와 같이 변경한다.

<Directory "/usr/local/apache/cgi-bin">
    AllowOverride None
   
Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>



    # probably should define those extensions to indicate media types:
    #
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

    #
    # AddHandler allows you to map certain file extensions to "handlers":


아래와 같이 추가한다.

    # probably should define those extensions to indicate media types:
    #
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps

    AddType application/x-httpd-cgi .cgi .pl

    #
    # AddHandler allows you to map certain file extensions to "handlers":




    # To use CGI scripts outside of ScriptAliased directories:
    # (You will also need to add "ExecCGI" to the "Options" directive.)
    #
    AddHandler cgi-script .cgi

    # For type maps (negotiated resources):
    #AddHandler type-map var


아래와 같이 추가한다.

    # To use CGI scripts outside of ScriptAliased directories:
    # (You will also need to add "ExecCGI" to the "Options" directive.)
    #
    AddHandler cgi-script .cgi .pl

    # For type maps (negotiated resources):
    #AddHandler type-map var


이제 웹서버에서 cgi를 적용 할 수 있는 환경이 완료 되었다.
기본 cgi-bin 경로는 /usr/local/apache/cgi-bin 으로 설정 되어있다.




'Linux tools > MRTG' 카테고리의 다른 글

MRTG서버에 Weathermap 설치 및 사용하기  (0) 2010.03.26
MRTG 설정 및 사용하기  (0) 2010.03.25
블로그 이미지

쭈꾸댕이

아직 어설픈 실력으로 나름 제가 하는 것에 대한 것들을 옮기는 공간입니다. 틀린 부분도 있을 수 있으니 이 점 양해하시고, 도움이 되셨으면 좋겠네요.

,