New question #288727 on Graphite:
https://answers.launchpad.net/graphite/+question/288727

This is not a question - it is a howto guide for building Graphite without 
automated package tools.

How to build Graphite and its dependencies from source without pip, yum, CPAN 
and other automation tools.

I work in a development environment that is very limited in connectivity and 
requires that linux software packages be as contained as possible off of /opt. 
I can't just upgrade existing or install new perl and python modules into the 
system perl and python directories because that may cause other software on the 
server to break. Also, we have very locked down proxied internet access that 
requires authentication and pretty much works for desktop web browsers only. 
Because of these restrictions, using automated package management tools like 
pip, yum, and "perl -MCPAN -e shell" to obtain and install packages just plain 
doesn't work on my linux servers. I wanted to try out Graphite, so I spent many 
hours figuring out what versions of each source package I needed and how to 
configure/make/install each one in the right order. The instructions below will 
put everything in /opt/graphite. 

My base system is RHEL6 but these instructions should work reasonably well on 
most up to date linux systems.

As root, create /opt/graphite and give the ownership of the dir to the userid 
that will own/maintain/run graphite. In this example, my graphite userid is 
called nmsuser.

cd /opt
mkdir graphite
chown nmsuser.users graphite

Exit your root shell and switch over to the nmsuser id and create a tgz dir for 
all of your source packages.

su - nmsuser
mkdir /opt/graphite/tgz

Create a file named 00-build-vars.sh in /opt/graphite/tgz with the following 
lines in it:
#
#
#### 00-build-vars.sh – helpful env vars for building graphite and its 
dependencies
PYTHONPATH=/opt/graphite/bin:/opt/graphite/:/opt/graphite/lib64/python2.6/site-packages/:/opt/graphite/lib/python2.6/site-packages/
export PYTHONPATH
BUILD_DIR=/opt/graphite/tgz
export BUILD_DIR
INSTALL_DIR=/opt/graphite
export INSTALL_DIR
PATH=/opt/graphite/bin:$PATH
export PATH=$INSTALL_DIR/bin:$PATH
export LDFLAGS="-L${INSTALL_DIR}/lib"
export CPPFLAGS="-I/opt/graphite/include -I/opt/graphite/include/python2.6"
export MAKE=make
export PKG_CONFIG=$INSTALL_DIR/bin/pkg-config
#### end of 00-build-vars.sh

Save that file, and source it by typing…

. /opt/graphite/tgz/00-build-vars.sh

…on a line by itself. There will be no output from this command.

Now you are ready to download and build all the source packages. The list of 
source packages below is what worked for me and I strongly suggest you stick to 
these versions of these packages. I spent a considerable amount of time fooling 
around with other (usually more recent) versions of some of these packages and 
beat my head against problems that turned out to be version specific issues 
that lead to dependency breakage.

It is also very important to build these packages in the order listed below 
because many of the later source packages require libraries, header files, etc. 
from the earlier packages.

So download each tar.gz or zip file below and execute 
configure/make/build/install. For things like pkg-config, perl, python, and 
net-snmp, pay special attention to the configure directives. It took me quite 
some time and a lot of forum reading to get all of these right.

tar –zxvf pkg-config-0.28.tar.gz
cd pkg-config-0.28
./configure --prefix=/opt/graphite/ --with-internal-glib
make
make install
cd ..

tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/opt/graphite/
make
make install
cd ..

tar -zxvf libpng-1.6.21.tar.gz
cd libpng-1.6.21
./configure --prefix=/opt/graphite/
make
make install
cd ..

tar -zxvf pixman-0.34.0.tar.gz
cd pixman-0.34.0
./configure --prefix=/opt/graphite/
make
make install
cd ..

tar -zxvf freetype-2.3.5.tar.gz
cd freetype-2.3.5
./configure --prefix=/opt/graphite/
make
make install
cd ..

tar –zxvf libxml2-2.6.32.tar.gz
cd libxml2-2.6.32
./configure --prefix=/opt/graphite/
make
make install
cd ..

tar –zxvf fontconfig-2.4.2.tar.gzc
cd fontconfig-2.4.2
./configure --prefix=/opt/graphite/
make
make install
cd ..

tar –zxvf cairo-1.14.6.tar.gz
cd cairo-1.14.6
./configure --prefix=/opt/graphite/
make
make install
cd ..

tar –zxvf httpd-2.2.31.tar.gz
cd httpd-2.2.31
./configure --prefix=/opt/graphite/
make
make install
cd ..

tar –zxvf perl-5.22.1.tar.gz
cd perl-5.22.1
CFLAGS='-m64 -mtune=nocona' ./Configure -des -Dusershrplib 
-Dprefix=/opt/graphite -A ccflags=-fPIC
make
make install
cd ..

tar –zxvf Python-2.6.6.tgz
cd Python-2.6.6
./configure --prefix=/opt/graphite/ --enable-shared
make
make install
cd ..

tar –zxvf mod_wsgi-3.4.tar.gz
cd mod_wsgi-3.4
./configure --prefix=/opt/graphite/
make
make install
cd ..

