+# TODO:
+# - initscript for zabbix-server, zabbix-proxy and zabbix-java
#
# Conditional build:
-%bcond_with pgsql # enable postgresql support (by default use mysql)
-#
-%define _beta beta14
-Summary: zabbix - network monitoring software
-Summary(pl): zabbix - oprogramowanie do monitorowania sieci
+%bcond_without pgsql # enable PostgreSQL support
+%bcond_without sqlite3 # enable sqlite3 support
+%bcond_without mysql # enable MySQL support
+%bcond_without java # disable java support
+
+%define databases %{?with_sqlite3:sqlite3} %{?with_pgsql:postgresql} %{?with_mysql:mysql}
+%define any_database %{with pgsql}%{with mysql}%{with sqlite3}
+
+%define php_min_version 5.4.0
+Summary: Zabbix - network monitoring software
+Summary(pl.UTF-8): Zabbix - oprogramowanie do monitorowania sieci
Name: zabbix
-Version: 1.0
-Release: 0.%{_beta}.2
+Version: 4.2.0
+Release: 4
License: GPL v2+
-Group: Networking/Admin
-Source0: http://dl.sourceforge.net/%{name}/%{name}-%{version}%{_beta}.tar.gz
-# Source0-md5: 0ac320c6cd99f801d8cb7923ca790419
-Source1: %{name}-agent.inetd
-Source2: %{name}-trapper.inetd
+Group: Networking/Utilities
+Source0: http://downloads.sourceforge.net/zabbix/%{name}-%{version}.tar.gz
+# Source0-md5: 20f261708f95787f3dbea3eab89f804d
+Source1: %{name}-apache.conf
+Source2: %{name}_server.service
+Source3: %{name}_agentd.service
+Source4: %{name}_proxy.service
+Source5: %{name}_java.service
+Source6: %{name}.tmpfiles
+Source7: %{name}_agentd.init
+Patch0: config.patch
+Patch1: sqlite3_dbname.patch
+Patch2: always_compile_ipc.patch
URL: http://zabbix.sourceforge.net/
-%{!?with_pgsql:BuildRequires: mysql-devel}
-%{?with_pgsql:BuildRequires: postgresql-devel}
+BuildRequires: OpenIPMI-devel
+BuildRequires: autoconf
+BuildRequires: automake >= 1:1.15
+BuildRequires: curl-devel
+BuildRequires: iksemel-devel
+%{?with_java:BuildRequires: jdk}
+BuildRequires: libevent-devel
+BuildRequires: libssh2-devel
+BuildRequires: libtool
+BuildRequires: libxml2-devel
+%{?with_mysql:BuildRequires: mysql-devel}
BuildRequires: net-snmp-devel
+BuildRequires: openldap-devel >= 2.4.6
BuildRequires: openssl-devel >= 0.9.7d
-Requires(pre): /usr/bin/getgid
-Requires(pre): /bin/id
-Requires(pre): /usr/sbin/groupadd
-Requires(pre): /usr/sbin/useradd
-Requires(postun): /usr/sbin/groupdel
-Requires(postun): /usr/sbin/userdel
+BuildRequires: pcre-devel
+%{?with_pgsql:BuildRequires: postgresql-devel}
+BuildRequires: rpmbuild(macros) >= 1.671
+%{?with_sqlite3:BuildRequires: sqlite3-devel}
+BuildRequires: unixODBC-devel
+BuildRequires: zlib-devel
+Requires: %{name}-agentd = %{version}-%{release}
+Requires: %{name}-frontend-php = %{version}-%{release}
+Requires: %{name}-server = %{version}-%{release}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _sysconfdir /etc/%{name}
-%define htmldir /home/services/html/zabbix
+%define _appdir %{_datadir}/%{name}
+%define _webapps /etc/webapps
+%define _webapp %{name}
%description
-zabbix is software that monitors numerous parameters of a network and
-the servers on that network. zabbix is a useful tool for monitoring
-the health and integrity of servers. zabbix uses a flexible
-notification mechanism that allows users to configure email based
-alerts for virtually any event. All monitored parameters are stored in
-a database. zabbix offers excellent reporting and data visualisation
-features based on the stored data. zabbix supports both polling and
-trapping. All zabbix reports and statistics, as well as configuration
+Zabbix is software that monitors numerous parameters of a network and
+the servers on that network. It is a useful tool for monitoring the
+health and integrity of servers. Zabbix uses a flexible notification
+mechanism that allows users to configure email based alerts for
+virtually any event. All monitored parameters are stored in a
+database. Zabbix offers excellent reporting and data visualisation
+features based on the stored data. Zabbix supports both polling and
+trapping. All Zabbix reports and statistics, as well as configuration
parameters, are accessed through a web-based front end.
-%description -l pl
-zabbix to oprogramowanie do monitorowania licznych parametrów sieci i
-serwerów sieciowych. zabbix jest przydatny przy monitorowaniu
-dzia³ania serwerów. zabbix korzysta z elastycznego mechanizmu
-powiadamiania, który pozwala u¿ytkownikom konfigurowaæ powiadamianie
-poczt± elektroniczn± dla praktycznie wszelkich zdarzeñ. Monitorowane
-parametry s± przechowywane w bazie danych. zabbix oferuje, w oparciu o
-przechowywane dane, ¶wietne raportowanie i funkcje wizualizacji.
-zabbix wspiera zarówno odpytywanie, jak i pu³apkowanie. Dostêp do
-wszystkich raportów i statystyk zabbiksa jest mo¿liwy poprzez
-interfejs oparty o WWW.
+%description -l pl.UTF-8
+Zabbix to oprogramowanie do monitorowania licznych parametrów sieci i
+serwerów sieciowych. Jest przydatny przy monitorowaniu działania
+serwerów. Jorzysta z elastycznego mechanizmu powiadamiania, który
+pozwala użytkownikom konfigurować powiadamianie pocztą elektroniczną
+dla praktycznie wszelkich zdarzeń. Monitorowane parametry są
+przechowywane w bazie danych. W oparciu o przechowywane dane Zabbix
+oferuje świetne raportowanie i funkcje wizualizacji. Wspiera zarówno
+odpytywanie jak i pułapkowanie. Dostęp do wszystkich raportów i
+statystyk Zabbiksa jest możliwy poprzez interfejs oparty o WWW.
+
+%package common
+Summary: Common files for Zabbix monitoring software
+Summary(pl.UTF-8): Wspólne pliki dla oprogramowania monitorującego Zabbix
+Group: Networking/Utilities
+Requires(postun): /usr/sbin/groupdel
+Requires(postun): /usr/sbin/userdel
+Requires(pre): /bin/id
+Requires(pre): /usr/bin/getgid
+Requires(pre): /usr/sbin/groupadd
+Requires(pre): /usr/sbin/useradd
+Provides: group(zabbix)
+Provides: user(zabbix)
+
+%description common
+Common files for Zabbix monitoring software.
+
+%description common -l pl.UTF-8
+Wspólne pliki dla oprogramowania monitorującego Zabbix.
+
+%package agentd
+Summary: Zabbix Agent
+Summary(pl.UTF-8): Agenta Zabbiksa
+Group: Networking/Utilities
+Requires: %{name}-common = %{version}-%{release}
+Requires: systemd-units >= 38
+Obsoletes: zabbix-agent-inetd
+Obsoletes: zabbix-agent-standalone
+Requires(post,preun): /sbin/chkconfig
+Requires: rc-scripts
+
+%description agentd
+Zabbix agent collects data from the local system for a Zabbix server.
+
+%description agentd -l pl.UTF-8
+Agent zbiera dane z lokalnej maszyny dla serwera Zabbix.
%package frontend-php
-Summary: PHP frontend for zabbix
-Summary(pl): Interfejs PHP dla zabbiksa
-Group: Networking/Admin
-Requires: apache
-Requires: php
-%{!?with_pgsql:Requires: php-mysql}
-%{?with_pgsql:Requires: php-pgsql}
+Summary: PHP frontend for Zabbix
+Summary(pl.UTF-8): Interfejs PHP dla Zabbiksa
+Group: Applications/WWW
+Requires: php(bcmath)
+Requires: php(core) >= %{php_min_version}
+Requires: php(ctype)
+Requires: php(gd)
+Requires: php(gettext)
+Requires: php(json)
+Requires: php(mbstring)
+Requires: php(pcre)
+Requires: php(session)
+Requires: php(sockets)
+Requires: php(xml)
+Requires: php(xmlreader)
+Requires: php(xmlwriter)
+Requires: webapps
+Requires: webserver(alias)
+Requires: webserver(indexfile)
+Requires: webserver(php)
+Suggests: php(mysql)
+Suggests: php(pgsql)
+Suggests: php(sqlite3)
+# used with sqlite3
+Suggests: php(sysvsem)
+BuildArch: noarch
%description frontend-php
-This package provides web based (PHP) frontend for zabbix.
-
-%description frontend-php -l pl
-Ten pakiet dostarcza napisany w PHP frontend dla zabbiksa.
-
-%package agent-inetd
-Summary: inetd agent for zabbix
-Summary(pl): Wersja inetd agenta zabbiksa
-Group: Networking/Admin
-Requires: %{name} = %{version}
-Requires: inetdaemon
-Obsoletes: %{name}-agent-standalone
-
-%description agent-inetd
-This package provides inetd version of zabbix agent.
-
-%description agent-inetd -l pl
-Ten pakiet dostarcza agenta zabbiksa dla inetd.
-
-%package agent-standalone
-Summary: Standalone agent for zabbix
-Summary(pl): Wersja wolnostoj±ca agenta zabbiksa
-Group: Networking/Admin
-Requires: %{name} = %{version}
-Obsoletes: %{name}-agent-inetd
-
-%description agent-standalone
-This package provides standalone version of zabbix agent.
-
-%description agent-standalone -l pl
-Ten pakiet dostarcza wolnostoj±cej wersji agenta zabbiksa.
-
-%package suckerd
-Summary: sucker daemon for zabbix
-Summary(pl): Demon sucker dla zabbiksa
-Group: Networking/Admin
-Requires: %{name} = %{version}
-%{!?with_pgsql:Requires: mysql}
-%{?with_pgsql:Requires: postgresql}
-
-%description suckerd
-This package provides the sucker daemon for zabbix.
-
-%description suckerd -l pl
-Ten pakiet zawiera demona sucker dla zabbiksa.
-
-%package trapper-inetd
-Summary: inetd trapper for zabbix
-Summary(pl): Wersja inetd programu pu³apkuj±cego zabbiksa
-Group: Networking/Admin
-Requires: %{name} = %{version}
-Requires: inetdaemon
-Obsoletes: %{name}-trapper-standalone
-
-%description trapper-inetd
-This package provides inetd version of zabbix trapper.
-
-%description trapper-inetd -l pl
-Ten pakiet zawiera program pu³apkuj±cy zabbiksa dla inetd.
-
-%package trapper-standalone
-Summary: Standalone trapper for zabbix
-Summary(pl): Wersja wolnostoj±ca programu pu³apkuj±cego zabbiksa
-Group: Networking/Admin
-Requires: %{name} = %{version}
-Obsoletes: %{name}-trapper-inetd
-
-%description trapper-standalone
-This package provides standalone version of zabbix trapper.
-
-%description trapper-standalone -l pl
-Ten pakiet zawiera wolnostoj±c± wersjê programu pu³apkuj±cego
-zabbiksa.
+This package provides web based (PHP) frontend for Zabbix.
+
+%description frontend-php -l pl.UTF-8
+Ten pakiet dostarcza napisany w PHP frontend dla Zabbiksa.
+
+%package get
+Summary: Program retrieving data from Zabbix agent
+Summary(pl.UTF-8): Program odpytujÄcy agenta Zabbiksa
+Group: Networking/Utilities
+
+%description get
+This package provides a program retrieving data from Zabbix agent.
+
+%description get -l pl.UTF-8
+Ten pakiet zawiera program odpytujÄcy agenta Zabbiksa.
+
+%package proxy
+Summary: Zabbix proxy
+Summary(pl.UTF-8): Proxy do Zabbiksa
+Group: Networking/Utilities
+Requires: %{name}-common = %{version}-%{release}
+Requires: systemd-units >= 38
+Requires: zabbix-proxy(db) = %{version}-%{release}
+
+%description proxy
+This package provides the Zabbix proxy.
+
+%description proxy -l pl.UTF-8
+Ten pakiet zawiera proxy Zabbix.
+
+%package proxy-mysql
+Summary: MySQL support for Zabbix proxy
+Summary(pl.UTF-8): Obsługa MySQL dla proxy do Zabbiksa
+Group: Networking/Utilities
+Provides: %{name}-proxy(db) = %{version}-%{release}
+Obsoletes: zabbix-proxy-postgresql
+Obsoletes: zabbix-proxy-sqlite3
+
+%description proxy-mysql
+This package provides the Zabbix proxy binary with MySQL support.
+
+%description proxy-mysql -l pl.UTF-8
+Ten pakiet zawiera proxy Zabbix z obsługą MySQL.
+
+%package proxy-postgresql
+Summary: PostgreSQL support for Zabbix proxy
+Summary(pl.UTF-8): Obsługa PostgreSQL dla proxy do Zabbiksa
+Group: Networking/Utilities
+Provides: %{name}-proxy(db) = %{version}-%{release}
+Obsoletes: zabbix-proxy-mysql
+Obsoletes: zabbix-proxy-sqlite3
+
+%description proxy-postgresql
+This package provides the Zabbix proxy binary with PostgreSQL support.
+
+%description proxy-postgresql -l pl.UTF-8
+Ten pakiet zawiera proxy Zabbix z obsługą PostgreSQL.
+
+%package proxy-sqlite3
+Summary: SQLite 3 support for Zabbix proxy
+Summary(pl.UTF-8): Obsługa SQLite 3 dla proxy do Zabbiksa
+Group: Networking/Utilities
+Provides: %{name}-proxy(db) = %{version}-%{release}
+Obsoletes: zabbix-proxy-mysql
+Obsoletes: zabbix-proxy-postgresql
+
+%description proxy-sqlite3
+This package provides the Zabbix proxy binary with SQLite 3 support.
+
+%description proxy-sqlite3 -l pl.UTF-8
+Ten pakiet zawiera proxy Zabbix z obsługą SQLite 3.
%package sender
-Summary: zabbix's sender
-Summary(pl): Program zawiadamiaj±cy zabbiksa
-Group: Networking/Admin
+Summary: Zabbix sender
+Summary(pl.UTF-8): Program zawiadamiający Zabbiksa
+Group: Networking/Utilities
%description sender
-This package provides the zabbix sender.
-
-%description sender -l pl
-Ten pakiet zawiera program zawiadamiaj±cy zabbiksa.
+This package provides the Zabbix sender.
+
+%description sender -l pl.UTF-8
+Ten pakiet zawiera program zawiadamiający Zabbiksa.
+
+%package server
+Summary: Zabbix server
+Summary(pl.UTF-8): Serwer Zabbiksa
+Group: Networking/Utilities
+Requires: %{name}-common = %{version}-%{release}
+Requires: %{name}-server(db) = %{version}-%{release}
+Requires: systemd-units >= 38
+Obsoletes: zabbix-suckerd
+Obsoletes: zabbix-trapper-inetd
+Obsoletes: zabbix-trapper-standalone
+
+%description server
+This package provides the Zabbix server.
+
+%description server -l pl.UTF-8
+Ten pakiet zawiera serwer Zabbiksa.
+
+%package server-mysql
+Summary: MySQL support for Zabbix server
+Summary(pl.UTF-8): Obsługa MySQL sla serwera Zabbiksa
+Group: Networking/Utilities
+Provides: %{name}-server(db) = %{version}-%{release}
+Obsoletes: zabbix-server-postgresql
+Obsoletes: zabbix-server-sqlite3
+
+%description server-mysql
+This package provides the Zabbix server binary for use with MySQL
+database.
+
+%description server-mysql -l pl.UTF-8
+Ten pakiet zawiera serwer Zabbiksa z obsługą bazy danych MySQL.
+
+%package server-postgresql
+Summary: PostgreSQL support for Zabbix server
+Summary(pl.UTF-8): Obsługa PostgreSQL sla serwera Zabbiksa
+Group: Networking/Utilities
+Provides: %{name}-server(db) = %{version}-%{release}
+Obsoletes: zabbix-server-mysql
+Obsoletes: zabbix-server-sqlite3
+
+%description server-postgresql
+This package provides the Zabbix server binary for use with PostgreSQL
+database.
+
+%description server-postgresql -l pl.UTF-8
+Ten pakiet zawiera serwer Zabbiksa z obsługą bazy danych PostgreSQL.
+
+%package java
+Summary: Zabbix Java Gateway
+Group: Networking/Utilities
+Requires: %{name}-common = %{version}-%{release}
+Requires: systemd-units >= 38
+
+%description java
+This package provides the Zabbix Java Gateway.
%prep
-%setup -q -n %{name}-%{version}%{_beta}
+%setup -q
+
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
%build
-%configure \
- %{!?with_pgsql:--with-mysql} \
- %{?with_pgsql:--with-pgsql} \
- --with-net-snmp
+%{__libtoolize}
+%{__aclocal} -I m4
+%{__autoconf}
+%{__autoheader}
+%{__automake}
+
+configure() {
+ %configure \
+ --enable-agent \
+ --enable-ipv6 \
+ %{__enable_disable java} \
+ --with-jabber \
+ --with-ldap \
+ --with-libcurl \
+ --with-libxml2 \
+ --with-net-snmp \
+ --with-openipmi \
+ --with-openssl \
+ --with-ssh2 \
+ --with-unixodbc \
+ "$@"
+}
+
+configure \
+ --disable-server \
+ --disable-proxy
%{__make}
+for database in %{databases} ; do
+ if [ "$database" = "sqlite3" ] ; then
+ enable_server=""
+ else
+ enable_server="--enable-server"
+ fi
+ configure \
+ --with-$database \
+ $enable_server \
+ --enable-proxy
+
+ %{__make}
+
+ if [ "$enable_server" ] ; then
+ %{__make} install \
+ -C src/zabbix_server \
+ DESTDIR=$PWD/install-${database}
+ fi
+
+ %{__make} install \
+ -C src/zabbix_proxy \
+ DESTDIR=$PWD/install-${database}
+done
+
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{%{_sysconfdir},/etc/sysconfig/rc-inetd,%{_sbindir},%{htmldir}}
+install -d $RPM_BUILD_ROOT{%{_sysconfdir},/etc/rc.d/init.d,/etc/webapps/%{_webapp},%{_appdir}} \
+ $RPM_BUILD_ROOT{/var/run/zabbix,/var/log/zabbix,%{systemdunitdir},%{systemdtmpfilesdir}}
+
+%{__make} install \
+ DESTDIR=$RPM_BUILD_ROOT \
+ ZJG_DEST=$RPM_BUILD_ROOT%{_datadir}/zabbix_java
+
+for database in %{databases} ; do
+ if [ "$database" != "sqlite3" ] ; then
+ cp -p install-$database/%{_sbindir}/zabbix_server \
+ $RPM_BUILD_ROOT%{_sbindir}/zabbix_server-$database
+ fi
+ cp -p install-$database/%{_sbindir}/zabbix_proxy \
+ $RPM_BUILD_ROOT%{_sbindir}/zabbix_proxy-$database
+done
+
+if [ -n "$database" ] ; then
+ ln -sf %{_sbindir}/zabbix_server-$database $RPM_BUILD_ROOT%{_sbindir}/zabbix_server
+ ln -sf %{_sbindir}/zabbix_proxy-$database $RPM_BUILD_ROOT%{_sbindir}/zabbix_proxy
+fi
+
+%if %{with sqlite3}
+install -d $RPM_BUILD_ROOT/var/lib/zabbix
+touch $RPM_BUILD_ROOT/var/lib/zabbix/zabbix.db
+%endif
-install bin/zabbix_* $RPM_BUILD_ROOT%{_sbindir}
-install misc/conf/* $RPM_BUILD_ROOT%{_sysconfdir}
-cp -r frontends/php/* $RPM_BUILD_ROOT%{htmldir}
+cp -r frontends $RPM_BUILD_ROOT%{_appdir}
-install %SOURCE1 $RPM_BUILD_ROOT/etc/sysconfig/rc-inetd/zabbix-agent
-install %SOURCE2 $RPM_BUILD_ROOT/etc/sysconfig/rc-inetd/zabbix-trapper
+cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/apache.conf
+cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/httpd.conf
+
+install %{SOURCE2} $RPM_BUILD_ROOT%{systemdunitdir}/zabbix_server.service
+install %{SOURCE3} $RPM_BUILD_ROOT%{systemdunitdir}/zabbix_agentd.service
+install %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/zabbix_agentd
+install %{SOURCE4} $RPM_BUILD_ROOT%{systemdunitdir}/zabbix_proxy.service
+install %{SOURCE5} $RPM_BUILD_ROOT%{systemdunitdir}/zabbix_java.service
+
+cp -p %{SOURCE6} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/zabbix.conf
+
+mv $RPM_BUILD_ROOT%{_appdir}/frontends/php/conf $RPM_BUILD_ROOT%{_sysconfdir}/frontend
+ln -s %{_sysconfdir}/frontend $RPM_BUILD_ROOT%{_appdir}/frontends/php/conf
+touch $RPM_BUILD_ROOT%{_sysconfdir}/frontend/zabbix.conf.php
+
+%if %{with java}
+mv $RPM_BUILD_ROOT%{_datadir}/zabbix_java/settings.sh $RPM_BUILD_ROOT%{_sysconfdir}/zabbix_java.conf
+ln -s %{_sysconfdir}/zabbix_java.conf $RPM_BUILD_ROOT%{_datadir}/zabbix_java/settings.sh
+mv $RPM_BUILD_ROOT%{_datadir}/zabbix_java/lib/logback.xml $RPM_BUILD_ROOT%{_sysconfdir}/java-logback.xml
+ln -s %{_sysconfdir}/java-logback.xml $RPM_BUILD_ROOT%{_datadir}/zabbix_java/lib/logback.xml
+mv $RPM_BUILD_ROOT%{_datadir}/zabbix_java/lib/logback-console.xml $RPM_BUILD_ROOT%{_sysconfdir}/java-logback-console.xml
+ln -s %{_sysconfdir}/java-logback-console.xml $RPM_BUILD_ROOT%{_datadir}/zabbix_java/lib/logback-console.xml
+
+cat >$RPM_BUILD_ROOT%{_sbindir}/zabbix_java-start <<'EOF'
+#!/bin/sh
+
+exec %{_datadir}/zabbix_java/startup.sh "$@"
+EOF
+
+cat >$RPM_BUILD_ROOT%{_sbindir}/zabbix_java-stop <<'EOF'
+#!/bin/sh
+
+exec %{_datadir}/zabbix_java/shutdown.sh "$@"
+EOF
+%endif
%clean
rm -rf $RPM_BUILD_ROOT
-%pre
-if [ -z "`/usr/bin/getgid zabbix`" ]; then
- /usr/sbin/groupadd zabbix
-fi
-if [ -z "`/bin/id -u zabbix 2>/dev/null`" ]; then
- /usr/sbin/useradd -d / -g zabbix -c "Zabbix User" -s /bin/false zabbix
-fi
+%triggerin frontend-php -- apache1 < 1.3.37-3, apache1-base
+%webapp_register apache %{_webapp}
+
+%triggerun frontend-php -- apache1 < 1.3.37-3, apache1-base
+%webapp_unregister apache %{_webapp}
+
+%triggerin frontend-php -- apache < 2.2.0, apache-base
+%webapp_register httpd %{_webapp}
+
+%triggerun frontend-php -- apache < 2.2.0, apache-base
+%webapp_unregister httpd %{_webapp}
+
+%pre common
+%groupadd -g 111 zabbix
+%useradd -d / -u 111 -g zabbix -c "Zabbix User" -s /bin/false zabbix
+%addusertogroup -q zabbix proc
-%postun
+%postun common
if [ "$1" = "0" ]; then
- /usr/sbin/userdel zabbix
- /usr/sbin/groupdel zabbix
+ %userremove zabbix
+ %groupremove zabbix
fi
-%post agent-inetd
-if [ -f /var/lock/subsys/rc-inetd ]; then
- /etc/rc.d/init.d/rc-inetd reload
-else
- echo "Type \"/etc/rc.d/init.d/rc-inetd start\" to start inet server" 1>&2
+%post server-mysql
+if [ "$1" = 1 ]; then
+ %banner -e %{name}-server <<-EOF
+ You should create database for Zabbix.
+
+ Running these should be fine in most cases:
+ mysqladmin create zabbix
+ zcat %{_docdir}/%{name}-server-mysql-%{version}/schema.sql.gz | mysql zabbix
+ zcat %{_docdir}/%{name}-server-mysql-%{version}/images.sql.gz | mysql zabbix
+ zcat %{_docdir}/%{name}-server-mysql-%{version}/data.sql.gz | mysql zabbix
+EOF
fi
+ln -sf %{_sbindir}/zabbix_server-mysql %{_sbindir}/zabbix_server || :
-%postun agent-inetd
-if [ -f /var/lock/subsys/rc-inetd ]; then
- /etc/rc.d/init.d/rc-inetd reload
+%post server-postgresql
+if [ "$1" = 1 ]; then
+ %banner -e %{name}-server <<-EOF
+ You should create database for Zabbix.
+
+ Running these should be fine in most cases:
+
+ createuser zabbix
+ createdb -O zabbix zabbix
+ zcat %{_docdir}/%{name}-server-postgresql-%{version}/schema.sql.gz | psql -u zabbix zabbix
+ zcat %{_docdir}/%{name}-server-postgresql-%{version}/images.sql.gz | psql -u zabbix zabbix
+ zcat %{_docdir}/%{name}-server-postgresql-%{version}/data.sql.gz | psql -u zabbix zabbix
+EOF
fi
+ln -sf %{_sbindir}/zabbix_server-postgresql %{_sbindir}/zabbix_server || :
+
+%post server
+%systemd_post zabbix_server.service
+
+%preun server
+%systemd_preun zabbix_server.service
-%post trapper-inetd
-if [ -f /var/lock/subsys/rc-inetd ]; then
- /etc/rc.d/init.d/rc-inetd reload
-else
- echo "Type \"/etc/rc.d/init.d/rc-inetd start\" to start inet server" 1>&2
+%postun server
+if [ "$1" = "0" ]; then
+ if [ -L %{_sbindir}/zabbix_server ] ; then
+ rm -f %{_sbindir}/zabbix_server || :
+ fi
fi
+%systemd_reload
+
+%post agentd
+/sbin/chkconfig --add zabbix_agentd
+%service zabbix_agentd restart
+%systemd_post zabbix_agentd.service
-%postun trapper-inetd
-if [ -f /var/lock/subsys/rc-inetd ]; then
- /etc/rc.d/init.d/rc-inetd reload
+%preun agentd
+if [ "$1" = "0" ]; then
+ %service -q zabbix_agentd stop
+ /sbin/chkconfig --del zabbix_agentd
fi
+%systemd_preun zabbix_agentd.service
+
+%postun agentd
+%systemd_reload
+
+%post proxy-mysql
+ln -sf %{_sbindir}/zabbix_proxy-mysql %{_sbindir}/zabbix_proxy || :
+
+%post proxy-postgresql
+ln -sf %{_sbindir}/zabbix_proxy-postgresql %{_sbindir}/zabbix_proxy || :
+
+%post proxy-sqlite3
+ln -sf %{_sbindir}/zabbix_proxy-sqlite3 %{_sbindir}/zabbix_proxy || :
+
+%post proxy
+%systemd_post zabbix_proxy.service
+
+%preun proxy
+%systemd_preun zabbix_proxy.service
+
+%postun proxy
+%systemd_reload
+
+%post java
+%systemd_post zabbix_java.service
+
+%preun java
+%systemd_preun zabbix_java.service
+
+%postun java
+%systemd_reload
%files
%defattr(644,root,root,755)
-%doc doc/Zabbix\ Manual.pdf AUTHORS ChangeLog FAQ TODO create bin/ZabbixW32.exe
-%attr(750,root,zabbix) %dir %{_sysconfdir}
+%doc AUTHORS ChangeLog README
+
+%files common
+%defattr(644,root,root,755)
+%doc AUTHORS ChangeLog README
+%attr(751,root,zabbix) %dir %{_sysconfdir}
+%attr(751,root,http) %dir %{_sysconfdir}/frontend
+%dir %{_appdir}
+%dir %{_appdir}/frontends
+%dir %attr(770,root,zabbix) /var/run/zabbix
+%dir %attr(775,root,zabbix) /var/log/zabbix
+%{systemdtmpfilesdir}/zabbix.conf
+
+%files agentd
+%defattr(644,root,root,755)
+%doc conf/zabbix_agentd/*.conf
+%attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_agentd.conf
+%dir %attr(751,root,zabbix) %{_sysconfdir}/zabbix_agentd.conf.d
+%attr(754,root,root) /etc/rc.d/init.d/zabbix_agentd
+%attr(755,root,root) %{_sbindir}/zabbix_agentd
+%{_mandir}/man8/zabbix_agentd*
+%{systemdunitdir}/zabbix_agentd.service
%files frontend-php
%defattr(644,root,root,755)
-%{htmldir}
+%attr(750,root,http) %dir %{_webapps}/%{_webapp}
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/apache.conf
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/httpd.conf
+%ghost %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/frontend/zabbix.conf.php
+%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/frontend/.htaccess
+%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/frontend/maintenance.inc.php
+%attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/frontend/zabbix.conf.php.example
+%{_appdir}/frontends/php
+
+%files get
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/zabbix_get
+%{_mandir}/man1/zabbix_get*
-%files agent-inetd
+%if %{any_database}
+%files proxy
+%defattr(644,root,root,755)
+%attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_proxy.conf
+%dir %attr(751,root,zabbix) %{_sysconfdir}/zabbix_proxy.conf.d
+%ghost %attr(755,root,root) %{_sbindir}/zabbix_proxy
+%{_mandir}/man8/zabbix_proxy*
+%{systemdunitdir}/zabbix_proxy.service
+%endif
+
+%if %{with mysql}
+%files proxy-mysql
%defattr(644,root,root,755)
-%attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_agent.conf
-%attr(640,root,root) %config(noreplace) %verify(not mtime md5 size) /etc/sysconfig/rc-inetd/zabbix-agent
-%attr(755,root,root) %{_sbindir}/zabbix_agent
+%attr(755,root,root) %{_sbindir}/zabbix_proxy-mysql
+%endif
-%files agent-standalone
+%if %{with pgsql}
+%files proxy-postgresql
%defattr(644,root,root,755)
-%attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_agentd.conf
-%attr(755,root,root) %{_sbindir}/zabbix_agentd
+%attr(755,root,root) %{_sbindir}/zabbix_proxy-postgresql
+%endif
-%files suckerd
+%if %{with sqlite3}
+%files proxy-sqlite3
%defattr(644,root,root,755)
-%attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_suckerd.conf
-%attr(755,root,root) %{_sbindir}/zabbix_suckerd
+%attr(755,root,root) %{_sbindir}/zabbix_proxy-sqlite3
+%endif
-%files trapper-inetd
+%files sender
%defattr(644,root,root,755)
-%attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_trapper.conf
-%attr(640,root,root) %config(noreplace) %verify(not mtime md5 size) /etc/sysconfig/rc-inetd/zabbix-trapper
-%attr(755,root,root) %{_sbindir}/zabbix_trapper
+%attr(755,root,root) %{_bindir}/zabbix_sender
+%{_mandir}/man1/zabbix_sender*
-%files trapper-standalone
+%if %{any_database}
+%files server
%defattr(644,root,root,755)
-%attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_trapperd.conf
-%attr(755,root,root) %{_sbindir}/zabbix_trapperd
+%attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_server.conf
+%dir %attr(751,root,zabbix) %{_sysconfdir}/zabbix_server.conf.d
+%ghost %attr(755,root,root) %{_sbindir}/zabbix_server
+%{_mandir}/man8/zabbix_server*
+%{systemdunitdir}/zabbix_server.service
+%endif
+
+%if %{with mysql}
+%files server-mysql
+%defattr(644,root,root,755)
+%doc database/mysql/*.sql
+%attr(755,root,root) %{_sbindir}/zabbix_server-mysql
+%endif
-%files sender
+%if %{with pgsql}
+%files server-postgresql
+%defattr(644,root,root,755)
+%doc database/postgresql/*.sql
+%attr(755,root,root) %{_sbindir}/zabbix_server-postgresql
+%endif
+
+%if %{with java}
+%files java
%defattr(644,root,root,755)
-%attr(755,root,root) %{_sbindir}/zabbix_sender
+%attr(755,root,root) %{_sbindir}/zabbix_java-start
+%attr(755,root,root) %{_sbindir}/zabbix_java-stop
+%attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_java.conf
+%attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/java-logback.xml
+%attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/java-logback-console.xml
+%dir %{_datadir}/zabbix_java
+%{_datadir}/zabbix_java/bin
+%{_datadir}/zabbix_java/lib
+%{_datadir}/zabbix_java/settings.sh
+%attr(755,root,root) %{_datadir}/zabbix_java/shutdown.sh
+%attr(755,root,root) %{_datadir}/zabbix_java/startup.sh
+%{systemdunitdir}/zabbix_java.service
+%endif