Code

Imported upstream version 1.4.8
[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
20        compilation or if you know what you are doing just replace the export
21        bits 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
35        variables.
37         BUILD_DIR=/tmp/rrdbuild
38         INSTALL_DIR=/opt/rrdtool-1.4.8
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 pre-
49        installed.
51         wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.8.tar.gz
52         gunzip -c rrdtool-1.4.8.tar.gz | tar xf -
53         cd rrdtool-1.4.8
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
61        repository, you may get away with installing the missing packages. When
62        the packages are installed, run configure again and try to compile
63        again. Below you find some hints on getting your OS ready for compiling
64        RRDtool.
66        Additions to this list are welcome. In general RRDtool should work with
67        the latest versions of the libraries. The versions listed here are just
68        what was current when I tested this.
70    O\bOp\bpe\ben\bnS\bSo\bol\bla\bar\bri\bis\bs 2\b20\b00\b08\b8.\b.0\b05\b5
71        Just add a compiler and the gnome development package:
73         pkg install sunstudioexpress
74         pkg install SUNWgnome-common-devel
76        There is a problem with _\bc_\ba_\bi_\br_\bo_\b._\bp_\bc on OpenSolaris. It suggests that
77        xrender is required for compilation with cairo. This is not true and
78        also bad since OpenSolaris does not include an _\bx_\br_\be_\bn_\bd_\be_\br_\b._\bp_\bc file. Use
79        Perl to fix this:
81         perl -i~ -p -e 's/(Requires.*?)\s*xrender.*/$1/' /usr/lib/pkgconfig/cairo.pc
83        Make sure the RRDtool build system finds your new compiler
85         export PATH=/opt/SunStudioExpress/bin
87    D\bDe\beb\bbi\bia\ban\bn /\b/ U\bUb\bbu\bun\bnt\btu\bu
88        Use apt-get to make sure you have all that is required. A number of
89        packages will get added through dependencies.
91         apt-get install libpango1.0-dev libxml2-dev
93    G\bGe\ben\bnt\bto\boo\bo
94        In Gentoo installing RRDtool is really simple you just need to e\bem\bme\ber\brg\bge\be
95        r\brr\brd\bdt\bto\boo\bol\bl. All dependencies will be handled automatically by the portage
96        system. The only thing you should care about are USE flags, which allow
97        you fine tune features RRDtool will be built with. Currently the
98        following USE flags are available:
100         doc    - install .html and .txt documentation
101                  into /usr/share/doc/rrdtool-1.x.xx/
102         perl   - build and install perl language bindings
103         python - build and install python language bindings
104         ruby   - build and install ruby language bindings
105         tcl    - build and install tcl language bindings
106         rrdcgi - build and install rrdcgi
108        After you've decided which USE flags you need, set them either in
109        _\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:
111         # emerge -va rrdtool
113        Take a look at Gentoo handbook for further details on how to manage USE
114        flags: http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2
116 B\bBU\bUI\bIL\bLD\bDI\bIN\bNG\bG D\bDE\bEP\bPE\bEN\bND\bDE\bEN\bNC\bCI\bIE\bES\bS
117        But again this may have been too optimistic still, and you actually
118        have to compile your own copies of some of the required libraries.
119        Things like libpng and zlib are pretty standard so you will probably
120        have them on your system anyway. Freetype, Fontinst, Cairo, Pango may
121        be installed, but it is possible that they are pretty old and thus
122        don't live up to our expectations, so you may want to compile their
123        latest versions.
125    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
126        If you are working with AIX, you may find the -\b--\b-d\bdi\bis\bsa\bab\bbl\ble\be-\b-s\bsh\bha\bar\bre\bed\bd option
127        will cause things to break for you. In that case you may have to
128        install the shared libraries into the RRDtool PREFIX and work with
129        -\b--\b-d\bdi\bis\bsa\bab\bbl\ble\be-\b-s\bst\bta\bat\bti\bic\bc instead.
131        Another hint to get RRDtool working on AIX is to use the IBM XL C
132        Compiler:
134         export CC=/usr/vac/bin/cc
135         export PERLCC=$CC
137        (Better instructions for AIX welcome!)
139    B\bBu\bui\bil\bld\bd I\bIn\bns\bst\btr\bru\buc\bct\bti\bio\bon\bns\bs
140        Some libraries want to know where other libraries are. For this to
141        work, set the following environment variable
143         export PKG_CONFIG_PATH=${INSTALL_DIR}/lib/pkgconfig
144         export PATH=$INSTALL_DIR/bin:$PATH
146        The above relies on the presence of the _\bp_\bk_\bg_\bc_\bo_\bn_\bf_\bi_\bg program. Below you
147        find instructions on how to compile pkgconfig.
149        Since we are compiling libraries dynamically, they must know where to
150        find each other. This is done by setting an appropriate LDFLAGS.
151        Unfortunately, the syntax again differs from system to system:
153        Solaris
154             export LDFLAGS=-R${INSTALL_DIR}/lib
156            if you are using the Sun Studio/Forte compiler, you may also want
157            to set
159             CFLAGS="-xO3 -xcode=pic13"   (SPARC)
160             CFLAGS="-xO3 -Kpic"          (x86)
162        Linux
163             export LDFLAGS="-Wl,--rpath -Wl,${INSTALL_DIR}/lib"
165        HPUX
166             export LDFLAGS="+b${INSTALL_DIR}/lib"
168        AIX
169             export LDFLAGS="-Wl,-blibpath:${INSTALL_DIR}/lib"
171        If you have GNU make installed and it is not called 'make', then do
173         export MAKE=gmake
174         export GNUMAKE=gmake
176        otherwise just do
178         export MAKE=make
180        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bp_\bk_\bg_\bc_\bo_\bn_\bf_\bi_\bg
182        As mentioned above, without pkgconfig the whole build process will be
183        lots of pain and suffering, so make sure you have a copy on your
184        system. If it is not available natively, here is how to compile it.
186         wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.23.tar.gz
187         gunzip -c pkg-config-0.23.tar.gz | tar xf -
188         cd pkg-config-0.23
189         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
190         $MAKE
191         $MAKE install
193        After installing pkgconfig in a custom directory, setting up the
194        corresponding environment variable will be helpful.
196         export PKG_CONFIG=$INSTALL_DIR/bin/pkg-config
198        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bz_\bl_\bi_\bb
200        Chances are very high that you already have that on your system ...
202         cd $BUILD_DIR
203         wget http://oss.oetiker.ch/rrdtool/pub/libs/zlib-1.2.3.tar.gz
204         gunzip -c zlib-1.2.3.tar.gz | tar xf -
205         cd zlib-1.2.3
206         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC" --shared
207         $MAKE
208         $MAKE install
210        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bl_\bi_\bb_\bp_\bn_\bg
212        Libpng itself requires zlib to build, so we need to help a bit. If you
213        already have a copy of zlib on your system (which is very likely) you
214        can drop the settings of LDFLAGS and CPPFLAGS. Note that the backslash
215        (\) at the end of line 4 means that line 4 and line 5 are on one line.
217         cd $BUILD_DIR
218         wget http://oss.oetiker.ch/rrdtool/pub/libs/libpng-1.2.18.tar.gz
219         gunzip -c libpng-1.2.18.tar.gz | tar xf -
220         cd libpng-1.2.10
221         env CFLAGS="-O3 -fPIC" ./configure --prefix=$INSTALL_DIR
222         $MAKE
223         $MAKE install
225        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bf_\br_\be_\be_\bt_\by_\bp_\be
227         cd $BUILD_DIR
228         wget http://oss.oetiker.ch/rrdtool/pub/libs/freetype-2.3.5.tar.gz
229         gunzip -c freetype-2.3.5.tar.gz | tar xf -
230         cd freetype-2.3.5
231         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
232         $MAKE
233         $MAKE install
235        If you run into problems building freetype on Solaris, you may want to
236        try to add the following at the start the configure line:
238         env EGREP=egrep
240        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bL_\bi_\bb_\bX_\bM_\bL_\b2
242         cd $BUILD_DIR
243         wget http://oss.oetiker.ch/rrdtool/pub/libs/libxml2-2.6.32.tar.gz
244         gunzip -c libxml2-2.6.32.tar.gz | tar xf -
245         cd libxml2-2.6.32
246         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
247         $MAKE
248         $MAKE install
250        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bf_\bo_\bn_\bt_\bc_\bo_\bn_\bf_\bi_\bg
252        Note that fontconfig has a run time configuration file in
253        INSTALL_DIR/etc you may want to adjust that so that fontconfig finds
254        the fonts on your system.  Run the fc-cache program to build the
255        fontconfig cache after changing the config file.
257         cd $BUILD_DIR
258         wget http://oss.oetiker.ch/rrdtool/pub/libs/fontconfig-2.4.2.tar.gz
259         gunzip -c fontconfig-2.4.2.tar.gz   | tar xf -
260         cd fontconfig-2.4.2
261         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC" --with-freetype-config=$INSTALL_DIR/bin/freetype-config
262         $MAKE
263         $MAKE install
265        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bP_\bi_\bx_\bm_\ba_\bn
267         cd $BUILD_DIR
268         wget http://oss.oetiker.ch/rrdtool/pub/libs/pixman-0.10.0.tar.gz
269         gunzip -c pixman-0.10.0.tar.gz  | tar xf -
270         cd pixman-0.10.0
271         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
272         $MAKE
273         $MAKE install
275        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bC_\ba_\bi_\br_\bo
277         cd $BUILD_DIR
278         wget http://oss.oetiker.ch/rrdtool/pub/libs/cairo-1.6.4.tar.gz
279         gunzip -c cairo-1.6.4.tar.gz   | tar xf -
280         cd cairo-1.6.4
281         ./configure --prefix=$INSTALL_DIR \
282            --enable-xlib=no \
283            --enable-xlib-render=no \
284            --enable-win32=no \
285            CFLAGS="-O3 -fPIC"
286         $MAKE
287         $MAKE install
289        When building on Solaris you may want todo
291         ./configure --prefix=$INSTALL_DIR \
292            --enable-xlib=no \
293            --enable-xlib-render=no \
294            --enable-win32=no \
295            CFLAGS="-O3 -fPIC -D_POSIX_PTHREAD_SEMANTICS"
297        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bG_\bl_\bi_\bb
299         cd $BUILD_DIR
300         wget http://oss.oetiker.ch/rrdtool/pub/libs/glib-2.15.4.tar.gz
301         gunzip -c glib-2.15.4.tar.gz  | tar xf -
302         cd glib-2.15.4
303         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC"
304         $MAKE
305         $MAKE install
307        _\bB_\bu_\bi_\bl_\bd_\bi_\bn_\bg _\bP_\ba_\bn_\bg_\bo
309         cd $BUILD_DIR
310         wget http://oss.oetiker.ch/rrdtool/pub/libs/pango-1.21.1.tar.bz2
311         bunzip2 -c pango-1.21.1.tar.bz2 | tar xf -
312         cd pango-1.21.1
313         ./configure --prefix=$INSTALL_DIR CFLAGS="-O3 -fPIC" --without-x
314         $MAKE
315         $MAKE install
317    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)
318        Now all the dependent libraries are built and you can try again. This
319        time you tell configure where it should be looking for libraries and
320        include files. This is done via environment variables. Depending on the
321        shell you are running, the syntax for setting environment variables is
322        different.
324        And finally try building again. We disable the python and tcl bindings
325        because it seems that a fair number of people have ill configured
326        python and tcl setups that would prevent RRDtool from building if they
327        are included in their current state.
329         cd $BUILD_DIR/rrdtool-1.4.8
330         ./configure --prefix=$INSTALL_DIR --disable-tcl --disable-python
331         $MAKE clean
332         $MAKE
333         $MAKE install
335        SOLARIS HINT: if you want to build  the Perl module for the native Perl
336        (the one shipping with Solaris) you will need the Sun Forte compiler
337        installed on your box or you have to hand-tune
338        bindings/perl-shared/Makefile while building!
340        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
341        your build has been successful.
343 A\bAU\bUT\bTH\bHO\bOR\bR
344        Tobias Oetiker <tobi@oetiker.ch>
348 1.4.8                             2013-05-23                       RRDBUILD(1)