Score:0

How do I upgrade to the next LTS in the presence of "kept" dependencies?

bd flag

So I want to upgrade from 20.04 to 22.04 LTS.

Ubuntu does this very annoying thing where it forces you to install all your upgrades before it allows you to upgrade your distribution. I've already upgraded once, but I still get

$ sudo do-release-upgrade 
Checking for a new Ubuntu release
Please install all available updates for your release before upgrading.

... except, it doesn't let me.

apt seems to know what I need to upgrade:

$ sudo apt list --upgradable 
Listing... Done
grub-efi-amd64-bin/oldstable 2.06-3~deb10u1 amd64 [upgradable from: 2.04-1ubuntu47.4]
grub-efi-amd64-signed/focal-updates,focal-updates 1.187.3~20.04.1+2.06-2ubuntu14.1 amd64 [upgradable from: 1.173.2~20.04.1+2.04-1ubuntu47.4]
libfile-fcntllock-perl/oldstable 0.22-3+b5 amd64 [upgradable from: 0.22-3build4]
libnet-libidn-perl/oldstable 0.12.ds-3+b1 amd64 [upgradable from: 0.12.ds-3build2]
python3-netifaces/oldstable 0.10.4-1+b1 amd64 [upgradable from: 0.10.4-1ubuntu4]
shim-signed/focal-updates,focal-updates 1.40.9+15.7-0ubuntu1 amd64 [upgradable from: 1.40.7+15.4-0ubuntu9]

except, it won't actually upgrade:

sudo apt upgrade 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
Get more security updates through Ubuntu Pro with 'esm-apps' enabled:
  libgraphicsmagick-q16-3 libavformat58 libavfilter7 ffmpeg liburiparser1
  node-hosted-git-info libmaven3-core-java libswresample3 ant libzmq5
  python2.7-minimal libhdf5-103 libcgraph6 libpython2.7 python2.7
  libswresample-dev libpostproc55 liblab-gamut1 libavutil-dev libavcodec-dev
  opensc-pkcs11 node-tar maven libeditorconfig0 opensc libcdt5 libavutil56
  libpathplan4 libavdevice58 libswscale5 libgvpr2 libopenexr24 libsdl2-2.0-0
  libmysofa1 libpython2.7-minimal libavcodec-extra58 libgvc6
  libpython2.7-stdlib graphviz ant-optional libavresample4
Learn more about Ubuntu Pro at https://ubuntu.com/pro
The following packages have been kept back:
  grub-efi-amd64-bin shim-signed
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.

ok ... I have no idea what this grub-efi-amd64-bin is or why it's been "kept back".

$ sudo apt-mark showhold
$ dpkg --get-selections | grep hold

both don't list anything.

But surely I can upgrade it manually?

$ sudo apt install grub-efi-amd64-bin
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Recommended packages:
  grub-efi-amd64-signed
The following packages will be REMOVED:
  grub-efi-amd64-signed shim-signed
The following packages will be upgraded:
  grub-efi-amd64-bin
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  shim-signed grub-efi-amd64-signed (due to shim-signed)
1 upgraded, 0 newly installed, 2 to remove and 3 not upgraded.
Need to get 712 kB of archives.
After this operation, 7443 kB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
 ?]

Nope, not doing that. ^C

But maybe it's that -signed thing tha wil also upgrade shim-signed rather than remove it?

$ sudo apt --only-upgrade install grub-efi-amd64-signed
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 grub-efi-amd64-signed : Depends: grub-efi-amd64-bin (= 2.06-2ubuntu14.1)
E: Unable to correct problems, you have held broken packages.

A small variation of this issue has been asked before:

grub-efi-amd64-signed dependency issue in Ubuntu 22.04LTS

ruff's answer there is to install grub-efi-amd64-signed ... we just tried that, it doesn't work.

There's another answer by Chen, which suggests

sudo rm /var/lib/dpkg/info/grub*
sudo dpkg --configure -a

BUT I'm not going to do that, for now, as I have absolutely no idea, what that does and in the light of https://ubuntuforums.org/showthread.php?t=1041188 .

Now Unable to correct problems, you have held broken packages suggests

$ sudo aptitude install grub-efi-amd64-signed
The following packages will be REMOVED:  
  efibootmgr{u} grub-efi-amd64-bin{u} 
