Select Page
NOTE: This is a static archive of an old blog, no interactions like search or categories are current.

Today I had to upgrade Exim on my RedHat and my FreeBSD machine.
The experience was hugely different in the two cases and highlights to me again that RPM is from the Devil.


FreeBSD provides a centralised repository of all Ported Applications, this repository is maintained by the FreeBSD core team and quality controlled on real systems. The ports system is tracked for your version of FreeBSD and typically builds from source optimised for your system and its libraries. More on this here.
RedHat has no centralised system apart from the offical packages that RedHat provides in the distribution. If you want to deviate from the RedHat supplied software – such as not using sendmail – then you have to rely on the providers of your application to provide a package. If your provider does not provide a package then it is up to third parties to provide packages.
Today I had to try and find RPM packages for Exim. The previous source for packages was unavailable at the time and so I had to hunt down someone else that seemed to have a decent RPM. This took about 45 minutes, it required me to download all the various bits and peices of the source RPM. After some editing of the Spec File and reading of the rpmbuild man page I managed to get the RPM built.
The next problem was upgrading the previous Exim – which was split into exim and exim-base RPMs – with one that was just a Exim package. I was forced to backup my configs (always a good idea) and uninstall manually the exim-base and exim packages with the –nodeps option.
At this point it all went bad, RPM hung and stopped responding. This is known bug in RedHat 8.0. I was forced to reboot the server as in the past this eventually let to a complete lock up of the UML host. After this I force uninstalled the old Exim packages – without running the preun scripts since the previous uninstall failed halfway. I then installed the new package and started Exim after verifying my configs were correct.
At this point another problem appeared. The old exim RPM was using exim:mail while the new one used mail:mail, I had to manually go chown my spool files and so forth. After about an hour finally the RedHat machine was upgraded.
The reason this took so long is a direct result of the disjointed development process in RedHat, the lack of standards in RedHat and in general the messy state of the Linux distribution world.
I then moved to my FreeBSD machines. I cvsup’d the ports tree and noticed they had already amended the port with the patch. I edited the Makefile slightly to my specific needs and ran – after shutting down my current exim:
# portupgrade -o mail/exim-old exim
When this completed I simply started up my Exim again. Case closed, took 5 minutes.
I know which one I prefer.
Related Links:
RPM Hell
Portupgrade