Code

Imported upstream version 1.3.1.
[pkg-rrdtool.git] / doc / rrdbuild.txt
1 RRDBUILD(1)                         rrdtool                        RRDBUILD(1)
5 N\bNA\bAM\bME\bE
6        rrdbuild - Instructions for building RRDtool
8 O\bOV\bVE\bER\bRV\bVI\bIE\bEW\bW
9        If you downloaded the source of rrdtool you have to compile it. This
10        document will give some information on how this is done.
12        RRDtool relies on services of third part libraries. Some of these
13        libraries may already be installed on your system. You have to compile
14        copies of the other ones before you can build RRDtool.
16        This document will tell you about all the necessary steps to get going.
18        These instructions assume you are using a b\bba\bas\bsh\bh shell. If you use
19        csh/tcsh, then you can either type _\bb_\ba_\bs_\bh to switch to bash for the com-
20        pilation or if you know what you are doing just replace the export bits
21        with setenv.
23        We further assume that your copies of t\bta\bar\br and m\bma\bak\bke\be are actually G\bGN\bNU\bU t\bta\bar\br
24        and G\bGN\bNU\bU m\bma\bak\bke\be respectively. It could be that they are installed as g\bgt\bta\bar\br
25        and g\bgm\bma\bak\bke\be on your system.
27 O\bOP\bPT\bTI\bIM\bMI\bIS\bST\bTI\bIC\bC B\bBU\bUI\bIL\bLD\bD
28        Before you start to build RRDtool, you have to decide two things:
30        1.  In which directory you want to build the software.
32        2.  Where you want to install the software.
34        Once you have decided. Save the two locations into environment vari-
35        ables.
37         BUILD_DIR=/tmp/rrdbuild
38         INSTALL_DIR=/usr/local/rrdtool-1.3.1
40        If your _\b/_\bt_\bm_\bp is mounted with the option noexec (RHEL seems todo that)
41        you have to choose a different directory!
43        Now make sure the BUILD_DIR exists and go there:
45         mkdir -p $BUILD_DIR
46         cd $BUILD_DIR
48        Lets first assume you already have all the necessary libraries
49        pre-installed.
51         wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.3.1.tar.gz
52         gunzip -c rrdtool-1.3.1.tar.gz | tar xf -
53         cd rrdtool-1.3.1
54         ./configure --prefix=$INSTALL_DIR && make && make install
56        Ok, this was very optimistic. This try will probably have ended with
57        c\bco\bon\bnf\bfi\big\bgu\bur\bre\be complaining about several missing libraries.
59 I\bIN\bNS\bST\bTA\bAL\bLL\bLI\bIN\bNG\bG D\bDE\bEP\bPE\bEN\bND\bDE\bEN\bNC\bCI\bIE\bES\bS
60        If your OS lets you install additional packages from a software reposi-
61        tory, you may get away with installing the missing packages. When the
62        packages are installed, run configure again and try to compile again.
63        Below you find some hints on getting your OS ready for the rrdtool com-
64        pilation.
66        Additions to this list are welcome.
68        O\bOp\bpe\ben\bnS\bSo\bol\bla\bar\bri\bis\bs 2\b20\b00\b08\b8.\b.0\b05\b5
70        Just add a compiler and the gnome development package:
72         pkg install sunstudioexpress
73         pkg install SUNWgnome-common-devel
75        There is a problem with _\bc_\ba_\bi_\br_\bo_\b._\bp_\bc on opensolaris. It suggests that xren-
76        der is required for compilation with cairo. This is not true and also
77        bad since opensolaris does not include an _\bx_\br_\be_\bn_\bd_\be_\br_\b._\bp_\bc file. Use perl to
78        fix this:
80         perl -i~ -p -e 's/(Requires.*?)\s*xrender.*/$1/' /usr/lib/pkgconfig/cairo.pc
82        D\bDe\beb\bbi\bia\ban\bn /\b/ U\bUb\bbu\bun\bnt\btu\bu
84        Use apt-get to make sure you have all that is required. A number of
85        packages will get added through dependencies.
87         apt-get install libpango1.0-dev libxml2-dev
89        G\bGe\ben\bnt\bto\boo\bo
91        In Gentoo installing rrdtool is really simple you just need to e\bem\bme\ber\brg\bge\be
92        r\brr\brd\bdt\bto\boo\bol\bl. All dependencies will be handled automatically by the portage
93        system. The only thing you should care about are USE flags, which allow
94        you fine tune features rrdtool will be built with. Currently the fol-
95        lowing USE flags are available:
97         doc    - install .html and .txt documentation
98                  into /usr/share/doc/rrdtool-1.x.xx/
99         perl   - build and install perl language bindings
100         python - build and install python language bindings
101         ruby   - build and install ruby language bindings
102         tcl    - build and install tcl language bindings
103         rrdcgi - build and install rrdcgi
105        After you've decided which USE flags you need, set them either in
106        _\bm_\ba_\bk_\be_\b._\bc_\bo_\bn_\bf or _\b/_\be_\bt_\bc_\b/_\bp_\bo_\br_\bt_\ba_\bg_\be_\b/_\bp_\ba_\bc_\bk_\ba_\bg_\be_\b._\bu_\bs_\be and finally run:
108         # emerge -va rrdtool
110        Take a look at Gentoo handbook for further details on how to manage USE
111        flags: http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2
113 B\bBU\bUI\bIL\bLD\bDI\bIN\bNG\bG D\bDE\bEP\bPE\bEN\bND\bDE\bEN\bNC\bCI\bIE\bES\bS
114        But again this may have been too optimistic still, and you actually
115        have to compile your own copies of some of the required libraries.
116        Things like libpng and zlib are pretty standard so you will probably
117        have them on your system anyway. Freetype, Fontinst, Cairo, Pango may
118        be installed, but it is possible that they are pretty old and thus
119        don't live up to our expectations, so you may want to compile their
120        latest versions.
122        G\bGe\ben\bne\ber\bra\bal\bl b\bbu\bui\bil\bld\bd t\bti\bip\bps\bs f\bfo\bor\br A\bAI\bIX\bX
124        If you are working with AIX, you may find the the -\b--\b-d\bdi\bis\bsa\bab\bbl\ble\be-\b-s\bsh\bha\bar\bre\bed\bd
125        option will cause things to break for you. In that case you may have to
126        install the shared libraries into the rrdtool PREFIX and work with
127        -\b--\b-d\bdi\bis\bsa\bab\bbl\ble\be-\b-s\bst\bta\bat\bti\bic\bc instead.
129        Another hint to get rrdtool working on AIX is to use the IBM XL C Com-
130        piler:
132         export CC=/usr/vac/bin/cc
133         export PERLCC=$CC
135        (Better instructions for AIX welcome!)
137        B\bBu\bui\bil\bld\bd I\bIn\bns\bst\btr\bru\buc\bct\bti\bio\bon\bns\bs
139        In order to build rrdtool need a compiler on your system. Unfortunately
140        compilers are not all alike. This has an effect on the CFLAGS you want
141        to set. The examples below are for the popular GCC compiler suite. If
142        you have an other compilers here are some ides:
144        Sun Forte
145             CFLAGS="-xO3 -kPIC"
147        Some libraries want to know where other libraries are. For this to
148        work, set the following environment variable
150         export PKG_CONFIG_PATH=${INSTALL_DIR}/lib/pkgconfig
151         export PATH=$INSTALL_DIR/bin:$PATH
153        The above relies on the presence of the _\bp_\bk_\bg_\bc_\bo_\bn_\bf_\bi_\bg program. Below you
154        find instructions on how to compile pkgconfig.
156        Since we are compiling libraries dynamically, they must know where to
157        find each other. This is done by setting an appropriate LDFLAGS. Unfor-
158        tunately, the syntax again differs from system to system:
160        Solaris
161             export LDFLAGS=-R${INSTALL_DIR}/lib
163        Linux
164             export LDFLAGS="-Wl,--rpath -Wl,${INSTALL_DIR}/lib"
166        HPUX
167             export LDFLAGS="+b${INSTALL_DIR}/lib"
169        AIX
170             export LDFLAGS="-Wl,-blibpath:${INSTALL_DIR}/lib"
172        If you have GNUmake installed and it is not called 'make', then do
174         export MAKE=gmake
175         export GNUMAKE=gmake
177        otherwise just do
179         export MAKE=make
181        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bp_\bk_\bg_\bc_\bo_\bn_\bf_\bi_\bg
183        As mentioned above, without pkgconfig the whole build process will be
184        lots of pain and suffering, so make sure you have a copy on your sys-
185        tem. If it is not available natively, here is how to compile it.
187         wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz
188         gunzip -c pkg-config-0.23.tar.gz | tar xf -
189         cd pkg-config-0.23
190         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
191         $MAKE
192         $MAKE install
194        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bz_\bl_\bi_\bb
196        Chances are very high that you already have that on your system ...
198         cd $BUILD_DIR
199         wget http://oss.oetiker.ch/rrdtool/pub/libs/zlib-1.2.3.tar.gz
200         gunzip -c zlib-1.2.3.tar.gz | tar xf -
201         cd zlib-1.2.3
202         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC" --shared
203         $MAKE
204         $MAKE install
206        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bl_\bi_\bb_\bp_\bn_\bg
208        Libpng itself requires zlib to build, so we need to help a bit. If you
209        already have a copy of zlib on your system (which is very likely) you
210        can drop the settings of LDFLAGS and CPPFLAGS. Note that the backslash
211        (\) at the end of line 4 means that line 4 and line 5 are on one line.
213         cd $BUILD_DIR
214         wget http://oss.oetiker.ch/rrdtool/pub/libs/libpng-1.2.18.tar.gz
215         gunzip -c libpng-1.2.18.tar.gz | tar xf -
216         cd libpng-1.2.10
217         env CFLAGS="-O3 -fPIC" ./configure --prefix=$INSTALL_DIR
218         $MAKE
219         $MAKE install
221        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bf_\br_\be_\be_\bt_\by_\bp_\be
223         cd $BUILD_DIR
224         wget http://oss.oetiker.ch/rrdtool/pub/libs/freetype-2.3.5.tar.gz
225         gunzip -c freetype-2.3.5.tar.gz | tar xf -
226         cd freetype-2.3.5
227         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
228         $MAKE
229         $MAKE install
231        If you run into problems building freetype on Solaris, you may want to
232        try to add the following at the start the configure line:
234         env EGREP=egrep
236        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bL_\bi_\bb_\bX_\bM_\bL_\b2
238         cd $BUILD_DIR
239         wget http://oss.oetiker.ch/rrdtool/pub/libs/libxml2-sources-2.6.31.tar.gz
240         gunzip -c libxml2-sources-2.6.32.tar.gz | tar xf -
241         cd libxml2-sources-2.6.32
242         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
243         $MAKE
244         $MAKE install
246        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bf_\bo_\bn_\bt_\bc_\bo_\bn_\bf_\bi_\bg
248        Note that fontconfig has a run time configuration file in
249        INSTALL_DIR/etc you may want to adjust that so that fontconfig finds
250        the fonts on your system.  Run the fc-cache program to build the font-
251        config cache after changing the config file.
253         cd $BUILD_DIR
254         wget http://oss.oetiker.ch/rrdtool/pub/libs/fontconfig-2.4.2.tar.gz
255         gunzip -c fontconfig-2.4.2.tar.gz   | tar xf -
256         cd fontconfig-2.4.2
257         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
258         $MAKE
259         $MAKE install
261        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bP_\bi_\bx_\bm_\ba_\bn
263         cd $BUILD_DIR
264         wget http://oss.oetiker.ch/rrdtool/pub/libs/pixman-0.10.0.tar.gz
265         gunzip -c pixman-0.10.0.tar.gz  | tar xf -
266         cd pixman-0.10.0
267         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
268         $MAKE
269         $MAKE install
271        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bC_\ba_\bi_\br_\bo
273         cd $BUILD_DIR
274         wget http://oss.oetiker.ch/rrdtool/pub/libs/cairo-1.6.4.tar.gz
275         gunzip -c cairo-1.4.10.tar.gz   | tar xf -
276         cd cairo-1.4.10
277         ./configure --prefix=$INSTALL_DIR \
278            --enable-xlib=no \
279            --enable-xlib-render=no \
280            --enable-win32=no \
281            CFLAGS="-O3 -fPIC"
282         $MAKE
283         $MAKE install
285        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bG_\bl_\bi_\bb
287         cd $BUILD_DIR
288         wget http://oss.oetiker.ch/rrdtool/pub/libs/glib-2.15.4.tar.gz
289         gunzip -c glib-2.12.13.tar.gz  | tar xf -
290         cd glib-2.12.13
291         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
292         $MAKE
293         $MAKE install
295        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bP_\ba_\bn_\bg_\bo
297         cd $BUILD_DIR
298         wget http://oss.oetiker.ch/rrdtool/pub/libs/pango-1.21.1.tar.gz
299         gunzip -c pango-1.21.1.tar.gz  | tar xf -
300         cd pango-1.21.1
301         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC" --without-x
302         $MAKE
303         $MAKE install
305        B\bBu\bui\bil\bld\bdi\bin\bng\bg r\brr\brd\bdt\bto\boo\bol\bl (\b(s\bse\bec\bco\bon\bnd\bd t\btr\bry\by)\b)
307        Now all the dependent libraries are built and you can try again. This
308        time you tell configure where it should be looking for libraries and
309        include files. This is done via environment variables. Depending on the
310        shell you are running, the syntax for setting environment variables is
311        different.
313        And finally try building again. We disable the python and tcl bindings
314        because it seems that a fair number of people have ill configured
315        python and tcl setups that would prevent rrdtool from building if they
316        are included in their current state.
318         cd $BUILD_DIR/rrdtool-1.3.1
319         ./configure --prefix=$INSTALL_DIR --disable-tcl --disable-python
320         $MAKE clean
321         $MAKE
322         $MAKE install
324        SOLARIS HINT: if you want to build  the perl module for the native perl
325        (the one shipping with Solaris) you will need the Sun Forte compiler
326        installed on your box or you have to hand-tune bind-
327        ings/perl-shared/Makefile while building!
329        Now go to _\b$_\bI_\bN_\bS_\bT_\bA_\bL_\bL_\b__\bD_\bI_\bR/\b/s\bsh\bha\bar\bre\be/\b/r\brr\brd\bdt\bto\boo\bol\bl/\b/e\bex\bxa\bam\bmp\bpl\ble\bes\bs/\b/ and run them to see if
330        your build has been successful.
332 A\bAU\bUT\bTH\bHO\bOR\bR
333        Tobias Oetiker <tobi@oetiker.ch>
337 1.3.1                             2008-07-23                       RRDBUILD(1)