How To Upgrade to Ubuntu 16.04 LTS
How To Upgrade to Ubuntu 16.04 LTS

Tutorial

How To Upgrade to Ubuntu 16.04 LTS

UbuntuDigitalOceanSystem Tools
Not using Ubuntu 16.04?
Choose a different version or distribution.

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:

  • sudo apt-get update

Next, upgrade installed packages to their latest available versions:

  • 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:

  • 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:

  • 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:

  • 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:

  • 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.

44 Comments

  • 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.

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

    • 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

        • 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.

  • Which is the default DATABASE server for 16.04?

  • 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?

  • 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?

  • 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.

  • 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?

Creative Commons License