The following packages will be upgraded:
  grub-efi-amd64-signed{b} 
1 packages upgraded, 0 newly installed, 2 to remove and 4 not upgraded.
Need to get 1343 kB of archives. After unpacking 5352 kB will be freed.
The following packages have unmet dependencies:
 grub-efi-amd64-signed : Depends: grub-efi-amd64-bin (= 2.06-2ubuntu14.1) but it is not going to be installed
The following actions will resolve these dependencies:

     Install the following packages:                                                                  
1)     efibootmgr:i386 [15-1 (oldstable)]                                                             
2)     libefiboot1:i386 [37-2+deb10u1 (oldstable)]                                                    
3)     libefivar1:i386 [37-2+deb10u1 (oldstable)]                                                     
4)     libpopt0:i386 [1.16-14 (focal)]                                                                

     Upgrade the following packages:                                                                  
5)     grub-efi-amd64-bin [2.04-1ubuntu47.4 (focal-security, now) -> 2.06-2ubuntu14.1 (focal-updates)]



Accept this solution? [Y/n/q/?] n
The following actions will resolve these dependencies:

     Upgrade the following packages:                                                                  
1)     grub-efi-amd64-bin [2.04-1ubuntu47.4 (focal-security, now) -> 2.06-2ubuntu14.1 (focal-updates)]

     Leave the following dependencies unresolved:                                                     
2)     grub-efi-amd64-bin recommends efibootmgr                                                       



Accept this solution? [Y/n/q/?] n
The following actions will resolve these dependencies:

     Upgrade the following packages:                                                                  
1)     grub-efi-amd64-bin [2.04-1ubuntu47.4 (focal-security, now) -> 2.06-2ubuntu14.1 (focal-updates)]

     Downgrade the following packages:                                                                
2)     efibootmgr [17-1 (focal, now) -> 15-1 (oldstable)]                                             



Accept this solution? [Y/n/q/?] n
The following actions will resolve these dependencies:

     Keep the following packages at their current version:                                            
1)     efibootmgr [17-1 (focal, now)]                                                                 

     Upgrade the following packages:                                                                  
2)     grub-efi-amd64-bin [2.04-1ubuntu47.4 (focal-security, now) -> 2.06-2ubuntu14.1 (focal-updates)]

And I do admire aptitude's tenacity because there are increasingly wild suggestions after that.

My problem is, I have no idea how to choose a good option. This last one sounds more appealing to me, but what do I know?

Nor do I have any idea what any of these packages' being removed or updated does. The disk is encrypted, and I'd very much prefer not to brick my bloody device trying to upgrade it.

How DO I get to upgrade the bloody OS?

guiverc avatar
cn flag
Have you applied all upgrades? I see mention of `apt upgrade` which will perform some, but by design does not remove packages allowing you to decide when that is done and perform the upgrades after any checks you want to perform (then you run `apt full-upgrade`). Read `man apt` & search for full-upgrade where you'll note "*ull-upgrade performs the function of upgrade but will remove currently installed packages if this is needed to upgrade the system as a whole.*".. ie. apply all upgrades. If you have marked packages to be held, those holds must be removed (or packages removed) first.
Organic Marble avatar
us flag
What repo is "oldstable"? That sounds like a Debian source. If it is, then you have a Frankensystem.
guiverc avatar
cn flag
Please refer https://askubuntu.com/help/on-topic, Ubuntu and *official* flavors of Ubuntu (https://ubuntu.com/download/flavours) are on-topic on this site. The on-topic link provides alternate SE sites for non-Ubuntu OSes. *Numerous of your packages in paste are shown to be Debian, which isn't Ubuntu*
Score:2
cn flag

The two kept-back packages are currently undergoing phased upgrades. See https://ubuntu-archive-team.ubuntu.com/phased-updates.html:

You can also verify this by running apt policy <package_name> on each of the kept-back packages.

You have two options:

  1. You can simply wait until phasing is done, usually in a few days. This is a good idea, because your Frankensystem needs to be returned to an Ubuntu system or your release-upgrade will probably fail anyway.

  2. Alternately, you can force the upgrade using sudo apt -o APT::Get::Always-Include-Phased-Updates=true upgrade. This only skips phasing and installs the packages; it doesn't fix your system's other problems.

I sit in a Tesla and translated this thread with Ai:

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.