Tutorial

How To Upgrade to Ubuntu 16.04 LTS

Published on April 8, 2016
English
How To Upgrade to Ubuntu 16.04 LTS
Not using Ubuntu 16.04?Choose a different version or distribution.
Ubuntu 16.04

Introduction

Warning: As with almost any upgrade between major releases of an operating system, this process carries an inherent risk of failure, data loss, or broken software configuration. Comprehensive backups and extensive testing are strongly advised.

To avoid these problems, when possible, we recommend migrating to a fresh Ubuntu 16.04 server rather than upgrading in-place. You may still need to review differences in software configuration when upgrading, but the core system will likely have greater stability. You can follow our series on how to migrate to a new Linux server to learn how to migrate between servers.

The Ubuntu operating system’s next Long Term Support release, version 16.04 (Xenial Xerus), is due to be released on April 21, 2016.

Although it hasn’t yet been released at the time of this writing, it’s already possible to upgrade a 15.10 system to the development version of 16.04. This may be useful for testing both the upgrade process and the features of 16.04 itself in advance of the official release date.

This guide will explain the process for systems including (but not limited to) DigitalOcean Droplets running Ubuntu 15.10.

Prerequisites

This guide assumes that you have a system running Ubuntu 15.10, configured with a non-root user with sudo privileges for administrative tasks.

Potential Pitfalls

Although many systems can be upgraded in place without incident, it is often safer and more predictable to migrate to a major new release by installing the distribution from scratch, configuring services with careful testing along the way, and migrating application or user data as a separate step.

You should never upgrade a production system without first testing all of your deployed software and services against the upgrade in a staging environment. Keep in mind that libraries, languages, and system services may have changed substantially. In Ubuntu 16.04, important changes since the preceding LTS release include a transition to the systemd init system in place of Upstart, an emphasis on Python 3 support, and PHP 7 in place of PHP 5.

Before upgrading, consider reading the Xenial Xerus Release Notes.

Step 1 – Back Up Your System

Before attempting a major upgrade on any system, you should make sure you won’t lose data if the upgrade goes awry. The best way to accomplish this is to make a backup of your entire filesystem. Failing that, ensure that you have copies of user home directories, any custom configuration files, and data stored by services such as relational databases.

On a DigitalOcean Droplet, the easiest approach is to power down the system and take a snapshot (powering down ensures that the filesystem will be more consistent). See How To Use DigitalOcean Snapshots to Automatically Backup your Droplets for more details on the snapshot process. When you have verified that the update was successful, you can delete the snapshot so that you will no longer be charged for it.

For backup methods which will work on most Ubuntu systems, see How To Choose an Effective Backup Strategy for your VPS.

Step 2 – Upgrade Currently Installed Packages

Before beginning the release upgrade, it’s safest to install the latest versions of all packages for the current release. Begin by updating the package list:

  1. sudo apt-get update

Next, upgrade installed packages to their latest available versions:

  1. sudo apt-get upgrade

You will be shown a list of upgrades, and prompted to continue. Answer y for yes and press Enter.

This process may take some time. Once it finishes, use the dist-upgrade command, which will perform upgrades involving changing dependencies, adding or removing new packages as necessary. This will handle a set of upgrades which may have been held back by apt-get upgrade:

  1. sudo apt-get dist-upgrade

Again, answer y when prompted to continue, and wait for upgrades to finish.

Now that you have an up-to-date installation of Ubuntu 15.10, you can use do-release-upgrade to upgrade to the 16.04 release.

Step 3 – Use Ubuntu’s do-release-upgrade Tool to Perform Upgrade

First, make sure you have the update-manager-core package installed:

  1. sudo apt-get install update-manager-core

Traditionally, Debian releases have been upgradeable by changing Apt’s /etc/apt/sources.list, which specifies package repositories, and using apt-get dist-upgrade to perform the upgrade itself. Ubuntu is still a Debian-derived distribution, so this process would likely still work. Instead, however, we’ll use do-release-upgrade, a tool provided by the Ubuntu project, which handles checking for a new release, updating sources.list, and a range of other tasks. This is the officially recommended upgrade path for server upgrades which must be performed over a remote connection.

Start by running do-release-upgrade with no options:

  1. sudo do-release-upgrade

