Upgrading to Ubuntu Lucid
Sadly this isn't to be a blog of joy, more a blog of "must do better".
Today we upgraded one of our servers from Ubuntu Hardy (8.04 LTS) to Lucid (10.04 LTS) and we hit a few issues.
First of all, we carefully read the Release Notes, nothing of relevance there.
We then followed the Upgrade process. This went fine for a little while but then it started to fail badly - any package install failed with:
tar: ./md5sums: Cannot utime: Bad file descriptor tar: ./control: Cannot utime: Bad file descriptor tar: .: Cannot utime: Bad file descriptor tar: Exiting with failure status due to previous errors dpkg-deb: subprocess tar returned error exit status 2
Sadly this turned out to be a well known problem but one which Ubuntu have not deemed important enough to either fix or mention in the release notes. We strongly disagree as this will affect most hosted Ubuntu installs (as most use 2.6.18 kernels).
The excellent people at Linode have written their own guide which clearly states the problem. In fact we were lucky and after upgrading our configuration profile we could carry on with the install.
To upgrade your configuration profile at Linode:
* login to you Linode control panel
* select the server
* select the configuration profile at the top
* change the kernel to "Latest 2.6 Paravirt" (currently 2.6.32.12-linode25)
* save the profile
* now hit the "Reboot" button next to the profile
A few "apt-get dist-upgrade" (hint: if a package install fails and kills the apt-get process, run "dpkg --configure --pending" as this means that packages won't be needlessly unpacked).
A short while later and we were ready to finish off the upgrade and fix any breakages:
* Drupal (which runs this website) was complaining about a deprecated "ereg" function in /usr/share/drupal6/includes/file.inc line 911. This was fixed by replacing the call with:
preg_match("/$mask/", $file)The LDAP server (slapd) also failed to start. This was due to a change from configuration file to "cn=config" (where the configuration is stored in the LDAP database itself). For now we've set "SLAPD_CONF=/etc/ldap/slapd.conf" in /etc/default/slapd to use the original file.
To keep things clean we used "apt-get autoremove" and "deborphan --guess-all" to remove old and obsoleted packages.
We then ran "puppet" to fix up a few issues (namely the sources files for apt) puppet updated these from hardy to lucid for all the third party repositories.
Lastly (a paranoid step) we ran "find /etc -name *.dpkg-dist" to find all updated configuration files and compared them with the installed versions.