View on GitHub

Changes in 20.04 Focal

Server changes

The following shell-accessible servers, currently on Ubuntu 16.04 'Xenial Xerus', will be upgraded to 20.04 'Focal Fossa':

  • pip (aka., the main shell server
  • sinkhole (aka., the web server

As we already have doom, a 20.04 server for games and long-running processes, we'll be decommissioning the old games server cavein shortly after the upgrade. Please migrate your servers and scheduled tasks ahead of the upgrade.

We'll also be upgrading other servers hosting various SRCF services, which will experience some downtime:

  • blizzard, the DNS server (though access to other services on the domain will be unaffected by this)
  • flame, the news server
  • squirrel, the MySQL server

Software updates

If you’d like to check what version of a particular package will be installed after the upgrade, you can search for it on the Ubuntu package directory. If a package is listed for xenial, but not for focal, then it is liable to be removed following the upgrade -- contact the sysadmins if there's a package you need that's slated for removal, and we can see what can be done.

Name Current version New version Links
Apache 2.4.18 2.4.41 CHANGES file
MySQL 5.5 8.0 Release Notes
Node.js 4.2.6 10.19.0 Changelogs
PHP 7.0 7.4 Appendices (Migrating from…)
PostgreSQL 9.5 12 Release Notes
Python 3.5 3.8 What's New in Python
Ruby 2.3 2.7 Ruby Releases

If you've built or compiled your own software linked to libraries on the system, you'll likely need to recompile them following the upgrade.

Python 2

The majority of Python 2 packages have been dropped by Ubuntu, leaving only a handful of libraries acting as dependencies for packaged software that doesn't run on Python 3. If you're running your own software with py2, you should seek to make it compatible with py3 -- official support for py2 ended in January 2020, with setuptools, pip and other core components becoming py3-only.

Failing that, the core interpreter is still available, along with the ability to create py2 virtual environments if you're currently relying on any system-installed py2 packages that will no longer be available. Beware of upgrading the build tools in such environments -- the last version of pip to support py2 is 20.3, and for setuptools the last compatible release was 44.0.0.

Python 3

Python 3 itself will receive a minor version bump from 3.5 to 3.8 -- the What's New section of the Python documentation lists all the changes between versions.

The change in version also changes the library path, which means any packages user-installed to ~/.local/lib/python3.5 (with pip install --user or otherwise) will no longer be accessible and will need reinstalling following the upgrade. In addition, any virtual Python environments using the system copy of py3 will stop working, and will need recreating. Custom installations of Python (e.g. those installed with tools like pyenv) may also need reinstalling following system library updates.


PHP will be updated from 7.0 to 7.4. A list of new features and backwards-incompatible changes can be found in their documentation.

Notably, this introduces a number of new syntax features, such as arrow function shorthand and the null-safe ?. operator. The majority of backwards-incompatible changes seem to cover previously unspecified or erroneous behaviour, though consult the Backward Incompatible Changes sections for all the details.


Node is being brought into the (relatively) modern times, to be updated from major version 4 to 10. The canonical binary name will change from nodejs to node, though the former will remain as a symlink.

Unsurprisingly there will have been a number of additions and changes -- Node's changelogs cover all the details but are quite verbose; there's also this list of breaking changes if you just want to check your code for compatibility.

Last modified on Thursday May 6, 2021 by Matias Silva