tar –zxvf django-1.4.22.tar.gz
cd django-1.4.22
python setup.py install --prefix=/opt/graphite/
cd ..

tar –zxvf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure --prefix=opt/graphite
make
make install
cd ..

tar –zxvf memcached-1.4.25.tar.gz
cd memcached-1.4.25
./configure --prefix=opt/graphite
make
make install
cd ..

tar –zxvf zope.interface-4.1.3.tar.gz
cd zope.interface-4.1.3
python setup.py install --prefix=/opt/graphite/
cd ..

tar –zxvf setuptools-20.2.2.tar.gz
cd setup-tools-20.2.2
python setup.py install –prefix=/opt/graphite
cd ..

tar –zxvf Twisted-12.0.0.tar.gz
cd Twisted-12.0.0
python setup.py install --prefix=/opt/graphite/
cd ..

tar –zxvf py2cairo-1.10.0.tar.gz
cd py2cairo-1.10.0
./waf configure --prefix=/opt/graphite/
./waf build
./waf build install
cd ..

tar –zxvf django-tagging-0.3.1.zip
cd django-tagging-0.3.1
python setup.py install --prefix=/opt/graphite/
cd ..

tar –zxvf sqlite_2.8.17.orig.tar.gz
cd sqlite_2.8.17.orig
./configure --prefix=opt/graphite
make
make install
cd ..

tar –zxvf sqlite-autoconf-3110100.tar.gz
cd sqlite-autoconf-3110100
./configure --prefix=opt/graphite
make
make install
cd ..

tar –zxvf whitenoise-2.0.6.tar.gz
cd whitenoise-2.0.6
python setup.py install --prefix=/opt/graphite/
cd ..

tar –zxvf pysqlite-2.6.3.tar.gz
cd pysqlite-2.6.3
python setup.py install --prefix=/opt/graphite/
cd ..

tar –zxvf txAMQP-0.6.2.tar.gz
cd txAMQP-0.6.2
python setup.py install --prefix=/opt/graphite/
cd ..

tar –zxvf six-1.9.0.tar.gz
cd six-1.9.0.tar
python setup.py install --prefix=/opt/graphite/
cd ..

tar –zxvf python-memcached-1.57.tar.gz 
cd python-memcached-1.57
python setup.py install --prefix=/opt/graphite/
cd ..

tar –zxvf argparse-1.4.0.tar.gz
cd argparse-1.4.0
python setup.py install --prefix=/opt/graphite/
cd ..

unzip net-snmp-5.7.3.zip
cd net-snmp-5.7.3
./configure --prefix=/opt/graphite/ --with-python-modules --with-perl-modules
You will now be asked for some info by the net-snmp configure script. Just take 
the defaults. We aren't going to actually run the system's SNMP daemon from 
/opt/graphite/bin, we just need net-snmp libraries to build the perl SNMP 
modules.
make
make install
cd ..

tar –zxvf SNMP-Multi-2.1.tar.gz
cd SNMP-Multi-2.1
perl Makefile.PL
make
make install
cd ..

tar –zxvf YAML-1.15.tar.gz
cd YAML-1.15
perl Makefile.PL
make
make install
cd ..

tar –zxvf Log-Log4perl-1.46.tar.gz
cd Log-Log4perl-1.46
perl Makefile.PL
make
make install
cd ..

tar –zxvf Parallel-ForkManager-1.17.tar.gz
cd Parallel-ForkManager-1.17
perl Makefile.PL
make
make install
cd ..

tar –zxvf Module-Build-0.4216.tar.gz
cd Module-Build-0.4216
perl Makefile.PL
make
make install
cd ..

tar –zxvf Python-Serialise-Pickle-0.01.tar.gz
cd Python-Serialise-Pickle-0.01
perl Makefile.PL
make
make install
cd ..

tar –zxvf carbon-0.9.15.tar.gz
cd carbon-0.9.15
python setup.py install --prefix=/opt/graphite/
cd ..

tar –zxvf graphite-web-0.9.15.tar.gz
cd graphite-web-0.9.15
python check-dependencies.py
At this stage you should pass all of the dependency checks except LDAP. If you 
want LDAP authentication support you will have to deal with python-ldap and its 
dependencies. LDAP has a fairly lengthy chain of dependencies like OpenLDAP and 
GNUTLS which each have even more dependencies. For now I don't want to deal 
with all that so I'm skipping LDAP support.
If you are happy with the dependency check results, make sure you are still in 
the graphite-web-0.9.15 dir and execute…
python setup.py install --prefix=/opt/graphite/
cd ..

tar –zxvf whisper-0.9.15.tar.gz
cd whisper-0.9.15
python setup.py install --prefix=/opt/graphite/
cd ..


Now, go here… 
http://graphite.readthedocs.org/en/latest/install.html#initial-configuration
…to configure the components, start up the system, view log files, etc. 


Happy Graphit'ing and I hope this info is helpful and time saving to someone.



-- 
You received this question notification because your team graphite-dev
is an answer contact for Graphite.

_______________________________________________
Mailing list: https://launchpad.net/~graphite-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~graphite-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to