If Ubuntu 16.04 has not been released yet, you should see the following:

Sample Output
Checking for a new Ubuntu release
No new release found

In order to upgrade to 16.04 before its official release, specify the -d option in order to use the development release:

  1. sudo do-release-upgrade -d

If you’re connected to your system over SSH, as is likely with a DigitalOcean Droplet, you’ll be asked whether you wish to continue.

On a Droplet, it’s safe to upgrade over SSH. Although do-upgrade-release has not informed us of this, you can use the console available from the DigitalOcean Control Panel to connect to your Droplet without running SSH.

For virtual machines or managed servers hosted by other providers, you should keep in mind that losing SSH connectivity is a risk, particularly if you don’t have another means of remotely connecting to the system’s console. For other systems under your control, remember that it’s safest to perform major operating system upgrades only when you have direct physical access to the machine.

At the prompt, type y and press Enter to continue:

Reading cache

Checking package manager

Continue running under SSH?

This session appears to be running under ssh. It is not recommended
to perform a upgrade over ssh currently because in case of failure it
is harder to recover.

If you continue, an additional ssh daemon will be started at port
'1022'.
Do you want to continue?

Continue [yN] y

Next, you’ll be informed that do-release-upgrade is starting a new instance of sshd on port 1022:

Starting additional sshd 

To make recovery in case of failure easier, an additional sshd will 
be started on port '1022'. If anything goes wrong with the running 
ssh you can still connect to the additional one. 
If you run a firewall, you may need to temporarily open this port. As 
this is potentially dangerous it's not done automatically. You can 
open the port with e.g.: 
'iptables -I INPUT -p tcp --dport 1022 -j ACCEPT' 

To continue please press [ENTER]

Press Enter. Next, you may be warned that a mirror entry was not found. On DigitalOcean systems, it is safe to ignore this warning and proceed with the upgrade, since a local mirror for 16.04 is in fact available. Enter y:

Updating repository information

No valid mirror found 

While scanning your repository information no mirror entry for the 
upgrade was found. This can happen if you run an internal mirror or 
if the mirror information is out of date. 

Do you want to rewrite your 'sources.list' file anyway? If you choose 
'Yes' here it will update all 'trusty' to 'xenial' entries. 
If you select 'No' the upgrade will cancel. 

Continue [yN] y

Once new package lists have been downloaded and changes calculated, you’ll be asked if you want to start the upgrade. Again, enter y to continue:

Do you want to start the upgrade?


6 installed packages are no longer supported by Canonical. You can
still get support from the community.

9 packages are going to be removed. 104 new packages are going to be
installed. 399 packages are going to be upgraded.

You have to download a total of 232 M. This download will take about
46 seconds with your connection.

Installing the upgrade can take several hours. Once the download has
finished, the process cannot be canceled.

 Continue [yN]  Details [d]y

New packages will now be retrieved, then unpacked and installed. Even if your system is on a fast connection, this will take a while.

During the installation, you may be presented with interactive dialogs for various questions. For example, you may be asked if you want to automatically restart services when required:

Service Restart Dialog

In this case, it is safe to answer “Yes”. In other cases, you may be asked if you wish to replace a configuration file that you have modified with the default version from the package that is being installed. This is often a judgment call, and is likely to require knowledge about specific software that is outside the scope of this tutorial.

Once new packages have finished installing, you’ll be asked whether you’re ready to remove obsolete packages. On a stock system with no custom configuration, it should be safe to enter y here. On a system you have modified heavily, you may wish to enter d and inspect the list of packages to be removed, in case it includes anything you’ll need to reinstall later.

Remove obsolete packages? 


53 packages are going to be removed. 

 Continue [yN]  Details [d]y

Finally, assuming all has gone well, you’ll be informed that the upgrade is complete and a restart is required. Enter y to continue:

System upgrade is complete.

Restart required 

To finish the upgrade, a restart is required. 
If you select 'y' the system will be restarted. 

Continue [yN] y

On an SSH session, you’ll likely see something like the following:

=== Command detached from window (Thu Apr  7 13:13:33 2016) ===
=== Command terminated normally (Thu Apr  7 13:13:43 2016) ===

