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 DBD::mysql , Perl's
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 my.cnf , there
was a command-line option for it in rc.mysqld that
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.
|