So I'm working on upgrading the OS on my file server from Slackware 10.0 to Slackware 12.2. Slackware 10.0 is five years old, so it's long overdue for an upgrade. The machine isn't running very many services, so it should be relatively easy. Mostly, it is.
Except for MySQL. It turns out that the version of MySQL I had before was 4.0.x, and 4.1 introduced an incompatible change in the way authentication is handled, which means a 4.0 client cannot talk to a 4.1 (or higher) server. So, I need to upgrade the MySQL client on my main server so it can talk to the newer version on the new file server. Upgrading MySQL on the other system turned out to be easy; unfortunately I didn't realize I was going to have this problem when I set my spam filtering scripts to temporarily connect to a completely different (off-site) MySQL server while MySQL on my file server would be offline. So SMTP was broken all day.
Once I got MySQL updated, the spam filtering code was still
crashing. I had to recompile
MySQL database driver, so it would actually use the new version
of MySQL that had just been installed. That went smoothly, and
I got e-mail working again.
Of course, PHP has the same issue, but unlike Perl, you can't just recompile a simple module from CPAN. No, you have to recompile the entirity of PHP. I had already made modifications to the standard Slackware PHP package to enable a few missing features, so it should be a simple matter to do that again. Unfortunately I ran into a bug in PHP, then an incompatibility in c-client. These took hours to fix, because every time I thought I'd figured out how to fix it, I had to wait for everything to recompile before discovering that in fact it was still broken.
Finally, I managed to get PHP working (by manually backporting
a fix from a newer version), only to discover that even though
skip-networking was commented out in
was a command-line option for it in
needed to be commented out as well.
I suppose this is the sort of thing that terrifies Windows users about Linux, and makes them wonder why we do it. Being able to let a server run for five years without really messing with it at all is nice, though. It would have kept going for five more, but computers need to interact with other computers, and when everything else gets upgraded, old software starts having trouble interoperating.
I'm very glad I finally got it working.