48

I'm trying to upgrade from 18.10 to 19.10, using sudo do-release-upgrade however I only get an error: An upgrade from 'cosmic' to 'eoan' is not supported with this tool.

I performed the steps to update my sources.list to point to old-release server, as suggested here: How to install software or upgrade from an old unsupported release?

This did not help. I get the same error.

slm
  • 3,155
Droopycom
  • 589
  • 1
  • 4
  • 3

6 Answers6

71

It's still possible to do the upgrade, you just have to hack some files per this blog post in order to upgrade to 19.04 first. I was able to upgrade successfully following his method.

Quoting the blog:

  1. Run do-release-upgrade on the 18.10 system. This will give you an error about being unsupported. But behind the scenes, the tool will download some metadata files we want to modify.
  2. As root, go in to /var/lib/update-manager and copy the file meta-release to a new file meta-release2. This file was downloaded by do-release-upgrade from the Internet and tells the upgrader how to upgrade.
  3. Edit meta-release2. Remove all entries for eoan entirely. Modify the disco entry so it says Supported: 1
  4. Edit the file /usr/lib/python3/dist-packages/UpdateManager/Core/MetaRelease.py. Change this line of code self.metarelease_information = open(self.METARELEASE_FILE, "r") To read self.metarelease_information = open(self.METARELEASE_FILE + "2", "r") That will tell the upgrader to use your modified file instead of the original. (It will also avoid any redownloads overwriting your changes.)
  5. Run do-release-upgrade. It should now be doing an upgrade 18.10 → 19.04. Let that run as normal and reboot.
  6. Congratulations! You’re now running 19.04. Remove the /var/lib/update-manager/meta-release2 you made.
  7. Since 19.10 is supported, all you have to do to upgrade 19.04 → 19.10 is run do-release-upgrade again. No hacks necessary, you’re back on the main path.
20

Upgrading to 19.04 is straightforward as suggested by sysopch on a blog

  1. mkdir /tmp/upgrade
  2. cd /tmp/upgrade
  3. wget http://old-releases.ubuntu.com/ubuntu/dists/disco-updates/main/dist-upgrader-all/current/disco.tar.gz
  4. tar -xf disco.tar.gz
  5. python3 ./dist-upgrade.py

Tried it out myself - worked like a charm. After this do-release-upgrade seems to not error out, but I did NOT upgrade to 19.10 myself (I'm happy with 19.04).

In step 5 I had to **sudo** python3 ./dist-upgrade.py

jarm
  • 301
  • 1
  • 5
6

Simpler Way: 18.10 -> 19.04 -> 19.10 -> 20.04 LTS (24 May 2020)

I got caught out on this having over 20 Ubuntu VMs on various versions from 18.04 / 18.10 / 19.04 / 19.10 .

I have tested a number of updates from 18.10 to 20.04 using variation of what is provided in prior guidance above.

Here are the high level steps:

  1. You can only do this via set of steps: 18.10 (cosmic) -> 19.04 (disco) -> 19.10 (eoan) -> 20.04 (focal)

  2. 18.10 and 19.04 are the problem as they are "obsolete" and archive has been moved to "old-releases", so you will need to edit /etc/apt/sources.list to point to:

"deb http://old-releases.ubuntu.com/ubuntu" and not any other repository

  1. Using command line (not UI) do:
  • sudo apt update
  • sudo apt upgrade
  • sudo apt autoremove
  • and reboot
  1. Now you can try upgrade but first check: /etc/update-manager/release-upgrades has "Prompt=normal" and edit if needed. Then via command line do:
  • do-release-upgrade

There are 3 possible results:

  • a. All goes ok ;-) - then advance to (6)
  • b. Get failure where is says you cannot upgrade from "cosmic" to "eoan"
  • c. Get "do-release-upgrade" command not found
  • d. No release found (see step 6)

4b. You need to edit the cached update list which is in: ~/.cache/update-manager-core/meta-release

Editing should be remove all releases after "disco" and change "cosmic" & "disco" supported flag from "0" to "1" ie:

Dist: cosmic

...

...

Supported: 1

...

...

Now back to 4

4c. You need to install update sw: sudo apt install ubuntu-release-upgrader-core

Now back to 4

  1. Redo: do-release-upgrade

