]> TLD Linux GIT Repositories - packages/zabbix.git/blob - zabbix.spec
- fix sql commands
[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.3
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
392         mysqladmin create zabbix
393         zcat %{_docdir}/%{name}-server-mysql-%{version}/schema.sql.gz | mysql zabbix
394         zcat %{_docdir}/%{name}-server-mysql-%{version}/images.sql.gz | mysql zabbix
395         zcat %{_docdir}/%{name}-server-mysql-%{version}/data.sql.gz | mysql zabbix
396 EOF
397 fi
398 ln -sf %{_sbindir}/zabbix_server-mysql %{_sbindir}/zabbix_server || :
399
400 %post server-postgresql
401 if [ "$1" = 1 ]; then
402         %banner -e %{name}-server <<-EOF
403         You should create database for Zabbix.
404
405         Running these should be fine in most cases:
406
407         createuser -U postgres zabbix
408         createdb -U postgres -O zabbix zabbix
409         zcat %{_docdir}/%{name}-server-postgresql-%{version}/schema.sql.gz | psql -U zabbix zabbix
410         zcat %{_docdir}/%{name}-server-postgresql-%{version}/images.sql.gz | psql -U zabbix zabbix
411         zcat %{_docdir}/%{name}-server-postgresql-%{version}/data.sql.gz | psql -U zabbix zabbix
412 EOF
413 fi
414 ln -sf %{_sbindir}/zabbix_server-postgresql %{_sbindir}/zabbix_server || :
415
416 %postun server
417 if [ "$1" = "0" ]; then
418         if [ -L %{_sbindir}/zabbix_server ] ; then
419                 rm -f %{_sbindir}/zabbix_server || :
420         fi
421 fi
422
423 %post agentd
424 /sbin/chkconfig --add zabbix_agentd
425 %service zabbix_agentd restart
426
427 %preun agentd
428 if [ "$1" = "0" ]; then
429         %service -q zabbix_agentd stop
430         /sbin/chkconfig --del zabbix_agentd
431 fi
432
433 %post proxy-mysql
434 ln -sf %{_sbindir}/zabbix_proxy-mysql %{_sbindir}/zabbix_proxy || :
435
436 %post proxy-postgresql
437 ln -sf %{_sbindir}/zabbix_proxy-postgresql %{_sbindir}/zabbix_proxy || :
438
439 %post proxy-sqlite3
440 ln -sf %{_sbindir}/zabbix_proxy-sqlite3 %{_sbindir}/zabbix_proxy || :
441
442 %files
443 %defattr(644,root,root,755)
444 %doc AUTHORS ChangeLog README
445 %attr(755,root,root) %{_bindir}/zabbix_get
446 %attr(755,root,root) %{_bindir}/zabbix_js
447 %attr(755,root,root) %{_bindir}/zabbix_sender
448 %attr(751,root,zabbix) %dir %{_sysconfdir}
449 %attr(751,root,http) %dir %{_sysconfdir}/web
450 %dir %{_appdir}
451 %dir %attr(770,root,zabbix) /var/run/zabbix
452 %dir %attr(775,root,zabbix) /var/log/zabbix
453 %{_mandir}/man1/zabbix_get*
454 %{_mandir}/man1/zabbix_sender*
455
456 %files agentd
457 %defattr(644,root,root,755)
458 %doc conf/zabbix_agentd/*.conf
459 %attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_agentd.conf
460 %dir %attr(751,root,zabbix) %{_sysconfdir}/zabbix_agentd.conf.d
461 %attr(754,root,root) /etc/rc.d/init.d/zabbix_agentd
462 %attr(755,root,root) %{_sbindir}/zabbix_agentd
463 %{_mandir}/man8/zabbix_agentd*
464
465 %files web
466 %defattr(644,root,root,755)
467 %attr(750,root,http) %dir %{_webapps}/%{_webapp}
468 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/apache.conf
469 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_webapps}/%{_webapp}/httpd.conf
470 %ghost %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/web/zabbix.conf.php
471 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/web/.htaccess
472 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/web/maintenance.inc.php
473 %attr(640,root,http) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/web/zabbix.conf.php.example
474 %{_appdir}/ui
475
476 %if %{any_database}
477 %files proxy
478 %defattr(644,root,root,755)
479 %attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_proxy.conf
480 %dir %attr(751,root,zabbix) %{_sysconfdir}/zabbix_proxy.conf.d
481 %attr(754,root,root) /etc/rc.d/init.d/zabbix_proxy
482 %ghost %attr(755,root,root) %{_sbindir}/zabbix_proxy
483 %{_mandir}/man8/zabbix_proxy*
484 %endif
485
486 %if %{with mysql}
487 %files proxy-mysql
488 %defattr(644,root,root,755)
489 %attr(755,root,root) %{_sbindir}/zabbix_proxy-mysql
490 %endif
491
492 %if %{with pgsql}
493 %files proxy-postgresql
494 %defattr(644,root,root,755)
495 %attr(755,root,root) %{_sbindir}/zabbix_proxy-postgresql
496 %endif
497
498 %if %{with sqlite3}
499 %files proxy-sqlite3
500 %defattr(644,root,root,755)
501 %attr(755,root,root) %{_sbindir}/zabbix_proxy-sqlite3
502 %endif
503
504
505 %if %{any_database}
506 %files server
507 %defattr(644,root,root,755)
508 %attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_server.conf
509 %dir %attr(751,root,zabbix) %{_sysconfdir}/zabbix_server.conf.d
510 %attr(754,root,root) /etc/rc.d/init.d/zabbix_server
511 %ghost %attr(755,root,root) %{_sbindir}/zabbix_server
512 %{_mandir}/man8/zabbix_server*
513 %endif
514
515 %if %{with mysql}
516 %files server-mysql
517 %defattr(644,root,root,755)
518 %doc database/mysql/*.sql
519 %attr(755,root,root) %{_sbindir}/zabbix_server-mysql
520 %endif
521
522 %if %{with pgsql}
523 %files server-postgresql
524 %defattr(644,root,root,755)
525 %doc database/postgresql/*.sql
526 %attr(755,root,root) %{_sbindir}/zabbix_server-postgresql
527 %endif
528
529 %if %{with java}
530 %files java
531 %defattr(644,root,root,755)
532 %attr(755,root,root) %{_sbindir}/zabbix_java-start
533 %attr(755,root,root) %{_sbindir}/zabbix_java-stop
534 %attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/zabbix_java.conf
535 %attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/java-logback.xml
536 %attr(640,root,zabbix) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/java-logback-console.xml
537 %dir %{_datadir}/zabbix_java
538 %{_datadir}/zabbix_java/bin
539 %{_datadir}/zabbix_java/lib
540 %{_datadir}/zabbix_java/settings.sh
541 %attr(755,root,root) %{_datadir}/zabbix_java/shutdown.sh
542 %attr(755,root,root) %{_datadir}/zabbix_java/startup.sh
543 %endif