Fedora Workstation 43→44 upgrade will not complete without removing protected packages

Summary

I tried using the DNF System Plugin to upgrade Fedora Workstation on my desktop computer and it stalled, then refused to continue without removing protected packages.

System Specifications

CPU: Ryzen 7 5800X (x86_64)

Motherboard: ASRock B550 Phantom Gaming ITX/ax

Kernel version: 7.0.9-105.fc43.x86_64

Issue Details

About six hours ago I began attempting to upgrade from Fedora Workstation 43 to 44 Using the DNF System Plugin.

I completed the following steps as described in the documentation linked above:

  1. ran sudo dnf system-upgrade download --releasever=44 , then rebooted
  2. ran sudo dnf system-upgrade download --releasever=44
  3. Looked at what packages would be replaced or removed. At this stage nothing seemed problematic to me, but I don’t have enough experience to be sure of what to look for. I decided to trust the upgrade process.
  4. Accepted the GPG key’s fingerprint

When I attempted the final step, using sudo dnf offline reboot, I observed the updated stall at 42% for about five hours. I then used the keyboard shortcut CTRL+ALT+DEL, which appeared to restart the system and display a black screen. As of this writing, the system remains on.

Without being able to see anything on the system I want to upgrade, I have used SSH to attempt to complete the upgrade over my local network. After logging in successfully, I tried the following commands and got the following outputs.

sudo dnf distro-sync --refresh --allowerasing --releasever=44

Updating and loading repositories:
 Fedora 44 - x86_64 - Updates      100% |  28.5 KiB |  00m04s
 RPM Fusion for Fedora 44 - Nonfre 100% |   5.3 KiB |  00m03s
 RPM Fusion for Fedora 44 - Nonfre 100% |   5.5 KiB |  00m03s

[some more repostories load here]

Repositories loaded.
Failed to resolve the transaction:
Problem: The operation would result in removing the following protected packages: NetworkManager, dnf5, gnome-shell, grub2-efi-ia32, grub2-efi-x64, grub2-pc, grub2-tools-minimal, selinux-policy-targeted, setup, shim-ia32, shim-x64, sudo, systemd, systemd-udev
You can try to add to command line:
  --skip-broken to skip uninstallable packages

sudo dnf system-upgrade reboot

System is not ready for offline transaction.

sudo dnf system-upgrade download --releasever=44

Updating and loading repositories:
Repositories loaded.
Failed to resolve the transaction:
Package "mactel-boot-0.9-36.fc43.x86_64" is already installed.
Package "showtime-50.0-1.fc44.noarch" is already installed.
Package "glycin-thumbnailer-2.0.8-1.fc43.x86_64" is already installed.
Package "glycin-thumbnailer-2.1.1-1.fc44.x86_64" is already installed.

[15 or so further packages are already installed]

Problem: The operation would result in removing the following protected packages: NetworkManager, dnf5, gnome-shell, grub2-efi-ia32, grub2-efi-x64, grub2-pc, grub2-tools-minimal, selinux-policy-targeted, setup, shim-ia32, shim-x64, sudo, systemd, systemd-udev

sudo dnf distro-sync --refresh --allowerasing --releasever=44 --skip-broken

[See the first dnf distro-sync output above]

I definitely don’t want DNF to brick my system by the init system or anything else important. Using --skip-broken with the above distro-sync command returned the same output seen without enabling that option.

Failed partial upgrade from 43 to 44 leaves system confused - #2 by vgaetera

The solution you provided including the --setopt=protected_packages= seems to have mostly worked, though there were some errors and the command completed with
“Transaction failed: Rpm transaction failed.”

[ 895/3903] Removing abrt-desktop- 100% | 100.0   B |  00m00s
>>> Running %preun scriptlet: nss-mdns-0:0.15.1-27.fc43.i686
>>> Finished %preun scriptlet: nss-mdns-0:0.15.1-27.fc43.i686
>>> Scriptlet output:
>>> [error] [/etc/authselect/switchable-auth] does not exist!
>>> [error] [/etc/pam.d/switchable-auth] does not exist!
>>> [error] [/etc/pam.d/switchable-auth] was not created by authselect!
>>> [error] Changes to the authselect configuration were detected. These changes will be overwritten. Please call 'authselect opt-out' in order to keep them.

[ 475/3903] Removing nfs-utils-1:2 100% | 155.0   B |  00m00s
>>> [RPM] file /usr/libexec/nfs-utils: remove failed: No such file or directory
>>> Running %triggerpostun scriptlet: filesystem-0:3.18-52.fc44.x86_64Removing	/usr/sbin/blkmapd
Removing	/usr/sbin/mountstats
[ 475/3903] Removing nfs-utils-1:2 100% | 155.0   B |  00m00s
>>> [RPM] file /usr/libexec/nfs-utils: remove failed: No such file or directory

[3781/3903] Removing ca-certificat 100% | 781.0   B |  00m00s
>>> [RPM] file /etc/pki/tls/certs/ca-certificates.crt: remove failed: No such file or directory
>>> [RPM] file /etc/pki/tls/certs/ca-bundle.trust.crt: remove failed: No such file or directory
>>> [RPM] file /etc/pki/tls/certs/ca-bundle.crt: remove failed: No such file or directory
>>> [RPM] file /etc/pki/tls/cert.pem: remove failed: No such file or directory

[3898/3903] Removing filesystem-0: 100% |  16.9 KiB |  00m00s
>>> [RPM] directory //: remove failed: Device or resource busy
[3899/3903] Removing setup-0:2.15. 100% |  45.0   B |  00m00s
[3900/3903] Removing fedora-releas 100% | 100.0   B |  00m00s
[3901/3903] Removing ncurses-base- 100% | 179.0   B |  00m00s
[3902/3903] Removing libgcc-0:15.2 100% |  11.0   B |  00m00s
>>> Running %triggerpostun scriptlet: filesystem-0:3.18-52.fc[3902/3903] Removing libgcc-0:15.2 100% |  11.0   B |  00m20s
Transaction failed: Rpm transaction failed.

I may mark your answer as a solution later, but for now I’ll see how well the system seems to be working. I am at least able to log in and see that OS version is now “Fedora Linux 44 (Workstation Edition)” in Settings > System.

Once you have verified that your system is fine, it would be nice to identify the
root cause of this, by looking at the journal of the boot where the
sudo dnf offline reboot was done.

It may be due to the msttcore-fonts-installer RPM. See:

I usually install updates (systems are spread across multiple buildings) using:

sudo dnf5 update --offline --refresh
sudo dnf5 offline reboot

Sometimes a system does’t come back on the network, even if left alone overnight. When I visit it, it is hung in mid-update, but hitting return causes it to finish updating and reboot. When time permits I’ll look for a pattern in the journal.