On the Friday before the Christmas holiday, I decided to update to Karmic Koala. I had put off upgrading for weeks (months?) because I’d heard plenty of horror stories from colleagues about how Karmic messed with all of their settings and options. Upgrading before the holidays would give me something to do, and after the holidays I could ease back into work by fixing whatever the Koala had trampled.
Fortunately, I didn’t have any of the reported problems, but I did encounter a new one today. I was previously running Postgresql 8.3 on Jaunty. During upgrade, Karmic informed me that 8.3 was no longer supported and uninstalled some of the packages, which was perfectly fine because I could use pg_upgradecluster to update to 8.4. Theoretically.
$ pg_upgradecluster -v 8.4 8.3 main
Error: specified cluster is not running
Or maybe not. Which specified cluster wasn’t running? Postgresql 8.3, of course. Because Karmic had uninstalled the packages
$ /etc/init.d/postgresql-8.3 status
8.3 main 5432 down postgres /var/lib/postgresql/8.3/main /var/log/postgresql/postgresql-8.3-main.log
8.4 main 5433 online postgres /var/lib/postgresql/8.4/main /var/log/postgresql/postgresql-8.4-main.log
In order to start Postgresql 8.3, I had to reinstall Postgresql 8.3, but pg_upgradecluster still wouldn’t let me upgrade.
$ sudo pg_upgradecluster -v 8.4 8.3 main
Error: target cluster 8.4/main already exists
Finally, I found a helpful bug entitled Postgres 8.4 in karmic does not upgrade 8.3 cluster or include instructions on how to do so, which luckily does offer instructions on how to do so. Not only does Postgresql 8.3 need to be reinstalled and running, both /etc/postgresql/8.4 and /var/lib/postgresql/8.4 need to be removed in order for pg_upgradecluster to work.
This problem can’t be too uncommon. I wonder why it never came up for in the Ubuntu team when they proposed the forced upgrade to Postgresql 8.4?