Published on

Upgrading FC19(!) to FC21 on a VPS


Because of the 'GHOST' scare, and the apparent lack of patched RPMs available for glibc for Fedora 19, I decided to bite the bullet and upgrade some VPSs to Fedora 21. However, instead of doing the sane thing (creating a fresh VPS and copying everything over) I decided to throw caution to the wind and upgrade the VPS in situ.

Digital Ocean Control Panel = SCORE!

The thing that makes it bearable on Digital Ocean is that the control panel makes it easy to switch kernels (which would otherwise be grub on a standalone machine).

On the other hand, they don't appear to have all the kernel version available, which means that a straight 'upgrade' needs to be fixed by installing a previous kernel (one which they do have on the drop-down list).

Step 1 : Take a snapshot

(unless you are actually insane).

Step 2 : Step through a helpful script

Check out this script.

However, I went through this step-by step, since running a clean yum after more than a year of bit-rot would be a surprise.

First, note the kernel that's being run :

# uname -a
Linux 3.9.8-300.fc19.x86_64 #1 SMP Thu Jun 27 19:24:23 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

Then have a run through the first (uncontraversial) steps :

yum update
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-21-$(uname -i)
yum update yum
yum clean all

Then onto the upgrade proper :

yum --releasever=21 distro-sync

This threw up a series of niggles...

Step 2a : Fix dependency issues

yum remove perl-PlRPC-0.2020-13.fc19.noarch

Remember to reinstall its dependencies perl-DBI and perl-DBD-MySQL.

Step 2b : yum runs into memory issues

This is a little disheartening, but the VPS is only 512Mb... So, refusing to give up, shut down running processes :

#service webmin stop
#Stopping Webmin server in /usr/libexec/webmin

service nginx stop
#Redirecting to /bin/systemctl stop  nginx.service

service postfix stop
#Redirecting to /bin/systemctl stop  postfix.service

Step 2c : yum+presto runs into memory issues

The solution to this was just to repeatedly re-run yum --releasever=21 distro-sync - eventually all the RPMs get downloaded / expanded successfully (about 3 iterations required).

Step 2d : Continue with the script

yum remove firewalld-config-standard
# Nothing to do (using iptables)

shutdown -h now

Step 3 : Change kernel on control panel

According to script : same as currently running (fc19).

Power On (via the Panel) takes a while...

Step 4 : Change to upgraded kernel on control panel

Ah - but here's a problem : yum gave us kernel-3.18.5-201.fc21.x86_64, but the Panel only lists a previous version.

Therefore, need to install the previous version so that we can successfully switch to it.

So : Search for most recent one listed on DigitalOcean, by visiting the Koju build site, and going to the 3.18.3-201.fc21 page. There snag the three required RPMs :

yum install ${k}/kernel-${v}.rpm \
            ${k}/kernel-core-${v}.rpm \

Fortunately, that works.

shutdown -h now

Step 5 : Change (for real, this time) to the FC21 kernel on the control panel

Power On.

uname -a
# Linux 3.18.3-201.fc21.x86_64 #1 SMP Mon Jan 19 15:59:31 UTC 2015 x86_64 x86_64 x86_64 GNU/LinuxSuccess!!


Step 6 : Backtrack over packages that yum complained about

yum install perl-DBI perl-DBD-MySQL

Minor outstanding issue

The Digital Ocean panel still shows 'Fedora Fedora 19 x64' in the droplet's header field (presumably because that's the image it was originally created from).