3 # - think how to handle /etc/ha.d/haresources file, which is v1 config file
4 # and should not exist if v2 configuration is enabled ("crm yes", default is
7 %include /usr/lib/rpm/macros.perl
8 Summary: Heartbeat - subsystem for High-Availability Linux
9 Summary(es.UTF-8): Subsistema heartbeat para Linux "High-Availability"
10 Summary(pl.UTF-8): Podsystem heartbeat dla systemów o podwyższonej niezawodności
11 Summary(pt_BR.UTF-8): Implementa sistema de monitoração (heartbeats) visando Alta Disponibilidade
16 Group: Applications/System
17 Source0: http://www.linux-ha.org/download/%{name}-%{version}.tar.gz
18 # Source0-md5: bca53530a3802f7677772323047405cd
20 Source2: ldirectord.init
21 Patch0: %{name}-ac.patch
22 Patch1: %{name}-no_ipmilan_test.patch
23 URL: http://www.linux-ha.org/Heartbeat
24 BuildRequires: OpenIPMI-devel >= 2.0.3
25 BuildRequires: autoconf
26 BuildRequires: automake
27 BuildRequires: gdbm-devel
28 BuildRequires: glib2-devel
29 BuildRequires: gnutls-devel
30 BuildRequires: libltdl-devel
31 BuildRequires: libnet-devel >= 1.1.0
32 BuildRequires: libtool
33 BuildRequires: libuuid-devel
34 BuildRequires: libwrap-devel
35 BuildRequires: libxml2-devel
36 BuildRequires: lm_sensors-devel
37 BuildRequires: ncurses-devel >= 5.4
38 BuildRequires: net-snmp-devel >= 5.1
39 BuildRequires: pam-devel
40 BuildRequires: pkgconfig
41 BuildRequires: python-devel
42 BuildRequires: rpm-perlprov
43 BuildRequires: rpm-pythonprov
44 BuildRequires: rpmbuild(macros) >= 1.268
45 BuildRequires: swig-perl >= 1.3.25
46 BuildRequires: swig-python >= 1.3.25
47 Requires(post,postun): /sbin/ldconfig
48 Requires(post,preun): /sbin/chkconfig
49 Requires(postun): /usr/sbin/groupdel
50 Requires(postun): /usr/sbin/userdel
51 Requires(pre): /bin/id
52 Requires(pre): /usr/bin/getgid
53 Requires(pre): /usr/sbin/groupadd
54 Requires(pre): /usr/sbin/useradd
55 Requires: psmisc >= 22.5-2
57 Requires: syslogdaemon
59 Provides: group(haclient)
60 Provides: user(hacluster)
62 Obsoletes: perl-heartbeat
63 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
65 %define specflags -fgnu89-inline
66 %define filterout_ld -Wl,--as-needed
69 heartbeat is a basic heartbeat subsystem for Linux-HA. It will run
70 scripts at initialization, and when machines go up or down. This
71 version will also perform IP address takeover using gratuitous ARPs.
72 It works correctly for a 2-node configuration, and is extensible to
73 larger configurations.
75 It implements the following kinds of heartbeats:
76 - Bidirectional Serial Rings ("raw" serial ports)
78 %description -l es.UTF-8
79 heartbeat es un sistema básico para Linux-HA. La función de este
80 software es ejecutar scripts en la inicialización y al apagar las
81 máquinas que lo utilizan.
83 %description -l pl.UTF-8
84 heartbeat jest podstawowym podsystemem dla systemów o podwyższonej
85 dostępności budowanych w oparciu o Linuksa. Zajmuje się uruchamianiem
86 skryptów podczas startu i zamykania systemu. Ta wersja pakietu pozwala
87 na przejmowanie adresów IP. Oprogramowanie działa poprawnie dla
88 konfiguracji składającej się z 2 hostów, można je również stosować do
89 bardziej skomplikowanych konfiguracji.
92 Summary: Provides an interface to Shoot The Other Node In The Head
93 Summary(pl.UTF-8): Interfejs do "odstrzelenia" drugiego węzła w klastrze
94 Group: Applications/System
95 Requires: OpenIPMI >= 2.0.3
98 Provides an interface to Shoot The Other Node In The Head.
100 %description stonith -l pl.UTF-8
101 STONITH (Shoot The Other Node In The Head) to interfejs służący do
102 "odstrzelenia" drugiego węzła w klastrze.
105 Summary: Monitor virtual services provided by LVS
106 Summary(pl.UTF-8): Demon monitorujący wirtualne usługi dostarczane poprzez LVS
107 Group: Applications/System
108 Requires(post,preun): /sbin/chkconfig
112 %description ldirectord
113 ldirectord is a stand-alone daemon to monitor services of real for
114 virtual services provided by The Linux Virtual Server
115 (http://www.linuxvirtualserver.org/).
117 %description ldirectord -l pl.UTF-8
118 ldirectord to samodzielny demon monitorujący rzeczywiste usługi dla
119 wirtualnych usług dostarczanych poprzez Linux Virtual Server
120 (http://www.linuxvirtualserver.org/).
123 Summary: Heartbeat developement header files and libraries
124 Summary(pl.UTF-8): Pliki nagłówkowe i biblioteki heartbeat
125 Group: Development/Libraries
126 Requires: %{name} = %{version}-%{release}
129 Heartbeat developement header files and libraries.
131 %description devel -l pl.UTF-8
132 Pliki nagłówkowe i biblioteki heartbeat.
135 Summary: Heartbeat static libraries
136 Summary(pl.UTF-8): Biblioteki statyczne heartbeat
137 Group: Development/Libraries
138 Requires: %{name}-devel = %{version}-%{release}
141 Heartbeat static libraries.
143 %description static -l pl.UTF-8
144 Biblioteki statyczne heartbeat.
147 Summary: Cluster Test Suite
148 Summary(pl.UTF-8): Zestaw testów klastra
149 Group: Applications/System
150 Requires: %{name} = %{version}-%{release}
153 Cluster Test Suite for heartbeat.
155 %description cts -l pl.UTF-8
156 Zestaw testów klastra opartego o heartbeat.
159 Summary: Heartbeat GUI
160 Summary(pl.UTF-8): Graficzny interfejs użytkownika dla heartbeat
161 Group: Applications/System
162 Requires: %{name} = %{version}-%{release}
165 Graphical user interface for heartbeat.
167 %description gui -l pl.UTF-8
168 Graficzny interfejs użytkownika dla heartbeat.
178 %{__libtoolize} --ltdl
185 IPTABLES=/usr/sbin/iptables \
189 --with-initdir=/etc/rc.d/init.d \
190 --enable-fatal-warnings=no \
194 --enable-snmp-subagent
199 rm -rf $RPM_BUILD_ROOT
202 DESTDIR=$RPM_BUILD_ROOT
203 install -d $RPM_BUILD_ROOT/var/run/heartbeat
205 rm -f $RPM_BUILD_ROOT%{_sysconfdir}/ha.d/resource.d/ldirectord
206 ln -sf %{_sbindir}/ldirectord $RPM_BUILD_ROOT%{_sysconfdir}/ha.d/resource.d/ldirectord
208 # plugins are lt_dlopened, but using *.so names, so *.la are not used
209 rm -f $RPM_BUILD_ROOT%{_libdir}/{heartbeat,pils,stonith}/plugins/*/*.{la,a}
211 rm -f $RPM_BUILD_ROOT/etc/rc.d/init.d/heartbeat
212 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/heartbeat
214 > $RPM_BUILD_ROOT/etc/ha.d/haresources
215 echo -e "auth 2\n2 crc" > $RPM_BUILD_ROOT/etc/ha.d/authkeys
216 install doc/ha.cf $RPM_BUILD_ROOT/etc/ha.d
218 rm -f $RPM_BUILD_ROOT/etc/rc.d/init.d/ldirectord
219 install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/ldirectord
220 install ldirectord/ldirectord.cf $RPM_BUILD_ROOT%{_sysconfdir}/ha.d
222 rm -f $RPM_BUILD_ROOT%{_datadir}/heartbeat/cts/README
224 for tool in ha_logger hb_addnode hb_delnode hb_standby hb_takeover; do
225 ln -sf %{_libdir}/heartbeat/$tool $RPM_BUILD_ROOT%{_bindir}
228 sed -i -e's, /%{_lib}/libpam.la, /usr/%{_lib}/libpam.la,g' $RPM_BUILD_ROOT%{_libdir}/*.la
233 rm -rf $RPM_BUILD_ROOT
236 %groupadd -g 60 haclient
237 %useradd -u 17 -d /var/lib/heartbeat/cores/hacluster -c "Heartbeat User" -g haclient hacluster
241 /sbin/chkconfig --add heartbeat
242 %service %{name} restart
245 if [ "$1" = "0" ]; then
246 %service -q %{name} stop
247 /sbin/chkconfig --del heartbeat
252 if [ "$1" = "0" ]; then
253 %userremove hacluster
254 %groupremove haclient
257 %post stonith -p /sbin/ldconfig
258 %postun stonith -p /sbin/ldconfig
260 %files -f haclient.lang
261 %defattr(644,root,root,755)
262 %doc doc/{*.html,AUTHORS,apphbd.cf,authkeys,ha.cf,logd.cf,haresources,startstop}
263 %attr(755,root,root) %{_libdir}/libapphb.so.*.*.*
264 %attr(755,root,root) %ghost %{_libdir}/libapphb.so.0
265 %attr(755,root,root) %{_libdir}/libccmclient.so.*.*.*
266 %attr(755,root,root) %ghost %{_libdir}/libccmclient.so.1
267 %attr(755,root,root) %{_libdir}/libcib.so.*.*.*
268 %attr(755,root,root) %ghost %{_libdir}/libcib.so.1
269 %attr(755,root,root) %{_libdir}/libclm.so.*.*.*
270 %attr(755,root,root) %ghost %{_libdir}/libclm.so.1
271 %attr(755,root,root) %{_libdir}/libcrmcommon.so.*.*.*
272 %attr(755,root,root) %ghost %{_libdir}/libcrmcommon.so.1
273 %attr(755,root,root) %{_libdir}/libhbclient.so.*.*.*
274 %attr(755,root,root) %ghost %{_libdir}/libhbclient.so.1
275 %attr(755,root,root) %{_libdir}/libhbmgmt.so.*.*.*
276 %attr(755,root,root) %ghost %{_libdir}/libhbmgmt.so.0
277 %attr(755,root,root) %{_libdir}/libhbmgmtclient.so.*.*.*
278 %attr(755,root,root) %ghost %{_libdir}/libhbmgmtclient.so.0
279 %attr(755,root,root) %{_libdir}/libhbmgmtcommon.so.*.*.*
280 %attr(755,root,root) %ghost %{_libdir}/libhbmgmtcommon.so.0
281 %attr(755,root,root) %{_libdir}/libhbmgmttls.so.*.*.*
282 %attr(755,root,root) %ghost %{_libdir}/libhbmgmttls.so.0
283 %attr(755,root,root) %{_libdir}/liblrm.so.*.*.*
284 %attr(755,root,root) %ghost %{_libdir}/liblrm.so.0
285 %attr(755,root,root) %{_libdir}/libpe_rules.so.*.*.*
286 %attr(755,root,root) %ghost %{_libdir}/libpe_rules.so.2
287 %attr(755,root,root) %{_libdir}/libpe_status.so.*.*.*
288 %attr(755,root,root) %ghost %{_libdir}/libpe_status.so.2
289 %attr(755,root,root) %{_libdir}/libpengine.so.*.*.*
290 %attr(755,root,root) %ghost %{_libdir}/libpengine.so.3
291 %attr(755,root,root) %{_libdir}/libpils.so.*.*.*
292 %attr(755,root,root) %ghost %{_libdir}/libpils.so.1
293 %attr(755,root,root) %{_libdir}/libplumb.so.*.*.*
294 %attr(755,root,root) %ghost %{_libdir}/libplumb.so.1
295 %attr(755,root,root) %{_libdir}/libplumbgpl.so.*.*.*
296 %attr(755,root,root) %ghost %{_libdir}/libplumbgpl.so.1
297 %attr(755,root,root) %{_libdir}/librecoverymgr.so.*.*.*
298 %attr(755,root,root) %ghost %{_libdir}/librecoverymgr.so.1
299 %attr(755,root,root) %{_libdir}/libstonith.so.*.*.*
300 %attr(755,root,root) %ghost %{_libdir}/libstonith.so.1
301 %attr(755,root,root) %{_libdir}/libstonithd.so.*.*.*
302 %attr(755,root,root) %ghost %{_libdir}/libstonithd.so.0
303 %attr(755,root,root) %{_libdir}/libtransitioner.so.*.*.*
304 %attr(755,root,root) %ghost %{_libdir}/libtransitioner.so.1
305 %dir %{_libdir}/heartbeat
306 %dir %{_libdir}/heartbeat/plugins
307 %dir %{_libdir}/heartbeat/plugins/*
308 %attr(755,root,root) %{_libdir}/heartbeat/plugins/*/*.so
309 %attr(755,root,root) %{_libdir}/heartbeat/[!cp]*
310 %attr(755,root,root) %{_libdir}/heartbeat/c[!t]*
311 %attr(755,root,root) %{_libdir}/heartbeat/p[!l]*
313 %dir %{_libdir}/pils/plugins
314 %dir %{_libdir}/pils/plugins/*
315 %dir %{_datadir}/heartbeat
316 %attr(755,root,root) %{_datadir}/heartbeat/BasicSanityCheck
317 %attr(755,root,root) %{_datadir}/heartbeat/ResourceManager
318 %attr(755,root,root) %{_datadir}/heartbeat/SNMPAgentSanityCheck
319 %attr(755,root,root) %{_datadir}/heartbeat/TestHeartbeatComm
320 %attr(755,root,root) %{_datadir}/heartbeat/ha_*
321 %attr(755,root,root) %{_datadir}/heartbeat/hb_*
322 %attr(755,root,root) %{_datadir}/heartbeat/lrmtest
323 %attr(755,root,root) %{_datadir}/heartbeat/mach_down
324 %attr(755,root,root) %{_datadir}/heartbeat/req_resource
325 %attr(755,root,root) %{_datadir}/heartbeat/utillib.sh
326 %{_datadir}/heartbeat/crm.dtd
327 %attr(755,root,root) %{_libdir}/pils/plugins/*/*.so
328 %dir %{_sysconfdir}/ha.d
329 %attr(755,root,root) %{_sysconfdir}/ha.d/rc.d
330 %attr(755,root,root) %{_sysconfdir}/ha.d/resource.d
331 %exclude %{_sysconfdir}/ha.d/resource.d/ldirectord
332 %{_sysconfdir}/ha.d/README.config
333 %attr(755,root,root) %{_sysconfdir}/ha.d/harc
334 %{_sysconfdir}/ha.d/shellfuncs
335 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/pam.d/hbmgmtd
336 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/heartbeat
337 %attr(754,root,root) /etc/rc.d/init.d/heartbeat
338 %attr(755,root,root) %{_prefix}/lib/ocf
339 %dir /var/run/heartbeat
340 %attr(750,hacluster,haclient) %dir /var/run/heartbeat/ccm
341 %attr(750,hacluster,haclient) %dir /var/run/heartbeat/crm
342 %dir /var/lib/heartbeat
343 %attr(770,root,haclient) %dir /var/lib/heartbeat/lrm
344 %attr(770,root,haclient) %dir /var/lib/heartbeat/mgmt
345 %attr(750,hacluster,haclient) %dir /var/lib/heartbeat/pengine
346 %attr(750,hacluster,haclient) %dir /var/lib/heartbeat/crm
347 %attr(750,root,haclient) %dir /var/lib/heartbeat/fencing
348 %attr(711,root,root) %dir /var/lib/heartbeat/cores
349 %attr(700,root,root) %dir /var/lib/heartbeat/cores/root
350 # we don't want any files owned by nobody
351 %attr(700,root,root) %dir /var/lib/heartbeat/cores/nobody
352 %attr(700,hacluster,root) %dir /var/lib/heartbeat/cores/hacluster
354 %{_mandir}/man8/[a-h]*.8*
355 %attr(755,root,root) %{_bindir}/cl_respawn
356 %attr(2755,root,haclient) %{_bindir}/cl_status
357 %attr(755,root,root) %{_bindir}/ha_logger
358 %attr(755,root,root) %{_bindir}/hb_addnode
359 %attr(755,root,root) %{_bindir}/hb_delnode
360 %attr(755,root,root) %{_bindir}/hb_standby
361 %attr(755,root,root) %{_bindir}/hb_takeover
362 %attr(755,root,root) %{_sbindir}/[a-i]*
363 %attr(755,root,root) %{_sbindir}/ptest
364 %attr(755,root,root) %{_sbindir}/ocf-tester
365 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/ha.d/haresources
366 %attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/ha.d/authkeys
367 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/ha.d/ha.cf
368 %{_datadir}/snmp/mibs/*mib
371 %defattr(644,root,root,755)
372 %dir %{_libdir}/stonith
373 %dir %{_libdir}/stonith/plugins
374 %dir %{_libdir}/stonith/plugins/external
375 %dir %{_libdir}/stonith/plugins/stonith2
376 %attr(755,root,root) %{_libdir}/stonith/plugins/*/*
377 %attr(755,root,root) %{_sbindir}/meatclient
378 %attr(755,root,root) %{_sbindir}/stonith
379 %dir %{_datadir}/heartbeat/stonithdtest
380 %attr(755,root,root) %{_datadir}/heartbeat/stonithdtest/STONITHDBasicSanityCheck
381 %{_mandir}/man8/stonith.8*
382 %{_mandir}/man8/meatclient.8*
385 %defattr(644,root,root,755)
386 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/ha.d/ldirectord.cf
387 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/ldirectord
388 %attr(755,root,root) %{_sysconfdir}/ha.d/resource.d/ldirectord
389 %attr(754,root,root) /etc/rc.d/init.d/ldirectord
390 %attr(755,root,root) %{_sbindir}/*ldirectord*
391 %{_mandir}/man8/*ldirectord*.8*
394 %defattr(644,root,root,755)
396 %attr(755,root,root) %{_libdir}/lib*.so
400 %defattr(644,root,root,755)
404 %defattr(644,root,root,755)
406 %dir %{_datadir}/heartbeat/cts
407 %attr(755,root,root) %{_datadir}/heartbeat/cts/*.py
408 %{_datadir}/heartbeat/cts/*.py[co]
409 %attr(755,root,root) %{_datadir}/heartbeat/cts/*.sh
410 %attr(755,root,root) %{_datadir}/heartbeat/cts/*Dummy
413 %defattr(644,root,root,755)
414 %attr(755,root,root) %{_bindir}/hb_gui
415 %dir %{_libdir}/heartbeat-gui
416 %attr(755,root,root) %{_libdir}/heartbeat-gui/*.so.*
417 %attr(755,root,root) %{_libdir}/heartbeat-gui/_pymgmt.so
418 %{_libdir}/heartbeat-gui/*.a
419 %{_libdir}/heartbeat-gui/*.la
420 %attr(755,root,root) %{_libdir}/heartbeat-gui/*.py
421 %dir %{_datadir}/heartbeat-gui
422 %{_datadir}/heartbeat-gui/*.png
423 %attr(755,root,root) %{_datadir}/heartbeat-gui/*.py
424 %{_datadir}/heartbeat-gui/haclient.glade