Keep in mind you could end up going back to 4b.

If all goes ok then go to (6)

  1. You should now be at 19.04 or 19.10 (depending on where you started).

Now you just need to repeat the steps.

Simply repeat 4.

If get a "release not found" error then you should delete the cached releases file you edited earlier (~/.cache/update-manager-core/meta-release) and re-run.

  1. You should now be able to to upgrade to 20.04 LTS

NOTE 1: I am writing this from rough notes, keep while doing updates, so hope I have recalled correctly.

NOTE 2: If you have used "external PPA" in /etc/apt/sources.list.d directory, then you should disable these prior to starting the update process.

NOTE 3: I have just done an 18.04 LTS update this went: 18.04 -> 19.10 -> 20.04 . So it did not go directly from 18.04 -> 20.04 ... puzzling

zebity
  • 381
5

Had the same question. After some researching (thought you can upgrade upwards anyhow you want) found this ubuntu help page.

For further stability of a LTS release there is a slight change in behaviour if you are currently running a LTS version. LTS systems are only automatically considered for an upgrade to the next LTS via do-release-upgrade with the first point release. So for example 14.04 will only upgrade once 16.04.1 is released. If you want to update before, e.g. on a subset of machines to evaluate the LTS upgrade for your setup the same argument as an upgrade to a dev release has to be used via the -d switch.

We should be able to upgrade in may-june 2020 (i think) when 20.04.X is released.

Update 2020-02-20

Nevermind, the 18.04 will be fine. 18.10 is dead (unless you got a time machine or better knowledge of ubuntu internals, how upgrades are done).

All wee can is update sources.list to http://old-releases.ubuntu.com/ubuntu/ so that apt-get will be able to work.

Apparently you could update in a small time frame in the past. Current tooling (do-release-upgrade, which is a black box doing magic) can only update to latest available release.

So, as an example, you can do further updates:

  • 18.10 => 19.04 (while 19.04 is in Current, which it is not anymore, it is in End Of Life)

  • 19.04 => 19.10 (while 19.10 is in Current)

  • 19.10 => 20.04 (always? while in Current?)

  • 18.04 => 20.04 (always? while in Current?)

Links with scrapes of info

SLCH000
  • 151
4

Find below the steps to bypass not supported upgrades.

Before the upgrade, make sure your system has the latest updates:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
# Reboot if needed.

Here is the actual workaround (by forcing all releases to be supported) by patching the file:

sudo sed -i'.bak' "s/supported = int/supported = 1|int/" /usr/lib/python3/dist-packages/UpdateManager/Core/MetaRelease.py

Note: Similar approach to accepted answer by patching MetaRelease.py file, but simplified (no file copy/renames are required).

Then run the upgrade as usual:

sudo do-release-upgrade

To upgrade to another release after the it's finished, repeat the above command again.

Notes:

  • Above tested by upgrading Ubuntu

    • from 19.04 (Disco Dingo) to 19.10 (Eoan Ermine) (as of Oct 2020).
    • from 19.10 (Eoan Ermine) to 20.04 (Focal Fossa) (as of Oct 2020).
  • If you're logged as root, you don't need to prefix commands with sudo.

  • If you're doing the remote upgrade, it's safer to run command using screen, e.g. sudo screen do-release-upgrade (so the upgrade won't stop on connectivity issues).

kenorb
  • 10,944
0

I successfully upgraded directly from 16.04 to 19.10 but I didn't do this on my production system I did it on a test system:

I used the instructions from:

In a nutshell the article rather than "upgrading" you trick the system into thinking current version is 19.10 and perform a regular "update":

We need to run the following command to change all instances of cosmic to eoan in the source list file (/etc/apt/sources.list). Cosmic is the code name for Ubuntu 18.10, whereas eoan is the code name for Ubuntu 19.10.

sudo sed -i 's/cosmic/eoan/g' /etc/apt/sources.list

Then we need to disable third-party repositories (PPAs) with the command below.

sudo sed -i 's/^/#/' /etc/apt/sources.list.d/*.list

Keep in mind I had errors that required required running of sudo apt clean and sudo apt install -f afterwards. Sometimes I had to do this a couple of times after fixing other error messages. Luckily google search and answers in Ask Ubuntu helped me get the job done.