zabbix/zabbix.spec

656 lines
25 KiB
RPMSpec
Raw Normal View History

#
# spec file for package zabbix
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define server_user zabbixs
%define server_group zabbixs
# keep zabbix user for backwards compatibility of agent
%define agent_user zabbix
%define agent_group zabbix
%define SUSEfirewall_services_dir %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services
- updated to latest release 4.0.11 - New Features and Improvements + ZBX-9522 Improved frontend messaging usage across multiple browser tabs - Bug Fixes + ZBX-16501 Fixed log out form being resubmitted when user is already logged back in another tab + ZBX-16072 Added more strict validation of host, template and proxy names to prohibit leading and trailing spaces + ZBX-16128 Fixed incorrect action id in audit log + ZBX-16354 Fixed incorrect sorting by name with capital letters + ZBX-16346 Fixed compilation for oracle instant client v18.5 and higher + ZBX-16424 Fixed unable to create/update web scenario from internet explorer/edge + ZBX-16471 For consistency reason changed translation string 'resolved by user.' to 'resolved by inaccessible user.' + ZBX-16469 Fixed problem that caused impossibility to edit trigger description in problems screen + ZBX-16362 Fixed keyboard event handling in graph widget hintbox + ZBX-16474 Fixed 'request-uri too long' error in problems mass update page + ZBX-16184 Updated zabbix sender man page + ZBX-16462 Fixed syntax error in sql query used to calculate sla in monitoring->services + ZBX-16031 Reworked event update controller, making partly closed set of events closable + ZBX-16283 Fixed read-only shared dashboard without widgets missing placeholder label + ZBX-16316 Fixed dashboard widget and slideshow menu popup not updating current refresh rate and fixed a js error in slideshows + ZBX-16346 Fixed compilation for oracle instant client v18.5 and higher + ZBX-16424 Fixed unable to create/update web scenario from internet explorer/edge - restructured for easier maintenance because of bsc#1144018 and FATE#324346 * many thanks to Boris Manojlovic, Kristyna Streitova, Matthias Gerstner and Tomas Chvatal for their help OBS-URL: https://build.opensuse.org/package/show/server:monitoring:zabbix/zabbix?expand=0&rev=2
2019-09-17 14:06:10 +02:00
Name: zabbix
Accepting request 1099797 from home:bmanojlovic:branches:server:monitoring:zabbix - updated to latest upstream release 6.0.19 - New Features and Improvements + ZBXNEXT-8497 Removed unnecessary JavaScript preprocessing in discovery rules in Kubernetes templates + ZBXNEXT-8465 Updated JavaScript scripts in Kubernetes templates + ZBXNEXT-8467 Updated max supported TimescaleDB version to 2.11 + ZBXNEXT-7072 Fixed hintbox to be automatically closed when target element disappears + ZBXNEXT-8294 Added filters of node labels and annotations for Kubelet discovery in Kubernetes cluster state template + ZBXNEXT-8199 Added Google cloud platform monitoring template + ZBXNEXT-8330 Updated plugin support with defaults support for Zabbix agent 2 + ZBXNEXT-8357 Improved proxy history housekeeping when data older than ProxyOfflineBuffer is being constantly received + ZBXNEXT-8142 Added ability to import configuration files with a UTF-8 Byte order mark + ZBXNEXT-8209 Added Azure CosmosDB for MongoDB template + ZBXNEXT-8078 Removed unnecessary new line for each element in an array when exporting YAML templates + ZBXNEXT-8273 Implemented support for relative Include paths in the config file, based on its current directory + ZBXNEXT-8391 Added container healthcheck metric in Docker by Zabbix agent 2 template + ZBXNEXT-8354 Added pids_stats to docker.container_stats key in Zabbix agent 2 - Bug Fixes + ZBX-22987 Fixed inefficient URL schema validation + ZBX-21859 Fixed active checks occasionally not being executed on Zabbix agent 2 if checks for a plugin have long and short update intervals + ZBX-21892 Fixed wrong fs type returned by vfs.fs.get for file systems with identical mount point + ZBX-22941 Prevented clearing of the user macro secret values on inherited host prototypes as the result of user macros modifications on the parent host prototype of a template + ZBX-22695 Fixed eventlog duplicate timestamps + ZBX-22903 Fixed scale calculation for Graph and Graph (classic) widgets + ZBX-22148 Fixed the crash when updating a webhook to JavaScript that cannot be compiled + ZBX-22868 Fixed Zabbix agent 2 plugin Defaults when hardcoded value is provided + ZBX-22399 Added TLS and Default parameters support to MQTT plugin for Zabbix agent 2 + ZBX-20280 Fixed page selection in a dashboard after refresh + ZBX-22883 Fixed occasional crash of user parameters on Windows when using Zabbix agent 2 with UserParameterDir defined + ZBX-22805 Increased memory allocation limit for JavaScript execution from 64M to 512M + ZBX-22798 Fixed incorrect output of vfs.file.contents when reading frequently modified file + ZBX-21573 Optimized preprocessing steps in the AWS EC2 by HTTP template + ZBX-16326 Fixed displaying of the first and last data points on the graphs + ZBX-22467 Fixed missing bracket in a trigger event name in Windows templates + ZBX-22738 Fixed flickering debug info while editing empty dashboards + ZBX-22231 Removed host and interface macros resolution from HTTP proxy fields in items, item prototype and discovery rule test dialogues + ZBX-21194 Fixed filter form submission upon pressing Enter key in Safari + ZBX-22762 Fixed race condition in Zabbix agent 2 when reading filesystem + ZBX-21804 Removed requirement for write permissions on hosts, host groups, triggers, discovery rules, discovery checks and proxies when creating or updating actions + ZBX-22243 Fixed navigation away from edited dashboard without user confirmation + ZBX-22418 Fixed popup form fields overlapping labels when textarea width is resized + ZBX-19590 Changed count_foreach to add 0 when no data are in the requested period + ZBX-22681 Fixed wrongly displayed Revert button for text macros in host, template and host prototype clone forms + ZBX-22594 Fixed fatal error when a request contains invalid authentication parameters + ZBX-22397 Fixed disabled input field text color in Safari + ZBX-21593 Optimized preprocessing steps in the templates PostgreSQL by Zabbix agent and PostgreSQL by Zabbix agent 2 + ZBX-22470 Fixed hang on logging when establishing an encrypted connection in Zabbix agent 2 + ZBX-20263 Prevented the ability to link two or more templates with matching item keys to a host or template; improved the check for double template linkage and related error messages + ZBX-22571 Fixed "service not equal" action condition not working as expected + ZBX-22644 Fixed Graph widget not showing all problems for multiple items with dataset aggregation enabled + ZBX-22698 Fixed spelling mistakes in the templates + ZBX-21883 Changed Select map field of the Map widget to multiselect + ZBX-22989 Silenced null-dereference warnings for duktape + ZBX-22720 Dropped support for custom geomap HTML attribution text + ZBX-22604 Added new replica mismatch metrics to Kubernetes cluster state template, updated triggers + ZBX-22475 Fixed regex in preprocessing parameter for Jenkins template + ZBX-21910 Fixed JavaScript in Kubernetes nodes template + ZBX-22773 Made NodeAddress use ListenIP and ListenPort if not specified + ZBX-21613 Fixed broken database upgrade if more than one Zabbix server at the same time on one database is started + ZBX-22688 Fixed AlertScriptPath not allowing links + ZBX-22029 Fixed preprocessing step in Pods discovery for Kubernetes kubelet template + ZBX-22234 Fixed incorrect SNMPINDEX offset retrieval in SNMP discovery + ZBX-22141 Fixed attaching multiple templates with proc.get item key to one host and fixed spelling in description + ZBX-22285 Fixed honoring of the excludeSearch parameter in API + ZBX-20604 Fixed UserParameterDir behavior for UserParameter calls + ZBX-22732 Fixed description of ATAN2 mathematical function + ZBX-22664 Fixed user macros with regex context being resynced without any changes + ZBX-22661 Fixed templated dashboard display in Monitoring Hosts Dashboards + ZBX-21599 Optimised preprocessing steps and added dashboard in the TiDB TiKV by HTTP template + ZBX-21598 Optimised preprocessing steps and added dashboard in the TiDB PD by HTTP template + ZBX-21600 Optimised preprocessing steps and added dashboard in the TiDB by HTTP template + ZBX-22386 Fixed encoding of HTML entities in the user interface + ZBX-22714 Fixed signature for mqtt.get key in Standard items popup + ZBX-21397 Fixed preprocessing step in discovery for Kubernetes kubelet template + ZBX-20202 Improved tablespace handling to support Oracle multitenant architecture in Oracle by ODBC template + ZBX-22713 Fixed Zabbix server compilation problem for NetBSD + ZBX-21795 Fixed unhandled timeout in Telnet + ZBX-21801 Fixed helper positioning when sorting Header and Query fields in item configuration form + ZBX-22238 Fixed non-writable hostgroup appearance in template, host and host prototype clone forms + ZBX-22192 Fixed valid widget name being reset when other widget fields are invalid + ZBX-21871 Switched for the changes in users of user group API object to be audit logged as updates in groups of user API objects + ZBX-22461 Fixed incorrect sortable item positioning in Safari + ZBX-22469 Fixed SLI calculation for services having multiple alarms per second + ZBX-22859 Fixed validation of input parameters in action configuration form OBS-URL: https://build.opensuse.org/request/show/1099797 OBS-URL: https://build.opensuse.org/package/show/server:monitoring:zabbix/zabbix?expand=0&rev=44
2023-07-20 23:12:36 +02:00
Version: 6.0.19
Release: 0
Summary: Distributed monitoring system
License: GPL-2.0-or-later
Group: System/Monitoring
URL: http://www.zabbix.com
Source0: https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-%{version}.tar.gz
Source1: rn6.0.0.html
Source2: zabbix-tmpfiles.conf
Source3: zabbix-java-gateway.sh
Source4: zabbix-logrotate.in
Source5: apache2-zabbix.conf
Source6: README.SUSE
Source7: zabbix-server.firewall
Source8: zabbix-agentd.firewall
Source9: zabbix-proxy.firewall
Source10: zabbix-java-gateway.firewall
Source11: zabbix-proxy.service
Source12: zabbix-agentd.service
Source13: zabbix-server.service
Source14: zabbix-java-gateway.service
Source15: README-SSL.SUSE
# PATCH-FIX-UPSTREAM zabbix-6.0.12-new-m4-pgsql.patch fix for opensuse issue caused/solved by bnc#1120035
Patch0: zabbix-6.0.12-new-m4-pgsql.patch
# PATCH-FIX-UPSTREAN zabbix-6.0.12-curl-fixes.patch fix for curl specific issue https://git.zabbix.com/projects/ZBX/repos/zabbix/pull-requests/4946/commits/f462538f52a1fba52fdd4010e40fe7281044f6b1?since=52c6b9703eacf3252ec66117a8cff094624b9217#include/common/zbxsysinc.h
Patch2: zabbix-6.0.12-curl-fixes.patch
# PATCH-FIX-OPENSUSE zabbix-6.0.12-netsnmp-fixes.patch fix for removed md5 auth protocol
Patch3: zabbix-6.0.12-netsnmp-fixes.patch
BuildRequires: apache-rpm-macros
BuildRequires: apache2-devel
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: fdupes
BuildRequires: gcc
BuildRequires: java-devel >= 1.6
BuildRequires: libmysqlclient-devel
BuildRequires: libtool
BuildRequires: logrotate
BuildRequires: net-snmp-devel
BuildRequires: openldap2-devel
BuildRequires: pkgconfig
BuildRequires: systemd-rpm-macros
BuildRequires: unixODBC-devel
BuildRequires: update-alternatives
BuildRequires: pkgconfig(OpenIPMI)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(libevent)
BuildRequires: pkgconfig(libpcre)
BuildRequires: pkgconfig(libpq)
BuildRequires: pkgconfig(libssh2)
BuildRequires: pkgconfig(libxml-2.0)
BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(zlib)
%{?systemd_requires}
%description
Zabbix is a distributed monitoring system.
Zabbix is software that monitors numerous parameters of a network and the
health and integrity of servers. Zabbix uses a flexible notification mechanism
that allows users to configure e-mail based alerts for virtually any event.
This allows a fast reaction to server problems. Zabbix offers excellent
reporting and data visualisation features based on the stored data. This makes
Zabbix ideal for capacity planning.
Zabbix supports both polling and trapping. All Zabbix reports and statistics,
as well as configuration parameters, are accessed through a web-based frontend.
A web-based frontend ensures that the status of your network and the health of
your servers can be assessed from any location. Properly configured, Zabbix can
play an important role in monitoring IT infrastructure. This is equally true
for small organisations with a few servers and for large companies with a
multitude of servers.
%package agent
Summary: Local resource monitor agent for Zabbix
Group: System/Monitoring
Requires: logrotate
Requires(pre): %fillup_prereq
Requires(pre): shadow
Conflicts: zabbix-agent
%description agent
The Zabbix agent monitors local resources and relays information to the server.
%package server
Summary: System files for the Zabbix server
Group: System/Monitoring
Requires: fping
Requires: logrotate
Requires: update-alternatives
Requires: zabbix_server_binary = %{version}-%{release}
Requires(pre): %fillup_prereq
Requires(pre): shadow
Conflicts: zabbix-server
%description server
The Zabbix server component.
%package proxy
Summary: System files for the Zabbix proxy
Group: System/Monitoring
Requires: fping
Requires: logrotate
Requires: update-alternatives
Requires: zabbix_proxy_binary = %{version}-%{release}
Requires(pre): %fillup_prereq
Requires(pre): shadow
Conflicts: zabbix-proxy
%description proxy
The Zabbix proxy component.
%package ui
Summary: Zabbix web frontend (php)
Group: Productivity/Networking/Web/Frontends
Requires: apache2
Requires: php8
Requires: php8-bcmath
Requires: php8-ctype
Requires: php8-gd
Requires: php8-gettext
Requires: php8-ldap
Requires: php8-mbstring
Requires: php8-sockets
Requires: php8-xmlreader
Requires: php8-xmlwriter
Suggests: php8-mysqli
Suggests: php8-pgsql
Conflicts: zabbix-phpfrontend
Obsoletes: zabbix-phpfrontend < 6.0.0
%description ui
The Zabbix PHP frontend allows access via standard web browsers.
NOTE: You still have to install the PHP package which contains your db driver!
%package server-mysql
Summary: Zabbix server with MySQL support
Group: System/Monitoring
Requires: %{name}-server = %{version}-%{release}
Requires: mariadb
Requires(post): update-alternatives
Requires(postun):update-alternatives
Conflicts: zabbix-server-mysql
Provides: %{name} = %{version}-%{release}
Provides: zabbix_server_binary = %{version}-%{release}
%description server-mysql
The Zabbix server compiled with MySQL support.
%package server-postgresql
Summary: Zabbix server with PostgreSQL support
Group: System/Monitoring
Requires: %{name}-server = %{version}-%{release}
Requires: postgresql
Requires(post): update-alternatives
Requires(postun):update-alternatives
Conflicts: zabbix-server-postgresql
Provides: %{name} = %{version}-%{release}
Provides: zabbix_server_binary = %{version}-%{release}
%description server-postgresql
The Zabbix server compiled with PostgreSQL support.
%package proxy-mysql
Summary: Zabbix proxy with MySQL support
Group: System/Monitoring
Requires: %{name}-proxy = %{version}-%{release}
Requires: mariadb
Requires(post): update-alternatives
Requires(postun):update-alternatives
Conflicts: zabbix-proxy-mysql
Provides: %{name} = %{version}-%{release}
Provides: zabbix_proxy_binary = %{version}-%{release}
%description proxy-mysql
The Zabbix proxy compiled with MySQL support.
%package proxy-postgresql
Summary: Zabbix proxy with PostgreSQL support
Group: System/Monitoring
Requires: %{name}-proxy = %{version}-%{release}
Requires: postgresql
Requires(post): update-alternatives
Requires(postun):update-alternatives
Conflicts: zabbix-proxy-postgresql
Provides: %{name} = %{version}-%{release}
Provides: zabbix_proxy_binary = %{version}-%{release}
%description proxy-postgresql
The Zabbix proxy compiled with PostgreSQL support.
%package proxy-sqlite
Summary: Zabbix proxy with SQLite support
Group: System/Monitoring
Requires: %{name}-proxy = %{version}-%{release}
Requires(post): update-alternatives
Requires(postun):update-alternatives
Conflicts: zabbix-proxy-sqlite
Provides: %{name} = %{version}-%{release}
Provides: zabbix_proxy_binary = %{version}-%{release}
%description proxy-sqlite
The Zabbix proxy compiled with SQLite support.
%package java-gateway
Summary: Zabbix Java gateway
Group: System/Monitoring
Requires: jre
Requires(pre): shadow
Conflicts: zabbix-java-gateway
Provides: %{name} = %{version}-%{release}
%description java-gateway
JMX monitoring can be used to monitor JMX counters of a Java
application. To retrieve the value of a particular JMX counter on a
host, the Zabbix server queries the Zabbix Java gateway, which in
turn uses the JMX management API to query the application of interest
remotely.
%prep
%setup -q -n zabbix-%{version}
%patch0
#%%patch1
%patch2
%patch3
cp %{SOURCE6} .
# fix source & config files to respect adapted names
for file in src/zabbix_java/settings.sh src/zabbix_java/lib/logback.xml %{SOURCE3} conf/*.conf misc/init.d/suse/*/zabbix_* src/zabbix_server/server.c \
src/zabbix_server/alerter/alerter.c src/zabbix_agent/zbxconf.c src/zabbix_agent/zabbix_agentd.c src/zabbix_proxy/proxy.c ChangeLog; do
sed -i -e "s@/home/zabbix/bin@%{_bindir}@g" \
-e "s@^[# ]*PidFile=/tmp/zabbix_@PidFile=%{_rundir}/%{agent_user}/zabbix_@g" \
-e "s@^[# ]*LogFile=/tmp/zabbix_@LogFile=%{_localstatedir}/log/%{agent_user}/zabbix_@g" \
-e "s@^[# ]*DBSocket=/tmp/mysql.sock@DBSocket=%{_rundir}/mysql/mysql.sock@g" \
-e "s@^[# ]*SocketDir=/tmp@SocketDir=%{_rundir}/%{agent_user}@g" \
-e "s@DBUser=root@DBUser=zabbix@g" \
-e "s@^[# ]*DBPassword=.*@DBPassword=zabbix@g" \
-e "s@Hostname=Zabbix Server@Hostname=Zabbix_Server@" \
-e "s@GW_PID:=%{_localstatedir}/run/zabbix/zabbix-java-gateway.pid@GW_PID:=%{_rundir}/%{server_user}/zabbix-java-gateway.pid@g" \
-e "s@GW_LOGFILE:=%{_localstatedir}/log/zabbix/zabbix-java-gateway.log@GW_LOGFILE:=%{_localstatedir}/log/%{server_user}/zabbix-java-gateway.log@g" $file
done
# fix server, java and proxy (again) config for log and run location...
for file in src/zabbix_java/settings.sh conf/zabbix_proxy.conf conf/zabbix_server.conf ; do
sed -i -e "s#^[# ]*LogFile=%{_localstatedir}/log/.*/zabbix_#LogFile=%{_localstatedir}/log/%{server_user}/zabbix_#g" \
-e "s#^[# ]*PidFile=%{_rundir}/.*/zabbix_#PidFile=%{_rundir}/%{server_user}/zabbix_#g" \
-e "s#^[# ]*SocketDir=%{_rundir}/%{agent_user}#SocketDir=%{_rundir}/%{server_user}#g" \
-e 's#PID_FILE="%{_rundir}/.*/zabbix_#PID_FILE="%{_rundir}/%{server_user}/zabbix_#g' $file
done
# fix db content to respect adapted names and suse naming conventions
for file in database/*/data.sql; do
sed -i -e "s#syslogd#syslog-ng#g" \
-e "s#Syslogd#Syslog-ng#g" \
-e "s#httpd#httpd2-prefork#g" $file
done
##### Fix for date time macros
REF_DATE=$(LANG=C date -r configure +"%%b %%d %%Y")
REF_TIME=$(LANG=C date -r configure +"%%H:%%M:%%S")
sed -i -e "s/__DATE__/\"${REF_DATE}\"/g" -e "s/__TIME__/\"${REF_TIME}\"/g" src/libs/zbxcommon/str.c
#####
##### Fix location of zabbix java gateway location
sed -ri 's@^(ZABBIX_JAVA_CONF=.\{ZABBIX_JAVA_CONF:=).*@\1%{_sysconfdir}/zabbix/zabbix-java-gateway.conf}@g' %{SOURCE3}
# Remove prebuilt Windows binaries
rm -rf bin
#make separate directories for each config
cd ..
cp -r zabbix-%{version} zabbix-%{version}-postgresql
cp -r zabbix-%{version} zabbix-%{version}-sqlite
cd -
%build
ZABBIX_BASIC_CONFIG="--enable-proxy --enable-server --enable-agent --sysconfdir=%{_sysconfdir}/zabbix \
--with-openipmi --enable-java --enable-ipv6 --with-ssh2 --with-ldap --with-unixodbc \
--with-libcurl --with-net-snmp --with-libxml2 --with-openssl --with-libpcre --with-libevent"
# configure MySQL repo (here)
autoreconf -fvi
%configure $ZABBIX_BASIC_CONFIG --with-mysql --without-postgresql --without-sqlite3
make %{?_smp_mflags}
# configure PostgreSQL repo
cd ../zabbix-%{version}-postgresql
autoreconf -fvi
%configure $ZABBIX_BASIC_CONFIG --with-postgresql --without-mysql --without-sqlite3
make %{?_smp_mflags}
cd -
# configure SQLite repo
cd ../zabbix-%{version}-sqlite
autoreconf -fvi
%configure $ZABBIX_BASIC_CONFIG --disable-server --enable-proxy --with-sqlite3 --without-postgresql --without-mysql
make %{?_smp_mflags}
cd -
%install
# install the binaries
%make_install -C ../zabbix-%{version}-sqlite
mv %{buildroot}%{_sbindir}/zabbix_proxy %{buildroot}%{_sbindir}/zabbix_proxy-sqlite
%make_install -C ../zabbix-%{version}-postgresql
mv %{buildroot}%{_sbindir}/zabbix_server %{buildroot}%{_sbindir}/zabbix_server-postgresql
mv %{buildroot}%{_sbindir}/zabbix_proxy %{buildroot}%{_sbindir}/zabbix_proxy-postgresql
%make_install
mv %{buildroot}%{_sbindir}/zabbix_server %{buildroot}%{_sbindir}/zabbix_server-mysql
mv %{buildroot}%{_sbindir}/zabbix_proxy %{buildroot}%{_sbindir}/zabbix_proxy-mysql
mv %{buildroot}%{_bindir}/zabbix_sender %{buildroot}%{_sbindir}/zabbix_sender
# create directory structure
install -d %{buildroot}%{_localstatedir}/log/%{server_user}
install -d %{buildroot}%{_localstatedir}/log/%{agent_user}
# move java gateway files
mkdir -p %{buildroot}/%{_prefix}/lib/zabbix-java-gateway
mv %{buildroot}%{_sbindir}/zabbix_java/lib/*.jar %{buildroot}%{_prefix}/lib/zabbix-java-gateway
mv %{buildroot}%{_sbindir}/zabbix_java/bin/*.jar %{buildroot}%{_prefix}/lib/zabbix-java-gateway
mv %{buildroot}%{_sbindir}/zabbix_java/settings.sh %{buildroot}%{_sysconfdir}/zabbix/zabbix-java-gateway.conf
mv %{buildroot}%{_sbindir}/zabbix_java/lib/logback.xml %{buildroot}%{_sysconfdir}/zabbix/zabbix-java-gateway-log.xml
install -m 0755 %{SOURCE3} %{buildroot}%{_bindir}/zabbix-java-gateway
# we do not need the rest
rm -r %{buildroot}%{_sbindir}/zabbix_java
# install the php frontend
mkdir -p %{buildroot}%{_datadir}/zabbix
cp -r ui/* %{buildroot}%{_datadir}/zabbix
install -Dm 0644 %{SOURCE5} %{buildroot}%{apache_sysconfdir}/conf.d/zabbix.conf
# remove .htaccess files as access rules are moved to zabbix.conf
find %{buildroot}%{_datadir}/zabbix -name .htaccess -exec rm -v {} \;
# Install log rotation
mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d
sed -e 's|COMPONENT|agentd|g; s|USER|zabbix|g' %{SOURCE4} > \
%{buildroot}%{_sysconfdir}/logrotate.d/%{name}-agent
sed -e 's|COMPONENT|server|g; s|USER|zabbixs|g' %{SOURCE4} > \
%{buildroot}%{_sysconfdir}/logrotate.d/%{name}-server
sed -e 's|COMPONENT|proxy|g; s|USER|zabbixs|g' %{SOURCE4} > \
%{buildroot}%{_sysconfdir}/logrotate.d/%{name}-proxy
%fdupes %{buildroot}
# install firewall description files for SLE 12 / Leap 42
%if 0%{?suse_version} < 1500
install -Dm 0644 %{SOURCE7} %{buildroot}%{SUSEfirewall_services_dir}/zabbix_server
install -Dm 0644 %{SOURCE8} %{buildroot}%{SUSEfirewall_services_dir}/zabbix_agentd
install -Dm 0644 %{SOURCE9} %{buildroot}%{SUSEfirewall_services_dir}/zabbix_proxy
install -Dm 0644 %{SOURCE10} %{buildroot}%{SUSEfirewall_services_dir}/zabbix-java-gateway
%endif
# install systemd unit files
install -Dm 0644 %{SOURCE11} %{buildroot}%{_unitdir}/zabbix_proxy.service
install -Dm 0644 %{SOURCE12} %{buildroot}%{_unitdir}/zabbix_agentd.service
install -Dm 0644 %{SOURCE13} %{buildroot}%{_unitdir}/zabbix_server.service
install -Dm 0644 %{SOURCE14} %{buildroot}%{_unitdir}/zabbix-java-gateway.service
install -dm 0755 %{buildroot}/%{_unitdir}/zabbix_server.service.requires
install -dm 0755 %{buildroot}/%{_unitdir}/zabbix_proxy.service.requires
# set the rc sym links
ln -s service %{buildroot}%{_sbindir}/rczabbix_agentd
ln -s service %{buildroot}%{_sbindir}/rczabbix_server
ln -s service %{buildroot}%{_sbindir}/rczabbix_proxy
ln -s service %{buildroot}%{_sbindir}/rczabbix-java-gateway
# this stupidity is required because i do not wanna create separate zabbix-common
# in case i ever do it will put it under one scope...
install -Dm 0644 %{SOURCE2} %{buildroot}%{_tmpfilesdir}/zabbix_agentd.conf
# here I suppose server_user==server_group (and agent_user==agent_group, which is for compatibility reasons)
sed -i 's@%{agent_user}@%{server_user}@g' %{SOURCE2}
install -Dm 0644 %{SOURCE2} %{buildroot}%{_tmpfilesdir}/zabbix_server.conf
install -Dm 0644 %{SOURCE2} %{buildroot}%{_tmpfilesdir}/zabbix_proxy.conf
install -Dm 0644 %{SOURCE2} %{buildroot}%{_tmpfilesdir}/zabbix-java-gateway.conf
###################################################################################
# update-alternatives
install -d -m 0755 %{buildroot}%{_sysconfdir}/alternatives
touch -r /bin/true %{buildroot}%{_sysconfdir}/alternatives/zabbix_server
touch -r /bin/true %{buildroot}%{_sysconfdir}/alternatives/zabbix_proxy
ln -s %{_sysconfdir}/alternatives/zabbix_server %{buildroot}%{_sbindir}/zabbix_server
ln -s %{_sysconfdir}/alternatives/zabbix_proxy %{buildroot}%{_sbindir}/zabbix_proxy
# set links zabbix-* -> zabbix_* (to avoid confusion among users)
ln -s %{_sbindir}/zabbix_server %{buildroot}%{_sbindir}/zabbix-server
ln -s %{_sbindir}/zabbix_server %{buildroot}%{_sbindir}/zabbix-proxy
ln -s %{_sbindir}/zabbix_agentd %{buildroot}%{_sbindir}/zabbix-agentd
ln -s %{_sbindir}/zabbix_sender %{buildroot}%{_sbindir}/zabbix-sender
ln -s %{_bindir}/zabbix_get %{buildroot}%{_bindir}/zabbix-get
# Remove Makefiles from database directories so they don't get picked up by %%doc
rm database/*/Makefile*
# Release Notes - what has changed against Zabbix 3.x
cp %{SOURCE1} .
# SSL README
cp %{SOURCE15} .
%pre server
# Server daemon
%{_bindir}/getent group %{server_group} >/dev/null || %{_sbindir}/groupadd -r %{server_group}
%{_bindir}/getent passwd %{server_user} >/dev/null || %{_sbindir}/useradd -r -d %{_localstatedir}/lib/%{server_user} -s /bin/false -c "Zabbix Server Daemon" -g %{server_group} %{server_user}
%service_add_pre zabbix_server.service
exit 0
%pre proxy
# Proxy daemon
%{_bindir}/getent group %{server_group} >/dev/null || %{_sbindir}/groupadd -r %{server_group}
%{_bindir}/getent passwd %{server_user} >/dev/null || %{_sbindir}/useradd -r -d %{_localstatedir}/lib/%{server_user} -s /bin/false -c "Zabbix Proxy Daemon" -g %{server_group} %{server_user}
%service_add_pre zabbix_proxy.service
exit 0
%pre agent
# Agent daemon
%{_bindir}/getent group %{agent_group} >/dev/null || %{_sbindir}/groupadd -r %{agent_group}
%{_bindir}/getent passwd %{agent_user} >/dev/null || %{_sbindir}/useradd -r -d %{_localstatedir}/lib/%{agent_user} -s /bin/false -c "Zabbix Agent Daemon" -g %{agent_group} %{agent_user}
%service_add_pre zabbix_agentd.service
exit 0
%pre java-gateway
# Java daemon
%{_bindir}/getent group %{server_group} >/dev/null || %{_sbindir}/groupadd -r %{server_group}
%{_bindir}/getent passwd %{server_user} >/dev/null || %{_sbindir}/useradd -r -d %{_localstatedir}/lib/%{server_user} -s /bin/false -c "Zabbix Java Daemon" -g %{server_group} %{server_user}
%service_add_pre zabbix-java-gateway.service
exit 0
%post server
%service_add_post zabbix_server.service
%tmpfiles_create %{_tmpfilesdir}/zabbix_server.conf
echo "Please read %{_docdir}/%{name}-server/README-SSL.SUSE to set up SSL on Zabbix server."
%post proxy
%service_add_post zabbix_proxy.service
%tmpfiles_create %{_tmpfilesdir}/zabbix_proxy.conf
echo "Please read %{_docdir}/%{name}-proxy/README-SSL.SUSE to set up SSL on Zabbix proxy."
%post java-gateway
%service_add_post zabbix-java-gateway.service
%tmpfiles_create %{_tmpfilesdir}/zabbix-java-gateway.conf
%post agent
%service_add_post zabbix_agentd.service
%tmpfiles_create %{_tmpfilesdir}/zabbix_agentd.conf
echo "Please read %{_docdir}/%{name}-agent/README-SSL.SUSE to set up SSL on Zabbix agent."
%post server-mysql
%{_sbindir}/update-alternatives --install %{_sbindir}/zabbix_server zabbix_server %{_sbindir}/zabbix_server-mysql 12
%post server-postgresql
%{_sbindir}/update-alternatives --install %{_sbindir}/zabbix_server zabbix_server %{_sbindir}/zabbix_server-postgresql 11
%post proxy-mysql
%{_sbindir}/update-alternatives --install %{_sbindir}/zabbix_proxy zabbix_proxy %{_sbindir}/zabbix_proxy-mysql 12
%post proxy-postgresql
%{_sbindir}/update-alternatives --install %{_sbindir}/zabbix_proxy zabbix_proxy %{_sbindir}/zabbix_proxy-postgresql 11
%post proxy-sqlite
%{_sbindir}/update-alternatives --install %{_sbindir}/zabbix_proxy zabbix_proxy %{_sbindir}/zabbix_proxy-sqlite 10
%preun server
%service_del_preun zabbix_server.service
%preun proxy
%service_del_preun zabbix_proxy.service
%preun java-gateway
%service_del_preun zabbix-java-gateway.service
%preun agent
%service_del_preun zabbix_agentd.service
%postun server
%service_del_postun zabbix_server.service
%postun proxy
%service_del_postun zabbix_proxy.service
%postun java-gateway
%service_del_postun zabbix-java-gateway.service
%postun agent
%service_del_postun zabbix_agentd.service
%postun server-mysql
if [ "$1" = 0 ] ; then
%{_sbindir}/update-alternatives --remove zabbix_server %{_sbindir}/zabbix_server-mysql
fi
%postun server-postgresql
if [ "$1" = 0 ] ; then
%{_sbindir}/update-alternatives --remove zabbix_server %{_sbindir}/zabbix_server-postgresql
fi
%postun proxy-mysql
if [ "$1" = 0 ] ; then
%{_sbindir}/update-alternatives --remove zabbix_proxy %{_sbindir}/zabbix_proxy-mysql
fi
%postun proxy-postgresql
if [ "$1" = 0 ] ; then
%{_sbindir}/update-alternatives --remove zabbix_proxy %{_sbindir}/zabbix_proxy-postgresql
fi
%postun proxy-sqlite
if [ "$1" = 0 ] ; then
%{_sbindir}/update-alternatives --remove zabbix_proxy %{_sbindir}/zabbix_proxy-sqlite
fi
%files server
%doc AUTHORS ChangeLog database/mysql database/oracle database/postgresql database/sqlite3 rn6.0.0.html README-SSL.SUSE
%if 0%{?suse_version} < 1500
%config %{SUSEfirewall_services_dir}/zabbix_server
%endif
%dir %{_sysconfdir}/zabbix
%config(noreplace) %attr(0640, root, %{server_group}) %{_sysconfdir}/zabbix/zabbix_server.conf
%{_bindir}/zabbix_get
%{_bindir}/zabbix-get
%{_bindir}/zabbix_js
%{_sbindir}/zabbix_server
%{_sbindir}/zabbix-server
%{_sbindir}/rczabbix_server
%attr(0770,root,%{server_group}) %dir %{_localstatedir}/log/%{server_user}
%ghost %attr(0770,root,%{server_group}) %dir %{_rundir}/%{server_user}
%{_mandir}/man1/zabbix_get.1%{?ext_man}
%{_mandir}/man8/zabbix_server.8%{?ext_man}
%{_unitdir}/zabbix_server.service
%{_unitdir}/zabbix_server.service.requires
%{_tmpfilesdir}/zabbix_server.conf
%ghost %{_sysconfdir}/alternatives/zabbix_server
%ghost %{_sysconfdir}/alternatives/zabbix_server.service
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}-server
%files proxy
%doc README-SSL.SUSE
%if 0%{?suse_version} < 1500
%config %{SUSEfirewall_services_dir}/zabbix_proxy
%endif
%{_sbindir}/zabbix_proxy
%{_sbindir}/zabbix-proxy
%{_sbindir}/rczabbix_proxy
%dir %{_sysconfdir}/zabbix
%config(noreplace) %attr(0640, root, %{server_group}) %{_sysconfdir}/zabbix/zabbix_proxy.conf
%attr(0770,root,%{server_group}) %dir %{_localstatedir}/log/%{server_user}
%ghost %attr(0770,root,%{server_group}) %dir %{_rundir}/%{server_user}
%{_mandir}/man8/zabbix_proxy.8%{?ext_man}
%{_unitdir}/zabbix_proxy.service
%{_unitdir}/zabbix_proxy.service.requires
%{_tmpfilesdir}/zabbix_proxy.conf
%ghost %{_sysconfdir}/alternatives/zabbix_proxy
%ghost %{_sysconfdir}/alternatives/zabbix_proxy.service
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}-proxy
%files agent
%doc README-SSL.SUSE
%if 0%{?suse_version} < 1500
%config %{SUSEfirewall_services_dir}/zabbix_agentd
%endif
%dir %{_sysconfdir}/zabbix
%config(noreplace) %attr(0640, root, %{agent_group}) %{_sysconfdir}/zabbix/zabbix_agent*.conf
%{_sbindir}/rczabbix_agentd
%{_sbindir}/zabbix_agentd
%{_sbindir}/zabbix-agentd
%{_sbindir}/zabbix_sender
%{_sbindir}/zabbix-sender
%attr(0770,root,%{agent_group}) %dir %{_localstatedir}/log/%{agent_user}
%ghost %attr(0770,root,%{agent_group}) %dir %{_rundir}/%{agent_user}
%{_mandir}/man8/zabbix_agentd.8%{?ext_man}
%{_mandir}/man1/zabbix_sender.1%{?ext_man}
%{_unitdir}/zabbix_agentd.service
%{_tmpfilesdir}/zabbix_agentd.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}-agent
%files ui
%doc README.SUSE
%dir %{apache_sysconfdir}
%dir %{apache_sysconfdir}/conf.d
%config(noreplace) %{apache_sysconfdir}/conf.d/zabbix.conf
%{_datadir}/zabbix
%files server-mysql
%{_sbindir}/zabbix_server-mysql
%{_sbindir}/zabbix_server
%ghost %{_sysconfdir}/alternatives/zabbix_server
%files server-postgresql
%{_sbindir}/zabbix_server-postgresql
%{_sbindir}/zabbix_server
%ghost %{_sysconfdir}/alternatives/zabbix_server
%files proxy-mysql
%{_sbindir}/zabbix_proxy-mysql
%{_sbindir}/zabbix_proxy
%ghost %{_sysconfdir}/alternatives/zabbix_proxy
%files proxy-postgresql
%{_sbindir}/zabbix_proxy-postgresql
%{_sbindir}/zabbix_proxy
%ghost %{_sysconfdir}/alternatives/zabbix_proxy
%files proxy-sqlite
%{_sbindir}/zabbix_proxy-sqlite
%{_sbindir}/zabbix_proxy
%ghost %{_sysconfdir}/alternatives/zabbix_proxy
%files java-gateway
%if 0%{?suse_version} < 1500
%config %{SUSEfirewall_services_dir}/zabbix-java-gateway
%endif
%dir %{_sysconfdir}/zabbix
%config(noreplace) %attr(0640, root, %{server_group}) %{_sysconfdir}/zabbix/zabbix-java-gateway.conf
%config(noreplace) %attr(0640, root, %{server_group}) %{_sysconfdir}/zabbix/zabbix-java-gateway-log.xml
%dir %{_prefix}/lib/zabbix-java-gateway
%{_bindir}/zabbix-java-gateway
%{_prefix}/lib/zabbix-java-gateway/zabbix-java-gateway-%{version}%{?rclevel}.jar
%{_prefix}/lib/zabbix-java-gateway/android-json-4.3_r3.1.jar
%{_prefix}/lib/zabbix-java-gateway/slf4j-api-1.7.32.jar
%{_prefix}/lib/zabbix-java-gateway/logback-core-1.2.9.jar
%{_prefix}/lib/zabbix-java-gateway/logback-classic-1.2.9.jar
%{_sbindir}/rczabbix-java-gateway
%attr(0770,root,%{server_group}) %dir %{_localstatedir}/log/%{server_user}
%ghost %attr(0770,root,%{server_group}) %dir %{_rundir}/%{server_user}
%{_unitdir}/zabbix-java-gateway.service
%{_tmpfilesdir}/zabbix-java-gateway.conf
%changelog