You may need to press a key here to exit to your local prompt, since your SSH session will have terminated on the server end. Wait a moment for your system to reboot, and reconnect. On login, you should be greeted by a message confirming that you’re now on Xenial Xerus:

Welcome to Ubuntu Xenial Xerus (development branch) (GNU/Linux 4.4.0-17-generic x86_64)

Conclusion

You should now have a working Ubuntu 16.04 installation. From here, you likely need to investigate necessary configuration changes to services and deployed applications. In the coming weeks, we’ll begin posting DigitalOcean guides specific to Ubuntu 16.04 on a wide range of topics.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
22 Comments
Leave a comment...

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

I wouldn’t recommend anyone uses 16.04 until it has been officially added to DigitalOcean and has been out for long enough for others to stumble into issues first.

However, I will give this a go regardless!

If you’re upgrading a server managed by ServerPilot, be sure to use the instructions here:

https://serverpilot.io/community/articles/how-to-upgrade-ubuntu-14.04-to-16.04.html

Looks pretty much the same to me.

Is there any reason in particular why it needs 1GB RAM to upgrade over on SeverPilot?

ServerPilot doesn’t need it but the MySQL 5.5 -> 5.7 upgrade that happens during the Ubuntu 14.04 -> 16.04 upgrade can use more memory than is available on a 512MB server. If you run out of memory, the kernel will kill MySQL and it can corrupt your databases. You can try with less than 1GB memory, just be sure you have backups.

also anyone using 5.6 or higher will likely experience the same as I’m pretty sure that is when the base memory requirement increased

Upgrading left me with a readonly filesystem and an old kernel (3.13.0-79)

Brennen Bearnes
DigitalOcean Employee
DigitalOcean Employee badge
April 18, 2016

Sorry to hear that. I’m not too surprised by breakage at this stage of the game (or with any upgrade between major releases—thus all the disclaimers heading this guide), but I haven’t had any problems upgrading relatively stock systems so far.

Any details you could provide about your initial configuration or errors you saw in the course of the upgrade might be helpful to others.

Edit: Regarding the kernel, for DigitalOcean Droplets starting from 14.04, it looks like it may be necessary to do some extra work. I’m investigating and will update the tutorial accordingly.

Here’s what I saw during the install:

https://dpaste.de/nxqE

Brennen Bearnes
DigitalOcean Employee
DigitalOcean Employee badge
April 19, 2016

Thanks for the detail.

On further investigation, it turns out that:

  • Although the upgrade from 14.04 may complete successfully (more or less), it’s not an officially supported upgrade path until the first point release (16.04.01). I’ve updated the tutorial to reflect that this isn’t a recommended approach.
  • Since 14.04 Droplets still have externally managed kernels, any upgraded systems will need to have their kernel updated from the Control Panel once one is available there.

My root partition mounted read only too. To fix, I ran:

blkid

to get the disk’s new UUID, and then updated /etc/fstab with the new value:

cp /etc/fstab /run
vim /run/fstab 
mount --no-mtab --fstab /run/fstab -o remount,rw /
cp /run/fstab /etc
reboot

I also had to manually install a few bits:

apt-get install libapache2-mod-php7.0 php7.0-mysql mysql-client-core-5.7 mysql-server-5.7 and futz with config files.

I tried booting the 4.4 kernel, but networking didn’t load, so I reverted to the 3.3 kernel for now.

Eris Castrogivanni
DigitalOcean Employee
DigitalOcean Employee badge
April 24, 2016

Which version did you upgrade from? We’ve seen this issue when upgrading from some of our older images in the past.

I do recommend deploying a new droplet, however, so you don’t need to use the kernel dropdown menu in the control panel anymore.

14.04, but the droplet may have started out as an earlier release.

If I deploy a new droplet, is there an easy way to migrate from my original droplet?

Thanks for your help.

As “somewheremylove” explains it here:

You need to change the network interface name in

/etc/network/interfaces

from eth0 to ens3 (confirm with ip addr show)

don’t normally bother logging in, but did so to upvote this, this should really be mentioned in the article as it left me without a network connection.

and the DO console is so slow compared to ssh in to fix other things

With the 16.04.01 release my network connection kept working although the names haven’t updated, strange.

This helped too. Thanks!

Apparently, this is still happening with the 16.04.01 release (from 14.04).

Thank you so much for the instructions.

