In automated infrastructure, for me, installing from source is not an option. So I build deb packages and tell chef to install these. To avoid external dependencies packages are installed from local repo.
One day I will learn proper Debian packaging… but before it happens I’ll keep enjoying building packages using FPM.
This post is quick cheat sheet for using FPM to build .deb packages. First we need to install FPM.
sudo apt-get install ruby-dev sudo gem install fpm
Let’s build phantomjs deb package.
wget https://phantomjs.googlecode.com/files/phantomjs-1.9.2-linux-x86_64.tar.bz2 tar jxf phantomjs-1.9.2-linux-x86_64.tar.bz2 cd phantomjs-1.9.2-linux-x86_64/ mkdir usr mv bin usr/ fpm -s dir -t deb -n phantomjs -v 1.9.2 -a x86_64 -C ~/phantomjs-1.9.2-linux-x86_64 -p phantomjs-VERSION_ARCH.deb usr/bin
Setting up collecting Apache metrics to ganglia using sFlow is pretty straightforward, except that installing from source, especially when automated, isn’t nice to maintain. FPM to the rescue. Let’s build mod_sflow .deb with apache module config file:
sudo apt-get install apache2-dev sudo mkdir -p /usr/lib/apache2/modules git clone https://github.com/kplimack/mod_sflow cd mod_sflow/ sudo apxs2 -c -i mod_sflow.c sflow_api.c mkdir -p /tmp/mod_sflow/usr/lib/apache2/modules/ /tmp/mod_sflow/etc/apache2/mods-available/ echo "LoadModule sflow_module /usr/lib/apache2/modules/mod_sflow.so" > /tmp/mod_sflow/etc/apache2/mods-available/sflow.load sudo mv /usr/lib/apache2/modules/mod_sflow.so /tmp/mod_sflow/usr/lib/apache2/modules/ fpm -s dir -t deb -n mod_sflow -v 1.0.4 -a x86_64 -C /tmp/mod_sflow/ -p libapache2-mod-sflow-VERSION_ARCH.deb .
verify the contents:
$ dpkg --contents libapache2-mod-sflow-1.0.4_amd64.deb drwxr-xr-x 0/0 0 2014-02-24 20:54 ./ drwxr-xr-x 0/0 0 2014-02-24 20:54 ./etc/ drwxr-xr-x 0/0 0 2014-02-24 20:54 ./etc/apache2/ drwxr-xr-x 0/0 0 2014-02-24 20:54 ./etc/apache2/mods-available/ -rw-r--r-- 0/0 68 2014-02-24 20:52 ./etc/apache2/mods-available/sflow.load drwxr-xr-x 0/0 0 2014-02-24 20:54 ./usr/ drwxr-xr-x 0/0 0 2014-02-24 20:54 ./usr/lib/ drwxr-xr-x 0/0 0 2014-02-24 20:54 ./usr/lib/apache2/ drwxr-xr-x 0/0 0 2014-02-24 20:54 ./usr/lib/apache2/modules/ -rw-r--r-- 0/0 194981 2014-02-24 20:49 ./usr/lib/apache2/modules/mod_sflow.so
Profit!