Russ Hammer wrote:
Is anyone working on a RHEL/CentOS spec file to build an rpm package? If so, is it being integrated into the xymon source tree? If not, does anyone have one that I could use (at least as a starting point) to build an rpm for xymon 4.2.3 on CentOS 5.3 x86_64?
Hi Russ!I made a client-only package for the CentOS 5.3 nodes of my employer (server is running FreeBSD). As this was done as part of my professional work, I am not sure if I am allowed to publish the spec and patches I made for legal reasons. But at least I can give you some hints and tweaks, which were needed in my case.
First some patches. I was required to tweak the hobbitd-client target in build/Makefile.rules, as the LDFLAGS were missing 'LIBRTDEF="$(LIBRTDEF)"'. In configure.client I had to source build/clock-gettime-librt.sh and also had to 'echo LIBRTDEF = $LIBRTDEF" >>Makefile' near where also the LFSDEF definition gets appended to the Makefile.
When building client-only ('CONFTYPE="client" ... ./configure --client'), the build process always assumes local client mode. Therefore, after the configure you have set 'LOCALCLIENT=no' in the resulting Makefile.
As you would build the package with no root privs, ensure that you invoke 'make PKGBUILD="1"', otherwise the build process tries (and fails of course) to chmod(1)/chown(1) files. You have to set correct permissions later of using the RPM file list.
After performing the 'make install INSTALLROOT="$RPM_BUILD_ROOT" PKGBUILD="1"' step, you can remove any hobbitclient-*.sh scripts except hobbitclient-linux.sh. You may also want to allign the file system layout to common standards by relocating directories like 'client/etc' to '%{_sysconfdir}/xymon/client/etc' for example. Same thing for 'client/tmp' or 'client/logs', which should go to '%{_localstatedir}/...' for example. I used symlinks for this approach. Not nice, but IMHO at least somehow better than having stuff like log files under /usr/... You might also want to strip(1) the binaries.
Final steps were to provide an according run-command script which was copied to '%{_initrddir}/xymon-client'. Also don't forget to create the user (with the same name as we defined BBUSER when calling the configure script" as part of the %pre script. In the %post should register the service using chkconfig(8), in %preun deregister it after stopping the service. %postun should contain a restart of the service. Evaluate "$1" in all cases to detect if you are dealing with the initial package installation, upgrades or package removal, as written in the RPM documentation. Last but not least you might also have a logrotate configuration file '%{_sysconfdir}/logrotate.d/xymon-client' which performs log file rotation on certain conditions and restarts the service after doing so.
Sorry, that I cannot provide the full spec for now (have to clarify this with the legal department here), but at least you should have a better idea what's actually needed.
Cheers! -cs