I had this issue too, thanks so much for your help. Not sure all the step are needed but I could be wrong.

I ran blkid to get the disk uuid then updated the entry in /etc/fstab then ran:

mount -n -o remount /

Rebooted and it was as good as new.

Had the exact same issue, you saved the day! I also changed the kernel in the DO console to “Ubuntu 16.04 x64 vmlinuz-4.4.0-28-generic”.

This worked! Thanks.

Thanks - I had the same problem and this fixed it for me.

For other newbs out there: when you’re on the vim step, and you use the shortcut ZZ to save and quit, you will get an error about failing to write to some tmp/log file (I forget what exactly) - instead you should use :w to save your changes!

Which is the default DATABASE server for 16.04?

found it, mysql 5.7

This comment has been deleted

    Pro-tip. Start scripting your deploys, then fix scripts, and restores on new droplets…

    As mentioned, Ubuntu 16.04 uses MySQL 5.7. Unlike earlier versions of MySQL, 5.7 is set to “strict mode” by default. Strict mode may block some of your functions. The following link shows how to disable strict mode - https://mattstauffer.co/blog/how-to-disable-mysql-strict-mode-on-laravel-forge-ubuntu

    The Point Release is scheduled for July 21st, 2016. That might be helpful to add to the warning at the start of the tutorial.

    16.04.1 is released. But, ‘sudo do-release-upgrade’ command is still giving ‘No new release found’ message. Am afraid to switch to development release (‘-d’ option).

    Is it something we have to wait for digitalocean needs to enable?

    do-release-upgrade uses this page to find new versions: http://changelogs.ubuntu.com/meta-release-lts

    That page gets updated 1 week after release. Meaning that it got updated yesterday, 28th. You should be able to do-release-upgrade now.

    This might also be worth mentioning in the article @bpb

    Thanks. Will try the upgrade now.

    This comment has been deleted

      No dice with the upgrade. Problem a) mysql upgrade wasnt possible as I didnt know the credentials so had to skip that b) now left with a read-only file system as well, and the website is essentially unavailable. This upgrade process is bollocks. My droplet is a straight forward, unmodified one just running wordpress, upgrading the underlying OS to a newer version shouldn’t really break anything IMO

      The way VPS often works is to pull a switcheroo on you between what kernel version your system expects versus what kernel version it gets from your VPS provider upon booting.

      The do-release-upgrade will often setup the system for a kernel a few versions ahead of the latest kernel supported by DigitalOcean in the droplet kernel list of choices. Even if you choose the latest supported kernel for your droplet, it won’t exactly match the software packages that do-release-upgrade installed. This caused iptables rule loading and therefore networking to fail, because they are very sensitive to the kernel version mismatches.

      In my case it setup the system to be ready for linux-image-4.4.0-34-generic when DigitalOcean (at the moment) only supports at most linux-image-4.4.0-28-generic. That was enough for iptables to choke.

      At this point I couldn’t use the packaging system to install the right kernel (in order for the system to be compatible with the droplet kernel choice in the dashboard) a few versions back, because networking doesn’t work with that kernel.

      Bad chicken/egg problem, so ultimately I was able to use apt-get remove on the latest kernel (because it doesn’t require a network connection to remove a package), leaving behind the old kernel from Ubuntu 1410, and then going to the DigitalOcean dashboard and choosing the exact same old kernel version from the droplet kernel list. Only then would networking work. At that point I was able to use the packaging system to install the exact kernel that matched the latest droplet kernel choice, and put a “hold” on that linux-image package so it won’t accidentally advance to an incompatible kernel with the droplet kernel choice.

      It may be possible (untested) to, instead of saying “yes” to reboot the system at the end of do-release-upgrade, run the package manager and pick the exact matching kernel to the newer DigitalOcean kernel list choice you made, prior to rebooting.

      Manual steps I had to do:

      • shutdown didn’t work after do-release-upgrade, had to hard power off from dashboard
      • eth0 is ens3 (dmesg | grep eth0 to discover the rename)
      • Mediawiki using fast cgi required manually selecting php-mysql and php-cgi
      • Don’t install “linux-image” virtual package, install the precise version of linux-image-x.x.x… that matches your kernel dropdown choice in the DigitalOcean dashboard
      • The droplet kernel doesn’t autoadvance on you, so naturally you must put a “hold” on the linux-image so it doesn’t “autoadvance” either during normal package updating

      General things about upgrading from older Ubuntu versions to Ubuntu 1604:

      Hi, I try to upgrade my server use commands:

      • sudo apt-get update
      • sudo apt-get upgrade
      • sudo apt-get dist-upgrade
      • sudo apt-get install update-manager-core
      • sudo do-release-upgrade -d

      but always get error

      Get:1 https://deb.nodesource.com xenial/main Translation-en                                                                                
      Err https://deb.nodesource.com xenial/main Translation-en                                                                                  
                                                                                                                                                 
      Err https://deb.nodesource.com xenial/main Translation-en                                                                                  
                                                                                                                                                 
      Err https://deb.nodesource.com xenial/main Translation-en                                                                                  
                                                                                                                                                 
      Err https://deb.nodesource.com xenial/main Translation-en                                                                                  
                                                                                                                                                 
      Ign https://deb.nodesource.com xenial/main Translation-en                                                                                  
      Fetched 0 B in 6s (22.1 MB/s)                                                                                                              
      
      Error during update 
      
      A problem occurred during the update. This is usually some sort of 
      network problem, please check your network connection and retry. 
      
      W:Failed to fetch 
      http://ppa.launchpad.net/fkrull/deadsnakes-python2.7/ubuntu/dists/xenial/main/binary-amd64/Packages 
      404 Not Found 
      , W:Failed to fetch 
      http://ppa.launchpad.net/fkrull/deadsnakes-python2.7/ubuntu/dists/xenial/main/binary-i386/Packages 
      404 Not Found 
      , E:Some index files failed to download. They have been ignored, or 
      old ones used instead. 
      
      
      Restoring original system state
      
      Aborting
      Reading package lists... Done    
      Building dependency tree          
      Reading state information... Done
      Building data structures... Done 
      === Command terminated with exit status 1 (Tue Aug 23 13:13:41 2016) ===
      
      

      Could someone help me?

      Problem was in

      http://ppa.launchpad.net/fkrull/deadsnakes-python2.7/ubuntu/dists/xenial/main/binary-amd64/Packages
      

      I comment repo, befor command was run , and system has upgraded succesfuly

      Had the same. Your suggestion helped!

      Similar to (but slightly different from) @trogvar22 - I, too, run…

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

      All goes well up to the point where it opens a screen session and gets to the “Updating repository information” step. I then get a list of warnings and the, ultimately, an abort.

      I’ve tried various methods of updating apt and I’m confident I have the latest & greatest packages 14.04 has to offer via DigitalOcean. To my knowledge, I don’t have any unauthorized packages or mirrors installed. I do not have compiz-core, compiz-gnome, libxapian-dev, kwin, libkf5sysguard-dev, etc. installed, though I do have python installed.

      I’m stuck with my upgrade from 14.0.4 LTS to 16.0.4 LTS. Can anyone advise?

      BTW - here’s the output of the errors:

      Unknown Multi-Arch type 'no' for package 'compiz-core'
      Unknown Multi-Arch type 'no' for package 'compiz-gnome'
      Unknown Multi-Arch type 'no' for package 'libxapian-dev'
      Ignoring Provides line with DepCompareOp for package python-cffi-backend-api-max
      Ignoring Provides line with DepCompareOp for package python-cffi-backend-api-min
      Ignoring Provides line with DepCompareOp for package python3-cffi-backend-api-max
      Ignoring Provides line with DepCompareOp for package python3-cffi-backend-api-min
      Unknown Multi-Arch type 'no' for package 'kwin'
      Unknown Multi-Arch type 'no' for package 'kwin-dev'
      Unknown Multi-Arch type 'no' for package 'kwin-wayland'
      Unknown Multi-Arch type 'no' for package 'kwin-x11'
      Unknown Multi-Arch type 'no' for package 'libkf5sysguard-dev'
      Ignoring Provides line with DepCompareOp for package php-psr-http-message-implementation
      Ignoring Provides line with DepCompareOp for package php-psr-log-implementation
      Ignoring Provides line with DepCompareOp for package php-seclib
      Ignoring Provides line with DepCompareOp for package php-sabre-http
      Ignoring Provides line with DepCompareOp for package php-math-biginteger
      Ignoring Provides line with DepCompareOp for package pypy-cffi
      Ignoring Provides line with DepCompareOp for package pypy-cffi-backend-api-max
      Ignoring Provides line with DepCompareOp for package pypy-cffi-backend-api-min
      Unknown Multi-Arch type 'no' for package 'compiz-core'
      Unknown Multi-Arch type 'no' for package 'compiz-gnome'
      Unknown Multi-Arch type 'no' for package 'libxapian-dev'
      Ignoring Provides line with DepCompareOp for package python-cffi-backend-api-max
      Ignoring Provides line with DepCompareOp for package python-cffi-backend-api-min
      Ignoring Provides line with DepCompareOp for package python3-cffi-backend-api-max
      Ignoring Provides line with DepCompareOp for package python3-cffi-backend-api-min
      Unknown Multi-Arch type 'no' for package 'kwin-dev'
      Unknown Multi-Arch type 'no' for package 'kwin-wayland'
      Unknown Multi-Arch type 'no' for package 'kwin-x11'
      Unknown Multi-Arch type 'no' for package 'libkf5sysguard-dev'
      Ignoring Provides line with DepCompareOp for package pypy-cffi
      Ignoring Provides line with DepCompareOp for package pypy-cffi-backend-api-max
      Ignoring Provides line with DepCompareOp for package pypy-cffi-backend-api-min
      Unknown Multi-Arch type 'no' for package 'compiz-core'
      Unknown Multi-Arch type 'no' for package 'compiz-gnome'
      Ignoring Provides line with DepCompareOp for package php-math-biginteger
      Ignoring Provides line with DepCompareOp for package pypy-cffi
      Ignoring Provides line with DepCompareOp for package pypy-cffi-backend-api-max
      Ignoring Provides line with DepCompareOp for package pypy-cffi-backend-api-min
      Unknown Multi-Arch type 'no' for package 'compiz-core'
      Unknown Multi-Arch type 'no' for package 'compiz-gnome'
      Ignoring Provides line with DepCompareOp for package pypy-cffi
      Ignoring Provides line with DepCompareOp for package pypy-cffi-backend-api-max
      Ignoring Provides line with DepCompareOp for package pypy-cffi-backend-api-min
      You may want to run apt-get update to correct these problems
      
      Checking package manager
      Reading package lists... Done
      Building dependency tree
      Reading state information... Done
      Building data structures... Done
      
      Calculating the changes
      
      Calculating the changes
      
      Could not calculate the upgrade
      
      An unresolvable problem occurred while calculating the upgrade.
      
      This can be caused by:
      * Upgrading to a pre-release version of Ubuntu
      * Running the current pre-release version of Ubuntu
      * Unofficial software packages not provided by Ubuntu
      
      If none of this applies, then please report this bug using the
      command 'ubuntu-bug ubuntu-release-upgrader-core' in a terminal.
      
      
      Restoring original system state
      
      Aborting
      Reading package lists... Done
      Building dependency tree
      Reading state information... Done
      Building data structures... Done
      === Command terminated with exit status 1 (Thu Aug 25 16:07:48 2016) ===
      

      Great article. But I have a problem when I tried to upgrade my local machine in VirtualBox just to try simulate so everything will work when we do it in production but. I have give it various try now without success. I follow the guide step by step but once again when the machine tries to restart after the upgrade I get the same error which stop the booting of the system:

      random: nonblocking pool is initialized

      The only solutions I can get a round is to restore a snapshot of the machine. Anyone know what it could be or how to fix it? Very annoying.

      Does this install the desktop environment? If so how do you remove things like Gnome and Firefox so you only have the Ubuntu Server setup? I did this and now when I go into my Console i have to login through the Gnome interface.

      I ran:

      sudo apt-get purge libx11.* libqt.*

      to remove the desktop environment and its working now without Gnome.

      All was on for me, all went smooth with one exception, docker and docker-compose had to be reinstalled, and I had to move from init scripts to systemd.

      Isn’t updating this page long overdue? Considering there have now been 2 point releases of 16.04 and that big warning note no longer makes sense.

      I have tried unsuccessfully to upgrade from LTS 14.04.5 to LTS 16.04.2. After the reboot, I am left with a system with no running services. I think an updated document is needed.

      I think it would be useful to mention that PPAs mey need to be commented out during the upgrade. I hit an issue similar to what @trogvar22 was experiencing, except that it may now be quite common: I had comment out the PPA for the DO monitoring agent.

      Trying to upgrade from 15.10. I got as far as sudo do-release-upgrade, then got a train of messages ending in “apt (>= 1.0.10.2ubuntu2)’ is not installed”. If do-release-upgrade needs a new apt , why can’t it install it automatically and then continue?

      sudo do-release-upgrade Checking for a new Ubuntu release Your Ubuntu release is not supported anymore. For upgrade information, please visit: http://www.ubuntu.com/releaseendoflife

      Get:1 Upgrade tool signature [836 B]
      Get:2 Upgrade tool [1,265 kB]
      Fetched 1,266 kB in 0s (0 B/s)
      authenticate ‘xenial.tar.gz’ against ‘xenial.tar.gz.gpg’ extracting ‘xenial.tar.gz’

      Reading cache

      Checking package manager Reading package lists… Done Building dependency tree
      Reading state information… Done

      Required depends are not installed

      The required dependency ‘apt (>= 1.0.10.2ubuntu2)’ is not installed.

      after running this command :

      sudo do-release-upgrade
      

      When the 1022 ssh dialog appeared, I wrongly typed n, then I got disconnected.

      Later on, I had to go to the Dashboard terminal, and restore the ssh connection.

      But when I retried the command :

      sudo do-release-upgrade
      

      it gave me this message, and I had to close the terminal :

      Please report this as a bug and include the files
      /var/log/dist-upgrade/main.log and /var/log/dist-upgrade/apt.log in
      your report. The upgrade has aborted.
      Your original sources.list was saved in
      /etc/apt/sources.list.distUpgrade.
      
      Traceback (most recent call last):
      
      File "/tmp/ubuntu-release-upgrader-vgm0wvbx/xenial", line 8, in
      <module>
      sys.exit(main())
      
      File
      "/tmp/ubuntu-release-upgrader-vgm0wvbx/DistUpgrade/DistUpgradeMain.py",
      line 242, in main
      if app.run():
      
      File
      "/tmp/ubuntu-release-upgrader-vgm0wvbx/DistUpgrade/DistUpgradeController.py",
      line 1907, in run
      return self.fullUpgrade()
      
      File
      "/tmp/ubuntu-release-upgrader-vgm0wvbx/DistUpgrade/DistUpgradeController.py",
      line 1725, in fullUpgrade
      if not self.prepare():
      
      File
      "/tmp/ubuntu-release-upgrader-vgm0wvbx/DistUpgrade/DistUpgradeController.py",
      line 438, in prepare
      self._sshMagic()
      
      File
      "/tmp/ubuntu-release-upgrader-vgm0wvbx/DistUpgrade/DistUpgradeController.py",
      line 328, in _sshMagic
      self._view.information(summary, descr)
      
      File
      "/tmp/ubuntu-release-upgrader-vgm0wvbx/DistUpgrade/DistUpgradeViewText.py",
      line 176, in information
      readline()
      
      File
      "/tmp/ubuntu-release-upgrader-vgm0wvbx/DistUpgrade/DistUpgradeViewText.py",
      line 50, in readline
      s = input()
      
      KeyboardInterrupt
      === Command terminated with exit status 1 (Tue Feb  4 01:29:35 2020) ===
      

      already retry several times, but it keeps failing, any clue?

      Try DigitalOcean for free

      Click below to sign up and get $200 of credit to try our products over 60 days!

      Sign up

      Join the Tech Talk
      Success! Thank you! Please check your email for further details.

      Please complete your information!

      Become a contributor for community

      Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

      DigitalOcean Documentation

      Full documentation for every DigitalOcean product.

      Resources for startups and SMBs

      The Wave has everything you need to know about building a business, from raising funding to marketing your product.

      Get our newsletter

      Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

      New accounts only. By submitting your email you agree to our Privacy Policy

      The developer cloud

      Scale up as you grow — whether you're running one virtual machine or ten thousand.

      Get started for free

      Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

      *This promotional offer applies to new accounts only.