From a972b511c7787e982cfc1eb01e30d4b7145a3f45 Mon Sep 17 00:00:00 2001 From: mdtrooper Date: Tue, 3 Nov 2009 17:18:52 +0000 Subject: [PATCH] 2009-12-03 Miguel de Dios * DEBIAN/control, DEBIAN/md5sums, DEBIAN/postinst, DEBIAN/prerm, DEBIAN/conffiles: debian base files for to make a .deb package. * make_deb_package.sh: shell script for make automatically the deb package for standard installation in a Debian Lenny, this script make a package "pandorafms.server_3.0.0.rc1.deb" and the other necesary packages (perl). git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@2072 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_server/ChangeLog | 7 ++ pandora_server/DEBIAN/conffiles | 1 + pandora_server/DEBIAN/control | 10 +++ pandora_server/DEBIAN/md5sums | 0 pandora_server/DEBIAN/postinst | 119 +++++++++++++++++++++++++ pandora_server/DEBIAN/prerm | 76 ++++++++++++++++ pandora_server/make_deb_package.sh | 136 +++++++++++++++++++++++++++++ 7 files changed, 349 insertions(+) create mode 100755 pandora_server/DEBIAN/conffiles create mode 100644 pandora_server/DEBIAN/control create mode 100644 pandora_server/DEBIAN/md5sums create mode 100755 pandora_server/DEBIAN/postinst create mode 100755 pandora_server/DEBIAN/prerm create mode 100644 pandora_server/make_deb_package.sh diff --git a/pandora_server/ChangeLog b/pandora_server/ChangeLog index 5016f916ed..083c0fc866 100644 --- a/pandora_server/ChangeLog +++ b/pandora_server/ChangeLog @@ -1,3 +1,10 @@ +2009-12-03 Miguel de Dios + * DEBIAN/control, DEBIAN/md5sums, DEBIAN/postinst, DEBIAN/prerm, + DEBIAN/conffiles: debian base files for to make a .deb package. + * make_deb_package.sh: shell script for make automatically the deb package + for standard installation in a Debian Lenny, this script make a package + "pandorafms.server_3.0.0.rc1.deb" and the other necesary packages (perl). + 2009-11-01 Ramon Novoa * util/pandora_db.pl: Date::Manip is not used anymore. diff --git a/pandora_server/DEBIAN/conffiles b/pandora_server/DEBIAN/conffiles new file mode 100755 index 0000000000..7a4bd226ed --- /dev/null +++ b/pandora_server/DEBIAN/conffiles @@ -0,0 +1 @@ +/etc/pandora/pandora_server.conf diff --git a/pandora_server/DEBIAN/control b/pandora_server/DEBIAN/control new file mode 100644 index 0000000000..7c19fa3330 --- /dev/null +++ b/pandora_server/DEBIAN/control @@ -0,0 +1,10 @@ +package: PandoraFMS-Server +Version: 3.0.0.rc1 +Architecture: all +Priority: optional +Section: admin +Installed-Size: 640 +Maintainer: Miguel de Dios +Homepage: http://pandorafms.org/ +Depends: perl (>= 5.8), libmail-sendmail-perl, libdbi-perl, libdbd-mysql-perl,libtime-format-perl, libnetaddr-ip-perl, libdate-manip-perl, libtime-format-perl, libxml-simple-perl, libnetaddr-ip-perl, libhtml-parser-perl, snmp, snmpd, traceroute, xprobe2, nmap, sudo, logrotate +Description: Pandora FMS is a monitoring system for big IT environments. It uses remote tests, or local agents to grab information. Pandora supports all standard OS (Linux, AIX, HP-UX, Solaris and Windows XP,2000/2003), and support multiple setups in HA enviroments. diff --git a/pandora_server/DEBIAN/md5sums b/pandora_server/DEBIAN/md5sums new file mode 100644 index 0000000000..e69de29bb2 diff --git a/pandora_server/DEBIAN/postinst b/pandora_server/DEBIAN/postinst new file mode 100755 index 0000000000..59f076898e --- /dev/null +++ b/pandora_server/DEBIAN/postinst @@ -0,0 +1,119 @@ +#!/bin/bash + +get_distro () { + # Get Linux Distro type and version + # We assume we are on Linux unless told otherwise + LINUX=YES + if [ -f "/etc/SuSE-release" ] + then + OS_VERSION=`cat /etc/SuSE-release | grep VERSION | cut -f 3 -d " "` + LINUX_DISTRO=SUSE + elif [ -f "/etc/lsb-release" ] + then + OS_VERSION=`cat /etc/lsb-release | grep DISTRIB_RELEASE | cut -f 2 -d "="` + LINUX_DISTRO=UBUNTU + OS_VERSION="UBUNTU $OS_VERSION" + elif [ -f "/etc/debian_version" ] + then + OS_VERSION=`cat /etc/debian_version` + OS_VERSION="DEBIAN $OS_VERSION" + LINUX_DISTRO=DEBIAN + elif [ -f "/etc/fedora-release" ] + then + OS_VERSION=`cat /etc/fedora-release | cut -f 4 -d " "` + OS_VERSION="FEDORA $OS_VERSION" + LINUX_DISTRO=FEDORA + elif [ `uname -s` == "Darwin" ] + then + # For future reference, Darwin doesn't have /etc/init.d but uses LaunchDaemons + LINUX_DISTRO="Darwin" + OS_VERSION=`uname -r` + LINUX=NO + elif [ `uname -s` == "AIX" ] + then + # For future reference, AIX doesn't have /etc/init.d + LINUX_DISTRO="AIX" + OS_VERSION=`uname -r` + LINUX=NO + elif [ `uname -s` == "SunOS" ] + then + # Some Solaris and other Unices don't have /etc/init.d, some have /usr/spool instead of /var/spool + LINUX_DISTRO="Solaris" + OS_VERSION=`uname -r` + LINUX=NO + elif [ `uname -s` == "Linux" ] + then + # Test for Linux to make sure we're on Linux + LINUX_DISTRO="GENERIC" + OS_VERSION=`uname -r` + else + # Default to Linux is false, test for real Linux above - that way we don't assume we can just plunk down files everywhere + LINUX_DISTRO=`uname -s` + OS_VERSION=`uname -r` + LINUX=NO + fi + echo "$LINUX_DISTRO:$OS_VERSION:$LINUX" +} + + + +echo "Giving proper permission to /var/spool/pandora" +id -g www-data > /dev/null +if [ $? -eq 0 ] +then + chown -R pandora:www-data /var/spool/pandora/ +else + id -g www > /dev/null + if [ $? -eq 0 ] + then + chown -R pandora:www /var/spool/pandora/ + else + id -g apache > /dev/null + if [ $? -eq 0 ] + then + chown -R pandora:apache /var/spool/pandora/ + else + echo "No web server user found, some functionality might not perform correctly" + chown -R pandora:root /var/spool/pandora + fi + fi +fi + +chmod 770 /etc/pandora/pandora_server.conf + +GET_DISTRO="`get_distro`" +DISTRO=`echo $GET_DISTRO | cut -f 1 -d ":"` + +if [ "$DISTRO" == "UBUNTU" ] +then + echo "Linking startup script to /etc/rc2.d" + ln -s /etc/init.d/pandora_server /etc/rc2.d/S90pandora_server +else + INITLV=`cat /etc/inittab | grep "[0-9]\:initdefault" | cut -f 2 -d ":"` + echo "Linking startup script to /etc/rc.d/rc$INITLV.d" + ln -s /etc/init.d/pandora_server /etc/rc.d/rc$INITLV.d/S90pandora_server +fi + +if [ "$DISTRO" == "UBUNTU" ] +then + # Tentacle server install (Ubuntu) + echo "Installing tentacle server in /etc/rc2.d/S80tentacle_serverd" + ln -s /etc/init.d/tentacle_serverd /etc/rc2.d/S80tentacle_serverd +else + # Tentacle server install (SUSE) + echo "Installing tentacle server in /etc/rc.d/rc$INITLV.d/S80tentacle_serverd" + ln -s /etc/init.d/tentacle_serverd /etc/rc.d/rc$INITLV.d/S80tentacle_serverd +fi + +if [ -d /etc/cron.daily ] +then + echo "Create the Cron script to run daily Pandora DB tool" + echo "#!/bin/bash" > /etc/cron.daily/pandora_db + echo "perl /usr/share/pandora_server/util/pandora_db.pl /etc/pandora/pandora_server.conf" >> /etc/cron.daily/pandora_db + chmod 750 /etc/cron.daily/pandora_db +else + echo "You're probably not using cron for automatic scheduling. You should schedule the following command to run frequently (daily) on your master server:" + echo " perl /usr/share/pandora_server/util/pandora_db.pl /etc/pandora/pandora_server.conf" +fi + +echo "Please, now, edit the /etc/pandora/pandora_server.conf and launch the Pandora Server with /etc/init.d/Pandora ." diff --git a/pandora_server/DEBIAN/prerm b/pandora_server/DEBIAN/prerm new file mode 100755 index 0000000000..4e1a67b492 --- /dev/null +++ b/pandora_server/DEBIAN/prerm @@ -0,0 +1,76 @@ +#!/bin/bash + +get_distro () { + # Get Linux Distro type and version + # We assume we are on Linux unless told otherwise + LINUX=YES + if [ -f "/etc/SuSE-release" ] + then + OS_VERSION=`cat /etc/SuSE-release | grep VERSION | cut -f 3 -d " "` + LINUX_DISTRO=SUSE + elif [ -f "/etc/lsb-release" ] + then + OS_VERSION=`cat /etc/lsb-release | grep DISTRIB_RELEASE | cut -f 2 -d "="` + LINUX_DISTRO=UBUNTU + OS_VERSION="UBUNTU $OS_VERSION" + elif [ -f "/etc/debian_version" ] + then + OS_VERSION=`cat /etc/debian_version` + OS_VERSION="DEBIAN $OS_VERSION" + LINUX_DISTRO=DEBIAN + elif [ -f "/etc/fedora-release" ] + then + OS_VERSION=`cat /etc/fedora-release | cut -f 4 -d " "` + OS_VERSION="FEDORA $OS_VERSION" + LINUX_DISTRO=FEDORA + elif [ `uname -s` == "Darwin" ] + then + # For future reference, Darwin doesn't have /etc/init.d but uses LaunchDaemons + LINUX_DISTRO="Darwin" + OS_VERSION=`uname -r` + LINUX=NO + elif [ `uname -s` == "AIX" ] + then + # For future reference, AIX doesn't have /etc/init.d + LINUX_DISTRO="AIX" + OS_VERSION=`uname -r` + LINUX=NO + elif [ `uname -s` == "SunOS" ] + then + # Some Solaris and other Unices don't have /etc/init.d, some have /usr/spool instead of /var/spool + LINUX_DISTRO="Solaris" + OS_VERSION=`uname -r` + LINUX=NO + elif [ `uname -s` == "Linux" ] + then + # Test for Linux to make sure we're on Linux + LINUX_DISTRO="GENERIC" + OS_VERSION=`uname -r` + else + # Default to Linux is false, test for real Linux above - that way we don't assume we can just plunk down files everywhere + LINUX_DISTRO=`uname -s` + OS_VERSION=`uname -r` + LINUX=NO + fi + echo "$LINUX_DISTRO:$OS_VERSION:$LINUX" +} + +rm /etc/pandora/pandora_server.conf + +GET_DISTRO="`get_distro`" +DISTRO=`echo $GET_DISTRO | cut -f 1 -d ":"` + +if [ "$DISTRO" == "UBUNTU" ] +then + rm /etc/init.d/pandora_server /etc/rc2.d/S90pandora_server + rm /etc/init.d/tentacle_serverd /etc/rc2.d/S80tentacle_serverd +else + INITLV=`cat /etc/inittab | grep "[0-9]\:initdefault" | cut -f 2 -d ":"` + rm /etc/init.d/pandora_server /etc/rc.d/rc$INITLV.d/S90pandora_server + rm /etc/init.d/tentacle_serverd /etc/rc.d/rc$INITLV.d/S80tentacle_serverd +fi + +if [ -d /etc/cron.daily ] +then + rm /etc/cron.daily/pandora_db +fi diff --git a/pandora_server/make_deb_package.sh b/pandora_server/make_deb_package.sh new file mode 100644 index 0000000000..92d88fc884 --- /dev/null +++ b/pandora_server/make_deb_package.sh @@ -0,0 +1,136 @@ +#!/bin/bash + +#Pandora FMS- http:#pandorafms.com +# ================================================== +# Copyright (c) 2005-2009 Artica Soluciones Tecnologicas +# Please see http:#pandorafms.org for full contribution list + +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public License +# as published by the Free Software Foundation; version 2 + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +pandora_console_version="3.0.0.rc1" + +echo "This script to make deb must run as root (because the dh-make-perl need this). Then test if you are root." +if [ `id -u` != 0 ] +then + echo "You aren't root." + exit 1 +fi + +echo Test if you has the tools for to make the packages. +whereis dh-make-perl | cut -d":" -f2 | grep dh-make-perl > /dev/null +if [ $? = 1 ] +then + echo No found \"dh-make-perl\" aplication, please install. + exit 1 +else + echo Found \"dh-make-perl\". +fi + +echo Make a \"temp_package\" temp dir for job. +mkdir temp_package + +echo Make the fake tree system in \"temp_package\". +mkdir temp_package/var +mkdir temp_package/var/spool +mkdir temp_package/var/spool/pandora +mkdir temp_package/var/spool/pandora/data_in +mkdir temp_package/var/spool/pandora/data_in/conf +mkdir temp_package/var/spool/pandora/data_in/md5 +mkdir temp_package/var/log +mkdir temp_package/var/log/pandora +mkdir temp_package/etc +mkdir temp_package/etc/pandora +mkdir temp_package/etc/init.d/ +mkdir temp_package/etc/logrotate.d +mkdir temp_package/usr +mkdir temp_package/usr/share +mkdir temp_package/usr/share/pandora_server +mkdir temp_package/usr/local +mkdir temp_package/usr/local/bin + +echo Make the perl of Pandora Server. +perl Makefile.PL +make +cat Makefile | sed -e "s/PREFIX = \/usr/PREFIX = temp_package\/usr/" > Makefile.temp +mv Makefile.temp Makefile +rm Makefile.temp +make install + +echo Copy other files in fake file. +cp util/pandora_logrotate temp_package/etc/logrotate.d/pandora + +cp bin/tentacle_server temp_package/usr/local/bin +cp util/tentacle_serverd temp_package/etc/init.d/tentacle_serverd + +cp conf/pandora_server.conf temp_package/etc/pandora/ +cp util/pandora_server temp_package/etc/init.d/ + +cp -R util temp_package/usr/share/pandora_server + +cp -R DEBIAN temp_package/ + +echo Remove the SVN files. +for item in `find temp_package` +do + echo -n "." + echo $item | grep "svn" > /dev/null + #last command success + if [ $? -eq 0 ] + then + rm -rf $item + fi +done + +echo "" + +echo Calcule md5sum for md5sums file control of package +for item in `find temp_package` +do + echo -n "." + if [ ! -d $item ] + then + echo $item | grep "DEBIAN" > /dev/null + #last command success + if [ $? -eq 1 ] + then + md5=`md5sum $item | cut -d" " -f1` + + #delete "temp_package" in the path + final_path=${item#temp_package} + echo $md5" "$final_path >> temp_package/DEBIAN/md5sums + fi + fi +done + +exit + +echo "" + +echo "Make the package \"Pandorafms server\"." +dpkg-deb --build temp_package +mv temp_package.deb pandorafms.server_$pandora_console_version.deb +chmod 777 pandorafms.server_$pandora_console_version.deb + +echo Make the package \"libnet-traceroute-pureperl-perl\". +cd temp_package +dh-make-perl --build --cpan Net::Traceroute::PurePerl +chmod 777 libnet-traceroute-pureperl-perl*.deb +mv libnet-traceroute-pureperl-perl*.deb .. +cd .. + +echo Make the package \"libnet-traceroute-perl\". +cd temp_package +dh-make-perl --build --cpan Net::Traceroute +chmod 777 libnet-traceroute-perl*.deb +mv libnet-traceroute-perl*.deb .. +cd .. + +echo Delete the \"temp_package\" temp dir for job. +rm -rf temp_package