]> TLD Linux GIT Repositories - packages/zabbix.git/blob - zabbix.spec
- drop config path enforcement in PHP
[packages/zabbix.git] / zabbix.spec
1 # TODO:
2 # - initscript for zabbix-server, zabbix-proxy and zabbix-java
3 #
4 # Conditional build:
5 %bcond_without  pgsql   # enable PostgreSQL support
6 %bcond_without  sqlite3 # enable sqlite3 support
7 %bcond_without  mysql   # enable MySQL support
8 %bcond_without  java    # disable java support
9
10 %define databases %{?with_sqlite3:sqlite3} %{?with_pgsql:postgresql} %{?with_mysql:mysql}
11 %define any_database %{with pgsql}%{with mysql}%{with sqlite3}
12
13 %define         php_min_version 5.4.0
14 Summary:        Zabbix - network monitoring software
15 Summary(pl.UTF-8):      Zabbix - oprogramowanie do monitorowania sieci
16 Name:           zabbix
17 Version:        5.0.7
18 Release:        0.2
19 License:        GPL v2+
20 Group:          Networking/Utilities
21 Source0:        https://cdn.zabbix.com/zabbix/sources/stable/5.0/%{name}-%{version}.tar.gz
22 # Source0-md5:  e0798bb1b53ab7b451556dc34c3b1827
23 Source1:        %{name}-apache.conf
24 Source2:        %{name}_agentd.init
25 Source3:        %{name}_server.init
26 Source4:        %{name}_proxy.init
27 Patch0:         tld.patch
28 Patch1:         sqlite3_dbname.patch
29 Patch2:         always_compile_ipc.patch
30 URL:            https://www.zabbix.com/
31 BuildRequires:  OpenIPMI-devel
32 BuildRequires:  autoconf
33 BuildRequires:  automake >= 1:1.15
34 BuildRequires:  curl-devel
35 #BuildRequires: iksemel-devel
36 %{?with_java:BuildRequires:     jdk}
37 BuildRequires:  libevent-devel
38 BuildRequires:  libssh2-devel
39 BuildRequires:  libtool
40 BuildRequires:  libxml2-devel
41 %{?with_mysql:BuildRequires:    mysql-devel}
42 BuildRequires:  net-snmp-devel
43 BuildRequires:  openldap-devel >= 2.4.6
44 BuildRequires:  openssl-devel >= 0.9.7d
45 BuildRequires:  pcre-devel
46 %{?with_pgsql:BuildRequires:    postgresql-devel}
47 BuildRequires:  rpmbuild(macros) >= 1.671
48 %{?with_sqlite3:BuildRequires:  sqlite3-devel}
49 BuildRequires:  unixODBC-devel
50 BuildRequires:  zlib-devel
51 Requires(postun):       /usr/sbin/groupdel
52 Requires(postun):       /usr/sbin/userdel
53 Requires(pre):  /bin/id
54 Requires(pre):  /usr/bin/getgid
55 Requires(pre):  /usr/sbin/groupadd
56 Requires(pre):  /usr/sbin/useradd
57 Provides:       group(zabbix)
58 Provides:       user(zabbix)
59 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
60
61 %define         _sysconfdir     /etc/%{name}
62 %define         _appdir         %{_datadir}/%{name}
63 %define         _webapps        /etc/webapps
64 %define         _webapp         %{name}
65
66 %description
67 Zabbix is software that monitors numerous parameters of a network and
68 the servers on that network. It is a useful tool for monitoring the
69 health and integrity of servers. Zabbix uses a flexible notification
70 mechanism that allows users to configure email based alerts for
71 virtually any event. All monitored parameters are stored in a
72 database. Zabbix offers excellent reporting and data visualisation
73 features based on the stored data. Zabbix supports both polling and
74 trapping. All Zabbix reports and statistics, as well as configuration
75 parameters, are accessed through a web-based front end.
76
77 %description -l pl.UTF-8
78 Zabbix to oprogramowanie do monitorowania licznych parametrów sieci i
79 serwerów sieciowych. Jest przydatny przy monitorowaniu działania
80 serwerów. Jorzysta z elastycznego mechanizmu powiadamiania, który
81 pozwala użytkownikom konfigurować powiadamianie pocztą elektroniczną
82 dla praktycznie wszelkich zdarzeń. Monitorowane parametry są
83 przechowywane w bazie danych. W oparciu o przechowywane dane Zabbix
84 oferuje świetne raportowanie i funkcje wizualizacji. Wspiera zarówno
85 odpytywanie jak i pułapkowanie. Dostęp do wszystkich raportów i
86 statystyk Zabbixa jest możliwy poprzez interfejs oparty o WWW.
87
88 %package agentd
89 Summary:        Zabbix Agent
90 Summary(pl.UTF-8):      Agenta Zabbixa
91 Group:          Networking/Utilities
92 Requires:       %{name} = %{version}-%{release}
93 Obsoletes:      zabbix-agent-inetd
94 Obsoletes:      zabbix-agent-standalone
95 Requires(post,preun):   /sbin/chkconfig
96 Requires:       rc-scripts
97
98 %description agentd
99 Zabbix agent collects data from the local system for a Zabbix server.
100
101 %description agentd -l pl.UTF-8
102 Agent zbiera dane z lokalnej maszyny dla serwera Zabbix.
103
104 %package web
105 Summary:        Web frontend for Zabbix
106 Summary(pl.UTF-8):      Interfejs Web dla Zabbixa
107 Group:          Applications/WWW
108 Requires:       php(bcmath)
109 Requires:       php(core) >= %{php_min_version}
110 Requires:       php(ctype)
111 Requires:       php(gd)
112 Requires:       php(gettext)
113 Requires:       php(json)
114 Requires:       php(mbstring)
115 Requires:       php(pcre)
116 Requires:       php(session)
117 Requires:       php(sockets)
118 Requires:       php(xml)
119 Requires:       php(xmlreader)
120 Requires:       php(xmlwriter)
121 Requires:       webapps
122 Requires:       webserver(alias)
123 Requires:       webserver(indexfile)
124 Requires:       webserver(php)
125 Suggests:       php(mysql)
126 Suggests:       php(pgsql)
127 Suggests:       php(sqlite3)
128 # used with sqlite3
129 Suggests:       php(sysvsem)
130 BuildArch:      noarch
131
132 %description web
133 This package provides web based (PHP) frontend for Zabbix.
134
135 %description web -l pl.UTF-8
136 Ten pakiet dostarcza napisany w PHP frontend dla Zabbixa.
137
138 %package proxy
139 Summary:        Zabbix proxy
140 Summary(pl.UTF-8):      Proxy do Zabbixa
141 Group:          Networking/Utilities
142 Requires:       %{name} = %{version}-%{release}
143 Requires:       zabbix-proxy(db) = %{version}-%{release}
144
145 %description proxy
146 This package provides the Zabbix proxy.
147
148 %description proxy -l pl.UTF-8
149 Ten pakiet zawiera proxy Zabbix.
150
151 %package proxy-mysql
152 Summary:        MySQL support for Zabbix proxy
153 Summary(pl.UTF-8):      Obsługa MySQL dla proxy do Zabbixa
154 Group:          Networking/Utilities
155 Provides:       %{name}-proxy(db) = %{version}-%{release}
156 Obsoletes:      zabbix-proxy-postgresql
157 Obsoletes:      zabbix-proxy-sqlite3
158
159 %description proxy-mysql
160 This package provides the Zabbix proxy binary with MySQL support.
161
162 %description proxy-mysql -l pl.UTF-8
163 Ten pakiet zawiera proxy Zabbix z obsługą MySQL.
164
165 %package proxy-postgresql
166 Summary:        PostgreSQL support for Zabbix proxy
167 Summary(pl.UTF-8):      Obsługa PostgreSQL dla proxy do Zabbixa
168 Group:          Networking/Utilities
169 Provides:       %{name}-proxy(db) = %{version}-%{release}
170 Obsoletes:      zabbix-proxy-mysql
171 Obsoletes:      zabbix-proxy-sqlite3
172
173 %description proxy-postgresql
174 This package provides the Zabbix proxy binary with PostgreSQL support.
175
176 %description proxy-postgresql -l pl.UTF-8
177 Ten pakiet zawiera proxy Zabbix z obsługą PostgreSQL.
178
179 %package proxy-sqlite3
180 Summary:        SQLite 3 support for Zabbix proxy
181 Summary(pl.UTF-8):      Obsługa SQLite 3 dla proxy do Zabbixa
182 Group:          Networking/Utilities
183 Provides:       %{name}-proxy(db) = %{version}-%{release}
184 Obsoletes:      zabbix-proxy-mysql
185 Obsoletes:      zabbix-proxy-postgresql
186
187 %description proxy-sqlite3
188 This package provides the Zabbix proxy binary with SQLite 3 support.
189
190 %description proxy-sqlite3 -l pl.UTF-8
191 Ten pakiet zawiera proxy Zabbix z obsługą SQLite 3.
192
193 %package server
194 Summary:        Zabbix server
195 Summary(pl.UTF-8):      Serwer Zabbixa
196 Group:          Networking/Utilities
197 Requires:       %{name} = %{version}-%{release}
198 Requires:       %{name}-server(db) = %{version}-%{release}
199 Obsoletes:      zabbix-suckerd
200 Obsoletes:      zabbix-trapper-inetd
201 Obsoletes:      zabbix-trapper-standalone
202
203 %description server
204 This package provides the Zabbix server.
205
206 %description server -l pl.UTF-8
207 Ten pakiet zawiera serwer Zabbixa.
208
209 %package server-mysql
210 Summary:        MySQL support for Zabbix server
211 Summary(pl.UTF-8):      Obsługa MySQL sla serwera Zabbixa
212 Group:          Networking/Utilities
213 Provides:       %{name}-server(db) = %{version}-%{release}
214 Obsoletes:      zabbix-server-postgresql
215 Obsoletes:      zabbix-server-sqlite3
216
217 %description server-mysql
218 This package provides the Zabbix server binary for use with MySQL
219 database.
220
221 %description server-mysql -l pl.UTF-8
222 Ten pakiet zawiera serwer Zabbixa z obsługą bazy danych MySQL.
223
224 %package server-postgresql
225 Summary:        PostgreSQL support for Zabbix server
226 Summary(pl.UTF-8):      Obsługa PostgreSQL sla serwera Zabbixa
227 Group:          Networking/Utilities
228 Provides:       %{name}-server(db) = %{version}-%{release}
229 Obsoletes:      zabbix-server-mysql
230 Obsoletes:      zabbix-server-sqlite3
231
232 %description server-postgresql
233 This package provides the Zabbix server binary for use with PostgreSQL
234 database.
235
236 %description server-postgresql -l pl.UTF-8
237 Ten pakiet zawiera serwer Zabbixa z obsługą bazy danych PostgreSQL.
238
239 %package java
240 Summary:        Zabbix Java Gateway
241 Group:          Networking/Utilities
242 Requires:       %{name} = %{version}-%{release}
243
244 %description java
245 This package provides the Zabbix Java Gateway.
246
247 %prep
248 %setup -q
249
250 %patch0 -p1
251 %patch1 -p1
252 %patch2 -p1
253
254 %build
255 %{__libtoolize}
256 %{__aclocal} -I m4
257 %{__autoconf}
258 %{__autoheader}
259 %{__automake}
260
261 configure() {
262         %configure \
263         --enable-agent \
264         --enable-ipv6 \
265         %{__enable_disable java} \
266         --with-jabber \
267         --with-ldap \
268         --with-libcurl \
269         --with-libxml2 \
270         --with-net-snmp \
271         --with-openipmi \
272         --with-openssl \
273         --with-ssh2 \
274         --with-unixodbc \
275         "$@"
276 }
277
278 configure \
279         --disable-server \
280         --disable-proxy
281
282 %{__make}
283
284 for database in %{databases} ; do
285         if [ "$database" = "sqlite3" ] ; then
286                 enable_server=""
287         else
288                 enable_server="--enable-server"
289         fi
290         configure \
291                 --with-$database \
292                 $enable_server \
293                 --enable-proxy
294
295         %{__make}
296
297         if [ "$enable_server" ] ; then
298                 %{__make} install \
299                         -C src/zabbix_server \
300                         DESTDIR=$PWD/install-${database}
301         fi
302
303         %{__make} install \
304                 -C src/zabbix_proxy \
305                 DESTDIR=$PWD/install-${database}
306 done
307
308 %install
309 rm -rf $RPM_BUILD_ROOT
310 install -d $RPM_BUILD_ROOT{%{_sysconfdir},/etc/rc.d/init.d,/etc/webapps/%{_webapp},%{_appdir}} \
311         $RPM_BUILD_ROOT{/var/run/zabbix,/var/log/zabbix}
312
313 %{__make} install \
314         DESTDIR=$RPM_BUILD_ROOT \
315         ZJG_DEST=$RPM_BUILD_ROOT%{_datadir}/zabbix_java
316
317 for database in %{databases} ; do
318         if [ "$database" != "sqlite3" ] ; then
319                 cp -p install-$database/%{_sbindir}/zabbix_server \
320                         $RPM_BUILD_ROOT%{_sbindir}/zabbix_server-$database
321         fi
322         cp -p install-$database/%{_sbindir}/zabbix_proxy \
323                 $RPM_BUILD_ROOT%{_sbindir}/zabbix_proxy-$database
324 done
325
326 if [ -n "$database" ] ; then
327         ln -sf %{_sbindir}/zabbix_server-$database $RPM_BUILD_ROOT%{_sbindir}/zabbix_server
328         ln -sf %{_sbindir}/zabbix_proxy-$database $RPM_BUILD_ROOT%{_sbindir}/zabbix_proxy
329 fi
330
331 cp -r ui $RPM_BUILD_ROOT%{_appdir}
332
333 cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/apache.conf
334 cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_webapps}/%{_webapp}/httpd.conf
335
336 install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/zabbix_agentd
337 install %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/zabbix_server
338 install %{SOURCE4} $RPM_BUILD_ROOT/etc/rc.d/init.d/zabbix_proxy
339
340 mv $RPM_BUILD_ROOT%{_appdir}/ui/conf $RPM_BUILD_ROOT%{_sysconfdir}/web
341 ln -s %{_sysconfdir}/web $RPM_BUILD_ROOT%{_appdir}/ui/conf
342 touch $RPM_BUILD_ROOT%{_sysconfdir}/web/zabbix.conf.php
343
344 %if %{with java}
345 mv $RPM_BUILD_ROOT%{_datadir}/zabbix_java/settings.sh $RPM_BUILD_ROOT%{_sysconfdir}/zabbix_java.conf
346 ln -s %{_sysconfdir}/zabbix_java.conf $RPM_BUILD_ROOT%{_datadir}/zabbix_java/settings.sh
347 mv $RPM_BUILD_ROOT%{_datadir}/zabbix_java/lib/logback.xml $RPM_BUILD_ROOT%{_sysconfdir}/java-logback.xml
348 ln -s %{_sysconfdir}/java-logback.xml $RPM_BUILD_ROOT%{_datadir}/zabbix_java/lib/logback.xml
349 mv $RPM_BUILD_ROOT%{_datadir}/zabbix_java/lib/logback-console.xml $RPM_BUILD_ROOT%{_sysconfdir}/java-logback-console.xml
350 ln -s %{_sysconfdir}/java-logback-console.xml $RPM_BUILD_ROOT%{_datadir}/zabbix_java/lib/logback-console.xml
351
352 cat >$RPM_BUILD_ROOT%{_sbindir}/zabbix_java-start <<'EOF'
353 #!/bin/sh
354
355 exec %{_datadir}/zabbix_java/startup.sh "$@"
356 EOF
357
358 cat >$RPM_BUILD_ROOT%{_sbindir}/zabbix_java-stop <<'EOF'
359 #!/bin/sh
360
361 exec %{_datadir}/zabbix_java/shutdown.sh "$@"
362 EOF
363 %endif
364
365 %clean
366 rm -rf $RPM_BUILD_ROOT
367
368 %triggerin web -- apache < 2.2.0, apache-base
369 %webapp_register httpd %{_webapp}
370
371 %triggerun web -- apache < 2.2.0, apache-base
372 %webapp_unregister httpd %{_webapp}
373
374 %pre
375 %groupadd -g 111 zabbix
376 %useradd -d / -u 111 -g zabbix -c "Zabbix User" -s /bin/false zabbix
377 %addusertogroup -q zabbix proc
378
379 %postun
380 if [ "$1" = "0" ]; then
381         %userremove zabbix
382         %groupremove zabbix
383 fi
384
385 %post server-mysql
386 if [ "$1" = 1 ]; then
387         %banner -e %{name}-server <<-EOF
388         You should create database for Zabbix.
389
390         Running these should be fine in most cases:
391         mysqladmin create zabbix
392         zcat %{_docdir}/%{name}-server-mysql-%{version}/schema.sql.gz | mysql zabbix
393         zcat %{_docdir}/%{name}-server-mysql-%{version}/images.sql.gz | mysql zabbix
394         zcat %{_docdir}/%{name}-server-mysql-%{version}/data.sql.gz | mysql zabbix
395 EOF
396 fi
397 ln -sf %{_sbindir}/zabbix_server-mysql %{_sbindir}/zabbix_server || :
398
399 %post server-postgresql
400 if [ "$1" = 1 ]; then
401         %banner -e %{name}-server <<-EOF
402         You should create database for Zabbix.
403
404         Running these should be fine in most cases:
405
406         createuser zabbix
407         createdb -O zabbix zabbix
408         zcat %{_docdir}/%{name}-server-postgresql-%{version}/schema.sql.gz | psql -u zabbix zabbix
409         zcat %{_docdir}/%{name}-server-postgresql-%{version}/images.sql.gz | psql -u zabbix zabbix
410         zcat %{_docdir}/%{name}-server-postgresql-%{version}/data.sql.gz | psql -u zabbix zabbix
411 EOF
412 fi
413 ln -sf %{_sbindir}/zabbix_server-postgresql %{_sbindir}/zabbix_server || :
414
415 %postun server
416 if [ "$1" = "0" ]; then
417         if [ -L %{_sbindir}/zabbix_server ] ; then
418                 rm -f %{_sbindir}/zabbix_server || :
419         fi
420 fi
421
422 %post agentd
423 /sbin/chkconfig --add zabbix_agentd
424 %service zabbix_agentd restart
425
426 %preun agentd
427 if [ "$1" = "0" ]; then
428         %service -q zabbix_agentd stop
429         /sbin/chkconfig --del zabbix_agentd
430 fi
431
432 %post proxy-mysql
433 ln -sf %{_sbindir}/zabbix_proxy-mysql %{_sbindir}/zabbix_proxy || :
434
435 %post proxy-postgresql
436 ln -sf %{_sbindir}/zabbix_proxy-postgresql %{_sbindir}/zabbix_proxy || :
437
438 %post proxy-sqlite3
439 ln -sf %{_sbindir}/zabbix_proxy-sqlite3 %{_sbindir}/zabbix_proxy || :
440
441 %files
442 %defattr(644,root,root,755)
443 %doc AUTHORS ChangeLog README
444 %attr(755,root,root) %{_bindir}/zabbix_get
445 %attr(755,root,root) %{_bindir}/zabbix_js
446 %attr(755,root,root) %{_bindir}/zabbix_sender
447 %attr(751,root,zabbix) %dir %{_sysconfdir}
448 %attr(751,root,http) %dir %{_sysconfdir}/web
449 %dir %{_appdir}
450 %dir %attr(770,root,zabbix) /var/run/zabbix
451 %dir %attr(775,root,zabbix) /var/log/zabbix
452 %{_mandir}/man1/zabbix_get*
453 %{_mandir}/man1/zabbix_sender*
454
455 %files agentd
456 %defattr(644,root,root,755)
457 %doc conf/zabbix_agentd/*.conf
458 %attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_agentd.conf
459 %dir %attr(751,root,zabbix) %{_sysconfdir}/zabbix_agentd.conf.d
460 %attr(754,root,root) /etc/rc.d/init.d/zabbix_agentd
461 %attr(755,root,root) %{_sbindir}/zabbix_agentd
462 %{_mandir}/man8/zabbix_agentd*
463
464 %files web
465 %defattr(644,root,root,755)
466 %attr(750,root,http) %dir %{_webapps}/%{_webapp}
467 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/apache.conf
468 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/httpd.conf
469 %ghost %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/web/zabbix.conf.php
470 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/web/.htaccess
471 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/web/maintenance.inc.php
472 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/web/zabbix.conf.php.example
473 %{_appdir}/ui
474
475 %if %{any_database}
476 %files proxy
477 %defattr(644,root,root,755)
478 %attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_proxy.conf
479 %dir %attr(751,root,zabbix) %{_sysconfdir}/zabbix_proxy.conf.d
480 %attr(754,root,root) /etc/rc.d/init.d/zabbix_proxy
481 %ghost %attr(755,root,root) %{_sbindir}/zabbix_proxy
482 %{_mandir}/man8/zabbix_proxy*
483 %endif
484
485 %if %{with mysql}
486 %files proxy-mysql
487 %defattr(644,root,root,755)
488 %attr(755,root,root) %{_sbindir}/zabbix_proxy-mysql
489 %endif
490
491 %if %{with pgsql}
492 %files proxy-postgresql
493 %defattr(644,root,root,755)
494 %attr(755,root,root) %{_sbindir}/zabbix_proxy-postgresql
495 %endif
496
497 %if %{with sqlite3}
498 %files proxy-sqlite3
499 %defattr(644,root,root,755)
500 %attr(755,root,root) %{_sbindir}/zabbix_proxy-sqlite3
501 %endif
502
503
504 %if %{any_database}
505 %files server
506 %defattr(644,root,root,755)
507 %attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_server.conf
508 %dir %attr(751,root,zabbix) %{_sysconfdir}/zabbix_server.conf.d
509 %attr(754,root,root) /etc/rc.d/init.d/zabbix_server
510 %ghost %attr(755,root,root) %{_sbindir}/zabbix_server
511 %{_mandir}/man8/zabbix_server*
512 %endif
513
514 %if %{with mysql}
515 %files server-mysql
516 %defattr(644,root,root,755)
517 %doc database/mysql/*.sql
518 %attr(755,root,root) %{_sbindir}/zabbix_server-mysql
519 %endif
520
521 %if %{with pgsql}
522 %files server-postgresql
523 %defattr(644,root,root,755)
524 %doc database/postgresql/*.sql
525 %attr(755,root,root) %{_sbindir}/zabbix_server-postgresql
526 %endif
527
528 %if %{with java}
529 %files java
530 %defattr(644,root,root,755)
531 %attr(755,root,root) %{_sbindir}/zabbix_java-start
532 %attr(755,root,root) %{_sbindir}/zabbix_java-stop
533 %attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_java.conf
534 %attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/java-logback.xml
535 %attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/java-logback-console.xml
536 %dir %{_datadir}/zabbix_java
537 %{_datadir}/zabbix_java/bin
538 %{_datadir}/zabbix_java/lib
539 %{_datadir}/zabbix_java/settings.sh
540 %attr(755,root,root) %{_datadir}/zabbix_java/shutdown.sh
541 %attr(755,root,root) %{_datadir}/zabbix_java/startup.sh
542 %endif