* add code to import xml templates using curl.
[monitor.git] / zabbix.spec
1 %define debug_package %{nil}
2
3 %define _prefix         /usr/local/zabbix
4
5 Name:           zabbix
6 Version:        1.6.1
7 Release:        1
8 Group:          System Environment/Daemons
9 License:        GPL
10 Summary:        ZABBIX network monitor server
11 Vendor:         ZABBIX SIA
12 URL:            http://www.zabbix.org
13 Packager:       Eugene Grigorjev <eugene.grigorjev@zabbix.com>
14 Source:         zabbix-1.6.1.tar.gz
15
16 Autoreq:        no
17 Buildroot:      %{_tmppath}/%{name}-%{version}-%{release}-buildroot
18
19
20 #Prefix:                %{_prefix}
21
22 %define zabbix_bindir   %{_prefix}/bin
23 %define zabbix_datadir  %{_prefix}/misc
24 %define zabbix_confdir  %{_prefix}/conf
25 %define zabbix_initdir  %{_prefix}/init.d
26 %define zabbix_docdir   %{_prefix}/doc
27 %define zabbix_webdir   /var/www/html/zabbix
28 #%define zabbix_piddir  %{_tmppath}
29 #%define zabbix_logdir  %{_tmppath}
30
31 %define zabbix_piddir   /var/tmp
32 %define zabbix_logdir   /var/tmp
33
34 %description
35 The ZABBIX server is a network monitor
36
37 %package client
38 Summary:        ZABBIX network monitor agent daemon
39 Group:          System Environment/Daemons
40 %description client
41 The ZABBIX client is a network monitor
42
43 %package server
44 Summary:        ZABBIX network monitor server daemon
45 Group:          System Environment/Daemons
46 BuildPrereq: postgresql-devel
47 BuildPrereq: net-snmp-devel
48 #BuildPrereq: gnutls-devel
49 #BuildPrereq: libtasn1-devel
50
51 Requires: gnutls
52 Requires: postgresql-server
53 Requires: net-snmp
54
55 %description server
56 The ZABBIX server is a network monitor
57
58 %package gui
59 Summary:        ZABBIX network monitor server frontend
60 Group:          Productivity/Networking/Web/Frontends
61 Requires: php
62 Requires: php-bcmath
63 Requires: postgresql-server
64
65 %description gui
66 The ZABBIX gui frontend
67
68 %prep
69 %setup -n zabbix-1.6.1
70
71 %build
72
73 # TODO: there must be a better way.  unfortunately, this package doesn't build
74 # after running ./configure from a subdir, i.e. mkdir client; cd client; ../configure... ; make-> fails.
75 mkdir client
76 cp -r * client || :
77 mkdir server
78 cp -r client/* server
79
80 pushd client
81 ./configure --enable-static --enable-agent
82 make
83 popd
84
85 pushd server
86 ./configure --enable-server --with-pgsql --with-net-snmp --with-libcurl
87 make
88 popd
89
90 %clean
91 rm -fr $RPM_BUILD_ROOT
92
93 %install
94 rm -fr $RPM_BUILD_ROOT
95
96 ################# SERVER
97
98 # copy documentation
99 install -d %{buildroot}%{zabbix_docdir}
100 install -m 644 server/AUTHORS %{buildroot}%{zabbix_docdir}/AUTHORS
101 install -m 644 server/COPYING %{buildroot}%{zabbix_docdir}/COPYING
102 install -m 644 server/NEWS %{buildroot}%{zabbix_docdir}/NEWS
103 install -m 644 server/README %{buildroot}%{zabbix_docdir}/README
104
105 # copy binaries
106 install -d %{buildroot}%{zabbix_bindir}
107 install -s -m 755 server/src/zabbix_server/zabbix_server %{buildroot}%{zabbix_bindir}/zabbix_server
108
109 # copy config files
110 install -d %{buildroot}%{zabbix_confdir}
111 install -m 755 server/misc/conf/zabbix_server.conf %{buildroot}%{zabbix_confdir}/zabbix_server.conf
112 install -d %{buildroot}/etc/zabbix
113 install -m 755 server/misc/conf/zabbix_server.conf %{buildroot}/etc/zabbix
114
115 # copy startup script
116 install -d %{buildroot}%{zabbix_initdir}
117 install -m 755 server/misc/init.d/fedora/core/zabbix_server %{buildroot}%{zabbix_initdir}/zabbix_server
118
119 install -d %{buildroot}%{zabbix_datadir}
120 cp -r server/create %{buildroot}%{zabbix_datadir}
121
122 ################# CLIENT 
123 # copy binaries
124 install -d %{buildroot}%{zabbix_bindir}
125 install -s -m 755 client/src/zabbix_agent/zabbix_agentd %{buildroot}%{zabbix_bindir}/zabbix_agentd
126
127 # copy config files
128 install -d %{buildroot}%{zabbix_confdir}
129 install -m 755 client/misc/conf/zabbix_agentd.conf %{buildroot}%{zabbix_confdir}/zabbix_agentd.conf
130 install -d %{buildroot}/etc/zabbix
131 install -m 755 client/misc/conf/zabbix_agentd.conf %{buildroot}/etc/zabbix
132
133 # copy startup script
134 install -d %{buildroot}%{zabbix_initdir}
135 install -m 755 client/misc/init.d/fedora/core/zabbix_agentd %{buildroot}%{zabbix_initdir}/zabbix_agentd
136
137 ################# GUI
138 # copy php frontend
139 install -d %{buildroot}%{zabbix_webdir}
140 cp -r frontends/php/* %{buildroot}%{zabbix_webdir}
141
142 %post client
143 # create ZABBIX group
144 if [ -z "`grep zabbix /etc/group`" ]; then
145   /usr/sbin/groupadd zabbix >/dev/null 2>&1
146 fi
147
148 # create ZABBIX uzer
149 if [ -z "`grep zabbix /etc/passwd`" ]; then
150   /usr/sbin/useradd -g zabbix zabbix >/dev/null 2>&1
151 fi
152
153 # configure ZABBIX agentd daemon
154 TMP_FILE=`mktemp $TMPDIR/zbxtmpXXXXXX`
155
156 # TODO: setup Server=, Hostname=,
157 SERVER=`grep PLC_MONITOR_HOST /etc/planetlab/plc_config | tr "'" ' ' | awk '{print $2}'`
158 HOST=`hostname`
159 sed     -e "s#Hostname=.*#Hostname=$HOST#g" \
160         -e "s#Server=.*#Server=$SERVER#g" \
161         -e "s#PidFile=/var/tmp/zabbix_agentd.pid#PidFile=%{zabbix_piddir}/zabbix_agentd.pid#g" \
162         -e "s#LogFile=/tmp/zabbix_agentd.log#LogFile=%{zabbix_logdir}/zabbix_agentd.log#g" \
163         %{zabbix_confdir}/zabbix_agentd.conf > $TMP_FILE
164 cat $TMP_FILE > %{zabbix_confdir}/zabbix_agentd.conf
165 mkdir -p /etc/zabbix
166 cp %{zabbix_confdir}/zabbix_agentd.conf /etc/zabbix/
167 # TODO: copy to /etc/zabbix/
168
169 sed     -e "s#BASEDIR=/opt/zabbix#BASEDIR=%{_prefix}#g" \
170         -e "s#PIDFILE=/var/tmp/zabbix_agentd.pid#PIDFILE=%{zabbix_piddir}/zabbix_agentd.pid#g" \
171         %{zabbix_initdir}/zabbix_agentd > $TMP_FILE
172 cat $TMP_FILE > %{zabbix_initdir}/zabbix_agentd
173
174 # NOTE: Run every runlevel as soon as possible, and stop as late as possible
175 cp %{zabbix_initdir}/zabbix_agentd %{_initrddir}
176 sed     -i -e "s#chkconfig: - 90 10#chkconfig: 2345 12 90#g" \
177         %{_initrddir}/zabbix_server 
178
179 rm -f $TMP_FILE
180
181 chkconfig --add zabbix_agentd 
182 chkconfig zabbix_agentd on
183
184 %post server
185
186 # create ZABBIX group
187 if [ -z "`grep zabbix /etc/group`" ]; then
188   /usr/sbin/groupadd zabbix >/dev/null 2>&1
189 fi
190
191 # create ZABBIX uzer
192 if [ -z "`grep zabbix /etc/passwd`" ]; then
193   /usr/sbin/useradd -g zabbix zabbix >/dev/null 2>&1
194 fi
195
196 # configure ZABBIX server daemon
197 TMP_FILE=`mktemp $TMPDIR/zbxtmpXXXXXX`
198
199 sed     -e "s#AlertScriptsPath=/home/zabbix/bin/#AlertScriptsPath=%{zabbix_bindir}/#g" \
200         -e "s#PidFile=/var/tmp/zabbix_server.pid#PidFile=%{zabbix_piddir}/zabbix_server.pid#g" \
201         -e "s#LogFile=/tmp/zabbix_server.log#LogFile=%{zabbix_logdir}/zabbix_server.log#g" \
202         -e "s|#DBPassword|DBPassword|g" \
203         %{zabbix_confdir}/zabbix_server.conf > $TMP_FILE
204 cat $TMP_FILE > %{zabbix_confdir}/zabbix_server.conf
205 mkdir -p %{_sysconfdir}/zabbix
206 cp %{zabbix_confdir}/zabbix_server.conf %{_sysconfdir}/zabbix/
207
208 sed     -e "s#BASEDIR=/opt/zabbix#BASEDIR=%{_prefix}#g" \
209         -e "s#PIDFILE=/var/tmp/zabbix_server.pid#PIDFILE=%{zabbix_piddir}/zabbix_server.pid#g" \
210         %{zabbix_initdir}/zabbix_server > $TMP_FILE
211 cat $TMP_FILE > %{zabbix_initdir}/zabbix_server
212 rm -f $TMP_FILE
213
214 # NOTE: Run every runlevel as soon as possible, and stop as late as possible
215 cp %{zabbix_initdir}/zabbix_server %{_initrddir}
216 sed     -i -e "s#chkconfig: - 90 10#chkconfig: 2345 12 90#g" \
217         %{_initrddir}/zabbix_server 
218
219 chkconfig --add zabbix_server
220 chkconfig zabbix_server on
221
222 %post gui
223 # Setup the necessary values in /etc/php.ini
224 # NOTE:  Zabbix requires max_execution_time to be 300 seconds
225 # NOTE:  Zabbix requires a default date.timezone 
226
227 # also edit  /var/www/html/zabbix/conf/zabbix.conf.php
228 #       touch  /var/www/html/zabbix/conf/zabbix.conf.php
229 #       chmod 644  /var/www/html/zabbix/conf/zabbix.conf.php
230
231
232 TMP_FILE=`mktemp $TMPDIR/zbxtmpXXXXXX`
233 sed     -e "s#;date.timezone =#date.timezone = UTC#g" \
234         -e "s#max_execution_time = 30 #max_execution_time = 300 #g" \
235         %{_sysconfdir}/php.ini > $TMP_FILE
236 cat $TMP_FILE > %{_sysconfdir}/php.ini
237
238
239 %postun 
240 rm -f %{zabbix_piddir}/zabbix_server.pid
241 rm -f %{zabbix_logdir}/zabbix_server.log
242
243 rm -f %{zabbix_piddir}/zabbix_agentd.pid
244 rm -f %{zabbix_logdir}/zabbix_agentd.log
245
246 %files client
247 %defattr(-,root,root)
248
249 %dir %attr(0755,root,root) %{zabbix_confdir}
250 %attr(0644,root,root) %config(noreplace) %{zabbix_confdir}/zabbix_agentd.conf
251
252 %dir %attr(0755,root,root) %{zabbix_bindir}
253 %attr(0755,root,root) %{zabbix_bindir}/zabbix_agentd
254
255 %dir %attr(0755,root,root) %{zabbix_initdir}
256 %attr(0755,root,root) %{zabbix_initdir}/zabbix_agentd
257
258 %config /etc/zabbix/zabbix_agentd.conf
259
260 %files server
261 %defattr(-,root,root)
262
263 %dir %attr(0755,root,root) %{zabbix_docdir}
264 %attr(0644,root,root) %{zabbix_docdir}/AUTHORS
265 %attr(0644,root,root) %{zabbix_docdir}/COPYING
266 %attr(0644,root,root) %{zabbix_docdir}/NEWS
267 %attr(0644,root,root) %{zabbix_docdir}/README
268
269 %dir %attr(0755,root,root) %{zabbix_confdir}
270 %attr(0644,root,root) %config(noreplace) %{zabbix_confdir}/zabbix_server.conf
271
272 %dir %attr(0755,root,root) %{zabbix_bindir}
273 %attr(0755,root,root) %{zabbix_bindir}/zabbix_server
274
275 %dir %attr(0755,root,root) %{zabbix_initdir}
276 %attr(0755,root,root) %{zabbix_initdir}/zabbix_server
277
278 %dir %attr(0755,root,root) %{zabbix_datadir}
279 %attr(0755,root,root) %{zabbix_datadir}/create/
280
281 %config /etc/zabbix/zabbix_server.conf
282
283 %files gui
284 %defattr(-,root,root)
285 %dir %{zabbix_webdir}
286 %{zabbix_webdir}
287
288 %changelog
289 * Tue Nov 11 2008 Stephen Soltesz <soltesz@cs.princeton.edu>
290 - 1.6.1
291 - initial re-packaging
292
293 * Thu Dec 01 2005 Eugene Grigorjev <eugene.grigorjev@zabbix.com>
294 - 1.1beta2
295 - initial packaging
296