File nagios.spec of Package nagios
#
# spec file for package nagios (Version 3.0.6)
#
# Copyright (c) 2008 Scorpio IT, Deidesheim, Germany
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via <rpm@scorpio-it.net>
#
# norootforbuild
%if %{?rel:0}%{!?rel:1}
%define rel 1
%endif
#Distribution: %dist
#Packager: %packager
#Vendor: %vendor
Name: nagios
%define nsusr %{name}
%define nsgrp %{name}
%define cmdusr wwwrun
%define cmdgrp www
%define nslockfile_dir /var/run/%{name}
%define nslockfile %{nslockfile_dir}/%{name}.pid
%define apxs2 /usr/sbin/apxs2
%define apache2_sysconfdir %(%{apxs2} -q SYSCONFDIR)
# Macro that print mesages to syslog at package (un)install time
%define nnmmsg /bin/logger -t %{name}/rpm
Summary: The Nagios Network Monitor
Version: 3.0.6
Release: %{rel}.%{pid}
License: GPL v2 or later
Group: System/Monitoring
URL: http://www.%{name}.org/
Source0: %{name}-%{version}.tar.bz2
Source1: rc%{name}
Source2: %{name}-rpmlintrc
Source3: %{name}.sysconfig
Source4: suse.de-nagios
Source6: %{name}.logrotate
Source10: %{name}-README.SuSE
Patch1: %{name}.run_async_service_check.return.patch
Patch10: %{name}-p1.pl-location.patch
#Patch20: %{name}-2.12-%{name}QL.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
PreReq: %insserv_prereq %fillup_prereq coreutils pwdutils sed grep
PreReq: /bin/logger
BuildRequires: audit krb5 libgssapi
BuildRequires: apache2-devel freetype2-devel gd-devel iputils
BuildRequires: libjpeg-devel libpng-devel mailx openssl-devel
BuildRequires: pcre-devel perl traceroute zlib-devel
%if 0%{?suse_version} < 1010
BuildRequires: libapr0 XFree86-devel XFree86-libs
%else
BuildRequires: libapr-util1-devel xorg-x11-devel
%endif
%if 0%{?suse_version} > 1020
BuildRequires: fdupes
%endif
Requires: cron mailx %{name}-plugins logrotate
#----------------------------------------------------------------------
%description
#----------------------------------------------------------------------
The Nagios Network Monitor
patched for use with nagiosQL :)
Authors: Ethan Galstad <%{name}@%{name}.org>
----------------------------------------------------------------------
#----------------------------------------------------------------------
%package www
#----------------------------------------------------------------------
Summary: Provides the HTML and CGI files for the Nagios web interface
Group: System/Monitoring
#License: GPL v2 or later
PreReq: apache2 coreutils pwdutils sed grep gawk /bin/logger
Requires: %{name} = %{version}
Requires: gd
#----------------------------------------------------------------------
%description www
#----------------------------------------------------------------------
Nagios Network Monitor
Several CGI programs are included with Nagios in order to allow you to
view the current service status, problem history, notification history,
and log file via the web. This package provides the HTML and CGI files
for the Nagios web interface. In addition, HTML documentation is
included in this package.
Authors: Ethan Galstad <%{name}@%{name}.org>
----------------------------------------------------------------------
#----------------------------------------------------------------------
%package devel
#----------------------------------------------------------------------
Summary: Development files for nagios
Group: Development/Libraries/C and C++
#License: GPL v2 or later
Requires: %{name} = %{version}
Requires: gcc
#----------------------------------------------------------------------
%description devel
#----------------------------------------------------------------------
Nagios Network Monitor
This package provides include files that Nagios-related applications
may compile against.
Authors: Ethan Galstad <%{name}@%{name}.org>
----------------------------------------------------------------------
#----------------------------------------------------------------------
%prep
#----------------------------------------------------------------------
%setup -n %{name}-%{version}
%patch1 -p1
#%patch2 -p1
#%patch3 -p1
#%patch4 -p1
%patch10
#%patch20 -p1
# cleanup sources
find -name ".cvsignore" | xargs rm
find -name ".gitignore" | xargs rm
#----------------------------------------------------------------------
%build
#----------------------------------------------------------------------
/usr/sbin/apxs2 -q DATADIR >/dev/null
%configure \
--prefix=%{_prefix} \
--exec-prefix=%{_prefix}/sbin \
--bindir=%{_sbindir} \
--sbindir=%{_prefix}/lib/%{name}/cgi \
--libexecdir=%{_prefix}/lib/%{name}/plugins \
--datadir=%{_datadir}/%{name} \
--sysconfdir=%{_sysconfdir}/%{name} \
--with-init-dir=%{_sysconfdir}/init.d \
--localstatedir=/var/lib/%{name} \
--with-cgiurl=/%{name}/cgi-bin \
--with-htmurl=/%{name} \
--with-httpd-conf=%{apache2_sysconfdir}/conf.d \
--with-checkresult-dir=/var/spool/%{name} \
--with-lockfile=%{nslockfile} \
--with-nagios-user=%{nsusr} \
--with-nagios-grp=%{nsgrp} \
--with-command-user=%{cmdusr} \
--with-command-group=%{cmdgrp} \
--with-gd-lib=%{_libdir} \
--with-gd-inc=%{_includedir} \
--with-template-objects \
--with-template-extinfo \
--with-perlcache \
--enable-event-broker \
--enable-embedded-perl
# --with-nagiosQL
#
# %bindir/p1.pl is not a good place for a perl-_module_!
#
%{__sed} -i 's#@p1pldir@#%{_prefix}/lib/%{name}#g' Makefile include/locations.h sample-config/%{name}.cfg
#
# fix p1.pl debug-path
#
%{__sed} -i 's#/usr/local/%{name}/var/#/var/log/%{name}/#g' p1.pl
# make rpmlint happy: add shebang to p1.pl
%{__sed} -i -e '1i #!/usr/bin/perl' p1.pl
#echo "#!/usr/bin/perl" > p1.pl.new
#cat p1.pl >> p1.pl.new
#mv p1.pl.new p1.pl
#
# make daemonchk.cgi and event handlers
#
make %{?_smp_mflags} all
make %{?_smp_mflags} -C contrib
pushd contrib/eventhandlers 1>/dev/null
for f in `find . -type f` ; do
F=`mktemp temp.XXXXXX`
sed "s=/usr/local/%{name}/var/rw/=/var/spool/%{name}/=; \
s=/usr/local/%{name}/libexec/eventhandlers/=%{_prefix}/lib/%{name}/plugins/eventhandlers/=; \
s=/usr/local/%{name}/libexec/=%{_prefix}/lib/%{name}/plugins/=; \
s=/usr/local/%{name}/etc/=%{_sysconfdir}/%{name}/=; \
s=/usr/local/%{name}/test/var=/var/log/%{name}=" ${f} > ${F}
mv ${F} ${f}
done
popd 1>/dev/null
#----------------------------------------------------------------------
%install
#----------------------------------------------------------------------
%{__install} -d -m 0755 ${RPM_BUILD_ROOT}/var/adm/fillup-templates
%{__install} -d -m 0775 ${RPM_BUILD_ROOT}/var/log/%{name}/archives
%{__install} -d -m 0775 ${RPM_BUILD_ROOT}/var/spool/%{name}
%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{_prefix}/include/%{name}
%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{_sysconfdir}/cron.weekly
%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{_sysconfdir}/init.d
%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d
%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{apache2_sysconfdir}/conf.d
%{__install} -d -m 0755 ${RPM_BUILD_ROOT}%{nslockfile_dir}
%{__make} install install-commandmode install-config install-webconf \
DESTDIR=${RPM_BUILD_ROOT} \
INSTALL_OPTS="" \
COMMAND_OPTS="" \
CGICFGDIR=%{_sysconfdir}/%{name}
INIT_OPTS=""
%{__make} install -C contrib \
DESTDIR=${RPM_BUILD_ROOT} \
INSTALL_OPTS="" \
# install event handlers
%{__install} -d -m0755 ${RPM_BUILD_ROOT}%{_prefix}/lib/%{name}/plugins/eventhandlers/
%{__cp} -afpv contrib/eventhandlers/* ${RPM_BUILD_ROOT}%{_prefix}/lib/%{name}/plugins/eventhandlers/
# install directory for event brokers like ndoutils
%{__install} -d -m0755 ${RPM_BUILD_ROOT}%{_prefix}/lib/%{name}/brokers
# install headers for development package
%{__install} -d -m0755 ${RPM_BUILD_ROOT}%{_includedir}/%{name}/
pushd include
for file in *.h; do
if test "x${file}" != "xconfig.h" -a "x${file}" != "xsnprintf.h" -a "x${file}" != "xcgiutils.h" ; then
install -m 644 $file ${RPM_BUILD_ROOT}%{_includedir}/%{name}/
fi;
done
popd
#
# cleanup sample-conf dir for including in docdir
#
find sample-config/ -name "*.in" -exec rm {} \;
find sample-config/ -name "*.in.orig" -exec rm {} \;
sed -e 's|command_file=.*|command_file=/var/spool/%{name}/%{name}.cmd|g' \
-e 's|log_file=/var/lib/%{name}/%{name}.log|log_file=/var/log/%{name}/%{name}.log|g' \
-e 's|log_archive_path=/var/lib/%{name}/archives|log_archive_path=/var/log/%{name}/archives|g' \
${RPM_BUILD_ROOT}/%{_sysconfdir}/%{name}/%{name}.cfg > ${RPM_BUILD_ROOT}/%{_sysconfdir}/%{name}/%{name}.cfg.tmp
mv ${RPM_BUILD_ROOT}/%{_sysconfdir}/%{name}/%{name}.cfg.tmp ${RPM_BUILD_ROOT}/%{_sysconfdir}/%{name}/%{name}.cfg
#
# install SuSE specials
#
# README.SuSE file
sed -e 's@DATADIR@%{_datadir}/%{name}@g' -e 's@SYSCONFDIR@%{_sysconfdir}/%{name}@g' %{SOURCE10} > %_builddir/%{name}-%version/README.SuSE
# init-script
install -m 755 %{SOURCE1} ${RPM_BUILD_ROOT}%{_sysconfdir}/init.d/%{name}
%{__ln_s} -f ../..%{_sysconfdir}/init.d/%{name} ${RPM_BUILD_ROOT}/usr/sbin/rc%{name}
# sysconfig script
install -m 644 %{SOURCE3} ${RPM_BUILD_ROOT}/var/adm/fillup-templates/sysconfig.nagios
%if 0%{?suse_version} > 1020
%fdupes -s ${RPM_BUILD_ROOT}
%endif
# install cronjob (gzip' the logfiles)
install -m640 %{SOURCE4} ${RPM_BUILD_ROOT}/%{_sysconfdir}/cron.weekly/
# install logrotate script
%{__install} -m 644 %{SOURCE6} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/%{name}
# important ghost files
touch ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/htpasswd.users
touch ${RPM_BUILD_ROOT}/var/lib/%{name}/retention.dat
touch ${RPM_BUILD_ROOT}/var/lib/%{name}/status.dat
touch ${RPM_BUILD_ROOT}/var/log/%{name}/config.err
touch ${RPM_BUILD_ROOT}%{nslockfile}
#
#%{__sed} "s@^NAGIOS_PID=.*@NAGIOS_PID=%{nslockfile}@" %{SOURCE1} > ${RPM_BUILD_ROOT}/etc/init.d/%{name}
%{__install} -m 644 %{SOURCE6} ${RPM_BUILD_ROOT}%{_sysconfdir}/logrotate.d/%{name}
# move files not needed by nagiosQL
#%{__install} -d -m 755 ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/sample
#%{__mv} ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/{commands,localhost}.cfg ${RPM_BUILD_ROOT}%{_sysconfdir}/%{name}/sample/
#----------------------------------------------------------------------
%pre
#----------------------------------------------------------------------
#echo "PARAM_pre: "$1
# on `rpm -ivh` PARAM is 1
# on `rpm -Uvh` PARAM is 2
if [ "$1" = "1" ]; then
#/usr/sbin/groupadd -r %{name} 2> /dev/null || :
if [ -z "`%__grep "%{nsgrp}:"/etc/group 2>/dev/null`" ]; then
%{_sbindir}/groupadd -r %{nsgrp}
fi
#/usr/sbin/useradd -r -o -g %{name} -s /bin/false -c "User for Nagios" -d /var/lib/%{name} %{name} 2> /dev/null || :
if [ -z "`%__grep "^%{nsusr}" /etc/passwd 2>/dev/null`" ]; then
%{_sbindir}/useradd -r -o -g %{nsusr} -s /bin/false -c "User for Nagios" -d /var/lib/%{name} %{nsusr}
fi
fi
#----------------------------------------------------------------------
%post
#----------------------------------------------------------------------
#set -x
%{fillup_and_insserv nagios}
# Update ?
if [ ${1:-0} -gt 1 ]; then
if [ -f %{_sysconfdir}/%{name}/%{name}.cfg ]; then
DATE=$(date "+%Y-%m-%d-%H:%M")
TMPFILE=$(mktemp /tmp/%{name}-XXXXXX)
NAGIOS_CFG=%{_sysconfdir}/%{name}/%{name}.cfg
cp -f ${NAGIOS_CFG} ${NAGIOS_CFG}_${DATE}
if ! grep -q ^lock_file=%{nslockfile} ${NAGIOS_CFG} ; then
echo "- updating pid lock_file= to %{nslockfile} in ${NAGIOS_CFG}" >> $TMPFILE
sed -i "s@^lock_file=.*@lock_file=%{nslockfile}@" ${NAGIOS_CFG}
fi
if grep -q ^service_reaper_frequency ${NAGIOS_CFG} ; then
echo "- renaming service_reaper_frequency to check_result_reaper_frequency in ${NAGIOS_CFG}" >> $TMPFILE
sed -i "s@service_reaper_frequency@check_result_reaper_frequency@" ${NAGIOS_CFG}
fi
if grep -q ^aggregate_status_updates ${NAGIOS_CFG} ; then
echo "- aggregate_status_updates option has been removed from ${NAGIOS_CFG}" >> $TMPFILE
sed -i "s@^aggregate_status_updates@# aggregate_status_updates@" ${NAGIOS_CFG}
fi
if grep -q ^downtime_file ${NAGIOS_CFG} ; then
set -- $(grep ^downtime_file ${NAGIOS_CFG} | sed 's@=@ @')
shift
file=$(echo $*)
if [ -n "$file" ]; then
if [ -f "$file" ]; then
set -- $(grep ^state_retention_file ${NAGIOS_CFG} | sed 's@=@ @')
shift
state_retention_file=$(echo $*)
echo "- adding the content of of $file to $state_retention_file" >> $TMPFILE
cat "$file" >> "$state_retention_file"
fi
fi
echo "- removing downtime_file variable (no longer supported) in ${NAGIOS_CFG}" >> $TMPFILE
sed -i "s@^downtime_file@# downtime_file@" ${NAGIOS_CFG}
fi
if grep -q ^comment_file ${NAGIOS_CFG} ; then
set -- $(grep ^comment_file ${NAGIOS_CFG} | sed 's@=@ @')
shift
file=$(echo $*)
if [ -n "$file" ]; then
if [ -f "$file" ]; then
echo "- adding the content of $file to $state_retention_file" >> $TMPFILE
cat "$file" >> "$state_retention_file"
fi
fi
echo "- removing comment_file variable (no longer supported) in ${NAGIOS_CFG}" >> $TMPFILE
sed -i "s@^comment_file@# comment_file@" ${NAGIOS_CFG}
fi
%{nnmmsg} $(cat $TMPFILE)
rm $TMPFILE
fi
else
# First installation: create an alias for the default nagiosadmin user
if [ -r etc/aliases ]; then
if ! grep -q "^nagiosadmin:" etc/aliases; then
echo -e "nagiosadmin:\troot" >> etc/aliases
%{nnmmsg} "Added alias for user nagiosadmin to /etc/aliases"
if [ -x usr/bin/newaliases ]; then
usr/bin/newaliases &>/dev/null || true
else
%{nnmmsg} "Cannot execute newaliases. Please run it manually."
fi
fi
fi
fi
#----------------------------------------------------------------------
%preun
#----------------------------------------------------------------------
%stop_on_removal nagios
#----------------------------------------------------------------------
%postun
#----------------------------------------------------------------------
if test -f %{nslockfile}; then
%{__chown} -v %{nsusr} %{nslockfile}
fi
%restart_on_update nagios
%{insserv_cleanup}
#----------------------------------------------------------------------
%post www
#----------------------------------------------------------------------
%restart_on_update apache2
#----------------------------------------------------------------------
%preun www
#----------------------------------------------------------------------
%restart_on_update apache2
#----------------------------------------------------------------------
%clean
#----------------------------------------------------------------------
[ "${RPM_BUILD_ROOT}" != "/" ] && [ -d ${RPM_BUILD_ROOT} ] && %{__rm} -rf ${RPM_BUILD_ROOT}
#----------------------------------------------------------------------
%files
#----------------------------------------------------------------------
%defattr(-,root,root)
%doc Changelog LICENSE README* UPGRADING sample-config
%dir %attr(755,%{cmdusr},%{nsgrp}) %{_sysconfdir}/%{name}
%dir %attr(755,%{cmdusr},%{nsgrp}) %{_sysconfdir}/%{name}/objects
#%config(noreplace) %attr(644,%{cmdusr},%{nsgrp}) %{_sysconfdir}/%{name}/sample/*.cfg
#%dir %attr(755,%{cmdusr},%{nsgrp}) %{_sysconfdir}/%{name}/backup
#%dir %attr(755,%{cmdusr},%{nsgrp}) %{_sysconfdir}/%{name}/backup/hosts
#%dir %attr(755,%{cmdusr},%{nsgrp}) %{_sysconfdir}/%{name}/backup/services
#%dir %attr(755,%{cmdusr},%{nsgrp}) %{_sysconfdir}/%{name}/hosts
#%dir %attr(755,%{cmdusr},%{nsgrp}) %{_sysconfdir}/%{name}/sample
#%dir %attr(755,%{cmdusr},%{nsgrp}) %{_sysconfdir}/%{name}/services
%dir %attr(755,%{nsusr},%{nsgrp}) /var/lib/%{name}
%dir %attr(755,%{nsusr},%{nsgrp}) /var/log/%{name}
%dir %attr(755,%{nsusr},%{nsgrp}) /var/log/%{name}/archives
#%dir %attr(755,%{nsusr},root) /var/run/%{name}
%dir %attr(755,%nsusr,%nsgrp) %{nslockfile_dir}
%dir %attr(2775,%{nsusr},%{cmdgrp}) /var/spool/%{name}
%attr(0755,root,root) %{_sysconfdir}/init.d/%{name}
%attr(0644,%{nsusr},%{nsgrp}) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/%{name}/%{name}.pid
%attr(0600,%{nsusr},%{nsgrp}) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/lib/%{name}/retention.dat
%attr(0644,%{nsusr},%{nsgrp}) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/lib/%{name}/status.dat
%ghost %config(missingok,noreplace) /var/log/%{name}/config.err
%config %{_sysconfdir}/logrotate.d/%{name}
%config(noreplace) %attr(644,%{cmdusr},%{nsgrp}) %{_sysconfdir}/%{name}/*.cfg
#%config(noreplace) %attr(644,%{cmdusr},%{nsgrp}) %{_sysconfdir}/%{name}/[!r]*.cfg
#%config(noreplace) %attr(640,root,%{cmdgrp}) %{_sysconfdir}/%{name}/resource.cfg
%config(noreplace) %attr(644,%{cmdusr},%{nsgrp}) %{_sysconfdir}/%{name}/objects/*.cfg
/var/adm/fillup-templates/sysconfig.%{name}
# defattr change
%defattr(755,root,root)
%{_sysconfdir}/cron.weekly/*
%{_prefix}/lib/%{name}
%exclude %{_prefix}/lib/%{name}/cgi/*
%{_prefix}/sbin/convertcfg
%{_prefix}/sbin/mini_epn
%attr(0770,root,%{cmdgrp}) %{_prefix}/sbin/%{name}
%attr(0770,root,%{cmdgrp}) %{_prefix}/sbin/%{name}tats
%{_prefix}/sbin/new_mini_epn
%{_prefix}/sbin/rc%{name}
#----------------------------------------------------------------------
%files www
#----------------------------------------------------------------------
%defattr(755,root,root)
%{_prefix}/lib/%{name}/cgi/*
%defattr(-,root,root)
%config(noreplace) %{apache2_sysconfdir}/conf.d/%{name}.conf
%{_datadir}/%{name}/
%attr(0640,root,%{cmdgrp}) %ghost %config(missingok,noreplace) %{_sysconfdir}/%{name}/htpasswd.users
#----------------------------------------------------------------------
%files devel
#----------------------------------------------------------------------
%defattr(-,root,root)
%dir %{_includedir}/%{name}
%{_includedir}/%{name}/*
#----------------------------------------------------------------------
%changelog -n nagios
#----------------------------------------------------------------------
* Mon Feb 02 2009 - rpm@scorpio-it.net - 3.06
- some rpmlint fixes
* Mon Jan 19 2009 - rpm@scorpio-it.net - 3.06
- upgrade to new version
* Mon Jan 12 2009 - rpm@scorpio-it.net - 2.12
- fixed some errors in spec
- some rpmlint fixes
* Thu Jul 17 2008 - rpm@scorpio-it.net - 2.12
- reworked nagiosQL.patch
- fixed ownership of resource.cfg
* Wed Jun 04 2008 - rpm@scorpio-it.net - 2.12 - 1
- upgrade to new version
* Thu Dec 06 2007 - rpm@scorpio-it.net - 2.10 - 2
- fixed permission on rcnagios
* Thu Nov 01 2007 - rpm@scorpio-it.net - 2.10 - 1
- update to nagios version 2.10
* Added 'make install-webconf' command to install Apache web config file
* Sample config files are now installed without a -sample extension
* Fix for SIGTERMs being seen as SIGEXITs, non-logging of SIGTERMs/shutdowns
* Minor fix for notification timeout log messages
* Fix for not logging passive host check results
* Minor bug fixes in CGIs
* Fix for a segfault when processing passive host check results with empty output/perfdata
* Fix for incorrect latency calculation for passive service checks
* Bug fix with attempting to access an uninitalized mutex if external commands are disabled
* Fix for keeping service checks in the event queue when active service checks are disabled globally
* Fix for a potential cross site scripting vulnerability in the CGIs
* Program version is now displayed in CGIs
- removed obsolete FAQ patch in html/docs dir
- fixed some errors in SPEC
* Mon Sep 24 2007 - rpm@scorpio-it.net - 2.9 - 3
- added some patches from openSuSE:Factory
* Mon Jun 04 2007 - rpm@scorpio-it.net - 2.9 - 2
- moved {commands,localhost}.cfg to sample dir
not needed by nagiosQL
* Mon Apr 30 2007 - rpm@scorpio-it.net - 2.9 - 1
- upgrade to 2.9
* Sun Apr 29 2007 - rpm@scorpio-it.net - 2.5 - 5
- fixed some minor bugs
directory permissions /etc/nagios
missing dependency for nagiosQL
- removed nagiosQL, plugins from package
was a bad idea :)
* Sat Apr 28 2007 - rpm@scorpio-it.net - 2.5 - 4
- added nagiosQL to this package
* Sat Apr 28 2007 - rpm@scorpio-it.net - 2.5 - 3
- added plugins to this package
* Sat Apr 28 2007 - rpm@scorpio-it.net - 2.5 - 2
- mods for use with nagiosQL-2.00-P00
added nagios-2.5-nagiosQL.patch
* Sun Feb 18 2007 - rpm@scorpio-it.net - 2.5 - 1
- first run for SLES10