I was very late to the game in upgrading my Ubuntu Servers. I was running Ubuntu 16.04. Even though is it a LTS branch, also known as Long Term Support, the ESM period starting in April 2021. Which means, if you want security updates, you have to pay between $25-$1500 (depending on the ESM product) per year.

So, upgrading before hand is recommended. But, if you are like me, you wait until you can no longer update. 😥 You may get an error like this:

Invalid package information 

After updating your package information, the essential package 
'ubuntu-minimal' could not be located. This may be because you have 
no official mirrors listed in your software sources, or because of 
excessive load on the mirror you are using. See /etc/apt/sources.list 
for the current list of configured software sources. 
In the case of an overloaded mirror, you may want to try the upgrade 
again later. 

Well, I got some good news for you! I figured a way to update it. Well, at least on Digital Ocean. Which you should be able to translate to any other environment. First and foremost, I would probably make sure you update your MySQL installation. I had to move everything into a docker for MySQL on the server, which I can talk about later on, but, do that first, because upgrading from 16.04 to 20.04 is huge and I ended up not getting my MySQL server over every time until I put it into a docker.

As always, backup your server by creating a snapshot.

Next we will backup your sources.list and run this command:

sudo cp /etc/apt/sources.list ~/sources.list
sudo sed -i 's/mirrors.digitalocean.com/us.archive.ubuntu.com/' /etc/apt/sources.list

What this does, is first, the cp copies your sources.list file to your home directory. Then the sed replaces everything that is pointing to the Digital Ocean servers to the archived ubuntu servers. This is so we can get the update files. I would then run this:

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get dist-upgrade
do-release-upgrade

Which should upgrade your system. Answer any of the questions the best you can. For me, this upgraded me from 16.04 all the way to 20.04. It failed at some point, but ran it again made it work. Most files I kept my local version, since, I had modifications in there on purpose. Once finished, you can then revert your sources.list file back to normal by running this:

sudo sed -i 's/us.archive.ubuntu.com/mirrors.digitalocean.com/' /etc/apt/sources.list

I would then update your package list and upgrade anything

sudo apt-get update
sudo apt-get upgrade -y

That’s it, you are done! Congrats, you should now be running Ubuntu 20.04!

~Joshua