Upgrade – Fix Ubuntu 20.04 Upgrade Fails on i386 Packages

20.04upgrade

I recently upgraded from 16.04 to 18.04.4 LTS, and now want to upgrade again to 20.04 LTS using

sudo do-release-upgrade -d

The process fails with an error message about ppas, but the log files show that the problem has to do with ubuntu-standard and lsof conflicts. It appears that it can't resolve the conflict between lsof:amd and lsof:i386. I tried remove these and reinstalling them, but nothing worked yet.

Is there anything I can do, or should I wait and hope this gets resolved by the package maintainers?

Starting pkgProblemResolver with broken count: 1
Starting 2 pkgProblemResolver with broken count: 1
Investigating (0) ubuntu-standard:amd64 < 1.417.4 -> 1.450.1 @ii umU Ib >
Broken ubuntu-standard:amd64 Depends on lsof:amd64 < 4.89+dfsg-0.1 | 4.93.2+dfsg-1 @ii ugR >
  Considering lsof:amd64 0 as a solution to ubuntu-standard:amd64 2
  Added lsof:amd64 to the remove list
  Fixing ubuntu-standard:amd64 via keep of lsof:amd64
  MarkKeep lsof:amd64 < 4.89+dfsg-0.1 | 4.93.2+dfsg-1 @ii ugR > FU=0
Investigating (0) lsof:amd64 < 4.89+dfsg-0.1 | 4.93.2+dfsg-1 @ii ugH Ib >
Broken lsof:amd64 Conflicts on lsof:i386 < none -> 4.93.2+dfsg-1 @un umN Ib >
  Considering lsof:i386 4 as a solution to lsof:amd64 0
  Re-Instated lsof:amd64
Investigating (1) lsof:i386 < none -> 4.93.2+dfsg-1 @un umN Ib >
Broken lsof:i386 Conflicts on lsof:amd64 < 4.89+dfsg-0.1 -> 4.93.2+dfsg-1 @ii ugU Ib >
  Considering lsof:amd64 0 as a solution to lsof:i386 4
  Added lsof:amd64 to the remove list
  Conflicts//Breaks against version 4.89+dfsg-0.1 for lsof but that is not InstVer, ignoring
  Fixing lsof:i386 via remove of lsof:amd64
  MarkDelete lsof:amd64 < 4.89+dfsg-0.1 -> 4.93.2+dfsg-1 @ii ugU Ib > FU=0
Investigating (1) ubuntu-standard:amd64 < 1.417.4 -> 1.450.1 @ii umU Ib >
Broken ubuntu-standard:amd64 Depends on lsof:amd64 < 4.89+dfsg-0.1 | 4.93.2+dfsg-1 @ii ugR >
  Considering lsof:amd64 0 as a solution to ubuntu-standard:amd64 2
  Added lsof:amd64 to the remove list
  Fixing ubuntu-standard:amd64 via keep of lsof:amd64
  MarkKeep lsof:amd64 < 4.89+dfsg-0.1 | 4.93.2+dfsg-1 @ii ugR > FU=0
Investigating (1) lsof:amd64 < 4.89+dfsg-0.1 | 4.93.2+dfsg-1 @ii ugH Ib >
Broken lsof:amd64 Conflicts on lsof:i386 < none -> 4.93.2+dfsg-1 @un umN Ib >
  Considering lsof:i386 4 as a solution to lsof:amd64 0
  Removing lsof:amd64 rather than change lsof:i386
  MarkDelete lsof:amd64 < 4.89+dfsg-0.1 | 4.93.2+dfsg-1 @ii ugH Ib > FU=0
Investigating (2) ubuntu-standard:amd64 < 1.417.4 -> 1.450.1 @ii umU Ib >
Broken ubuntu-standard:amd64 Depends on lsof:amd64 < 4.89+dfsg-0.1 | 4.93.2+dfsg-1 @ii ugR >
  Considering lsof:amd64 0 as a solution to ubuntu-standard:amd64 2
  Added lsof:amd64 to the remove list
  Fixing ubuntu-standard:amd64 via keep of lsof:amd64
  MarkKeep lsof:amd64 < 4.89+dfsg-0.1 | 4.93.2+dfsg-1 @ii ugR > FU=0
Investigating (2) lsof:amd64 < 4.89+dfsg-0.1 | 4.93.2+dfsg-1 @ii ugH Ib >
Broken lsof:amd64 Conflicts on lsof:i386 < none -> 4.93.2+dfsg-1 @un umN Ib >
  Considering lsof:i386 4 as a solution to lsof:amd64 2
  Removing lsof:amd64 rather than change lsof:i386
  MarkDelete lsof:amd64 < 4.89+dfsg-0.1 | 4.93.2+dfsg-1 @ii ugH Ib > FU=0
Investigating (3) ubuntu-standard:amd64 < 1.417.4 -> 1.450.1 @ii umU Ib >
Broken ubuntu-standard:amd64 Depends on lsof:amd64 < 4.89+dfsg-0.1 | 4.93.2+dfsg-1 @ii ugR >
  Considering lsof:amd64 4 as a solution to ubuntu-standard:amd64 2
  MarkKeep ubuntu-standard:amd64 < 1.417.4 -> 1.450.1 @ii umU Ib > FU=0
    Reinst Failed because of lsof:amd64
  MarkKeep ubuntu-standard:amd64 < 1.417.4 -> 1.450.1 @ii umU Ib > FU=0
  Removing ubuntu-standard:amd64 rather than change lsof:amd64

...

DEBUG The package 'ubuntu-standard' is marked for removal but it's in the removal blacklist
ERROR Dist-upgrade failed: 'The package 'ubuntu-standard' is marked for removal but it is in the removal blacklist.'

EDIT: as requested, here is the output of apt-cache policy ubuntu-standard lsof lsof:i386

ubuntu-standard:
  Installed: 1.417.4
  Candidate: 1.417.4
  Version table:
 *** 1.417.4 500
        500 http://ca.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages
        100 /var/lib/dpkg/status
     1.417 500
        500 http://ca.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
lsof:
  Installed: 4.89+dfsg-0.1
  Candidate: 4.89+dfsg-0.1
  Version table:
 *** 4.89+dfsg-0.1 500
        500 http://ca.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
        100 /var/lib/dpkg/status
lsof:i386:
  Installed: (none)
  Candidate: 4.89+dfsg-0.1
  Version table:
     4.89+dfsg-0.1 500
        500 http://ca.archive.ubuntu.com/ubuntu bionic/main i386 Packages

I also tried upgrading to 19.10 as an intermediate step, but this same lsof problem is blocking it.

Best Answer

With some help from from N0rbert, I determined that the problem with my upgrade was old i386 packages alongside my amd64 installation. I tried several ways to remove this architecture as suggested by searching on the Internet. They all failed with dependency problems until I came upon this answer by PythoNic. His suggestion that aptitude is better than apt-get was correct, too. apt-get failed with dependency problems, too.

# install aptitude if you don't already have it
sudo apt-get install aptitude

# get rid of all the :i386 versions of packages
# apt-get failed on this, but aptitude suggested a way to do it
sudo aptitude purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`

# stick with amd64 architecture
dpkg --remove-architecture i386

The upgrade to 20.04 is running now.

Related Question