[Bug 1924604] Re: do-release-upgrade crashed with KeyError in __getitem__(): "The cache has no package named 'python-is-python2'"

Brian Murray 1924604 at bugs.launchpad.net
Fri Jul 2 17:27:59 UTC 2021


I followed the described test case and received the following dialog
after running 'do-release-upgrade -p' on an Ubuntu 18.04 system with
universe disabled and python2 packages installed.

universe component not enabled

You have the package python-minimal installed which is a python2 
package. python2 has been deprecated in Ubuntu 20.04 LTS and is now 
available from the universe component of the Ubuntu archive. To 
ensure any existing third party code you have installed continues to 
work the release upgrade process would install python-is-python2 for 
you. However, the universe component of the archive is not enabled on 
this system. For the upgrade process to proceed you should either 
enable the universe component in /etc/apt/sources.list or remove 
python-minimal, libpython-stdlib 


Restoring original system state

Aborting
Reading package lists... Done    
Building dependency tree          
Reading state information... Done
=== Command detached from window (Fri Jul  2 10:22:36 2021) ===
=== Command terminated with exit status 1 (Fri Jul  2 10:22:46 2021) ===

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to ubuntu-release-upgrader in
Ubuntu.
https://bugs.launchpad.net/bugs/1924604

Title:
  do-release-upgrade crashed with KeyError in __getitem__(): "The cache
  has no package named 'python-is-python2'"

Status in ubuntu-release-upgrader package in Ubuntu:
  Fix Released
Status in ubuntu-release-upgrader source package in Focal:
  Fix Committed

Bug description:
  [Impact]
  Users with universe not enabled and python2 packages installed are unable to upgrade from Ubuntu 18.04 to Ubuntu 20.04.

  [Test Plan]
  -----------
  On an Ubuntu 18.04 system with universe and multiverse disabled
  1) apt-get install duplicity (it depends on python2.7)
  2) run do-release-upgrade

  Observe the upgrader hang at Calculating the changes (in text mode)
  kill it and observe a Traceback in /var/log/dist-upgrade/main.log.

  ...
    File "/usr/lib/python3/dist-packages/apt/cache.py", line 303, in __getitem__
      raise KeyError('The cache has no package named %r' % key)
  KeyError: "The cache has no package named 'python-is-python2'"

  With the version of the release-upgrader from -proposed (do-release-
  upgrade -p) you'll instead receive a message regarding universe not
  being enabled and the need to either remove python2 packages or enable
  universe.

  [Where problems could occur]
  The switch to using the finally clause in DistUpgradeCache.py is a significant (albeit safe) change but it is necessary for the error message to actually be displayed. So it'd make sense to run through a whole release upgrade to ensure that the gui behaves normally.

  [Original Description]
  This is because python-minimal was installed and universe was not enabled on the system being upgraded.

  Error Tracker buckets:
  https://errors.ubuntu.com/problem/f92900f3c057db7600d88857e7c05434b69d2496
  https://errors.ubuntu.com/problem/23e6edb38993cb74331d30beeadccdfffe1d557a

  ProblemType: CrashDistroRelease: Ubuntu 20.04
  Package: ubuntu-release-upgrader-core 1:20.04.31
  ProcVersionSignature: Ubuntu 5.4.0-71.79~18.04.1-generic 5.4.101
  Uname: Linux 5.4.0-71-generic x86_64
  ApportVersion: 2.20.9-0ubuntu7.23
  Architecture: amd64
  CrashDB: ubuntu
  Date: Thu Apr 15 10:59:53 2021
  ExecutablePath: /usr/bin/do-release-upgrade
  ExecutableTimestamp: 1606763386
  InstallationDate: Installed on 2021-04-13 (1 days ago)
  InstallationMedia: Ubuntu 18.04.5 LTS "Bionic Beaver" - Release amd64 (20200806.1)
  InterpreterPath: /usr/bin/python3.6
  PackageArchitecture: all
  ProcCmdline: /usr/bin/python3 -s ./focal --frontend DistUpgradeViewText
  ProcCwd: /tmp/ubuntu-release-upgrader-e397n4sn
  ProcEnviron:
   TERM=screen
   SHELL=/bin/bash
   LANG=en_US.UTF-8
   LC_CTYPE=en_US.UTF-8
   PATH=(custom, no user)
  Python3Details: /usr/bin/python3.6, Python 3.6.9, python3-minimal, 3.6.7-1~18.04
  PythonArgs: ['/usr/bin/do-release-upgrade', '--frontend', 'DistUpgradeViewText']
  PythonDetails: /usr/bin/python2.7, Python 2.7.17, python-minimal, 2.7.15~rc1-1SourcePackage: ubuntu-release-upgrader
  Title: do-release-upgrade crashed with KeyError in __getitem__(): "The cache has no package named 'python-is-python2'"
  UpgradeStatus: Upgraded to bionic on 2021-04-15 (0 days ago)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+bug/1924604/+subscriptions



More information about the foundations-bugs mailing list