Upgrading via the Software application can have issues. If it has any issues at all it just fails leaving your system partially upgraded. This method is much safer and give you the ability to fix any issues as you find them. Also don't try to jump more than 2 versions at a time (ie. 35 to 37).
Before you even get started I like to backup my grub.conf file and remove all kernels accept the current one just to get a cleaner start:
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup rpm -q kernel
After listing the kernels remove all but the current along with it's supporting packages with the same version. Here is an example:
root@djkev:~# rpm -q kernel kernel-6.19.8-100.fc42.x86_64 kernel-6.19.14-100.fc42.x86_64 kernel-6.19.14-108.fc42.x86_64 root@djkev:~# uname -a Linux djkev.lan 6.19.14-108.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 21 18:06:59 UTC 2026 x86_64 GNU/Linux root@djkev:~# dnf remove *6.19.8-100* *6.19.14-100*
Getting Started
Update the current system first. This also receives signing keys that are needed:
dnf upgrade --refresh
Install the plugin and download packages for the update. Specify the version you want to update to. This is where you will see any conflicts. You can usually resolve them by just uninstalling any RPMs it has issues with as long as you don't need them:
dnf install dnf-plugin-system-upgrade dnf system-upgrade download --releasever=44
Once all the files have been download go ahead and reboot into the upgrade process. Note: older versions of DNS4 and older will use "dnf system-upgrade reboot". Below is for DNF5 and higher:
dnf5 offline reboot
Clean Up
After the upgrade is complete you can do the following things to cleanup the upgrade. First install and run rpmconf to compare any *.rpmnew files:
dnf install rpmconf rpmconf -a
Cleanup retired packages:
dnf install remove-retired-packages remove-retired-packages
Clean up packages with broken dependencies:
dnf repoquery --unsatisfied
Check for duplicate packages:
dnf repoquery --duplicates
List packages not part of any repository. You can choose to uninstall them as needed:
dnf list extras
Show any broken symbolic links:
dnf install symlinks symlinks -r /usr | grep dangling
Once you have verified these are ok to delete the following will remove them all:
symlinks -r -d /usr
Only if you are see errors when installing or uninstalling packages you can rebuild the rpm database:
rpm --rebuilddb
The following distro-sync should not show anything if everything worked. If the upgrade did file the following can fix/resume the upgrade process:
dnf distro-sync
NOTE: You may also have to update any Gnome extensions after you update Fedora.
- Log in to post comments