How to upgrade Fedora Linux

General Reminders

Fedora (Desktop) distro upgrade steps

Now use the desired (latest) Fedora release version:

sudo dnf system-upgrade download --releasever=40

Once finished, your system is ready for rebooting

sudo dnf system-upgrade reboot

You’re done!

Third-party kernel modules

If you use a third-party kernel module (e.g. Nvidia), it won’t be rebuilt during a system upgrade to a newer Fedora version! That means your kernel module might not work directly after the system upgrade. In the case of Nvidia, that will fall back to the default graphical driver, or just fail to boot to a graphical environment at all.

Theoretically, this command should help to rebuild all modules

sudo depmod -a

However, I faced a situation where a needed module was lost (not installed anymore). Install nvidia module(if needed):

sudo dnf install akmod-nvidia xorg-x11-drv-nvidia

Update system configuration files

sudo dnf install rpmconf
sudo rpmconf -a


Very much optionally, but you can run post-upgrade cleanup actions like:

sudo rpm --rebuilddb
#In case you have different sources of packages and yo would like to be in sync with your distro version. It my case downgrading of packages.
sudo dnf distro-sync --setopt=deltarpm=0
#Check for and remove not not used user installed (dependency-) packages
dnf list autoremove
sudo dnf autoremove

Sometimes packages will be retired by distro upgrade and are not removed by previous actions. It’s recommended to run this:

sudo dnf install remove-retired-packages
sudo dnf repoquery --unsatisfied

The list should be empty. But if problematic packages are shown, those can be removed as they are not likely to work.

P.S. Consider to remove not used packages

Feature Highlights log

Fedora (Desktop) 41 - Future

Target Date: 2024-10-22

Fedora (Desktop) 40 - Current

  • Release Date: 2024-04-23
  • GNOME 46 release with:
  • Enhanced Files App
  • Various performance improvements
  • Release time Kernel 6.8.7
  • OpenJDK 21 (prev 17)
  • Golang 1.22
  • Podman 5 (prev 4.7)

Fedora (Desktop) 39

  • Release Date: 2023-11-07
  • GNOME 45 release with:
    • new activities button in the corner of the top bar
    • new camera usage indicator (Works with Pipwire)
    • Efficient video playback: when possible, GNOME will now use hardware resources when playing videos.
    • New Camera App
    • New Image Viewer
    • The File app works much faster now
    • The Terminal app has got colors! ;)
  • gcc 13.2, binutils 2.40, glibc 2.38, gdb 13.2, rpm 4.19.
  • Python 3.11 -> 3.12
  • Rust 1.73
  • Golang 1.20 ->1.21
  • LLVM 16 -> 17
  • Linux kernel is not pined. 6.5.10-300.fc39.x86_64 after ony of installtions. where the last kernel on Fedora 38 was 6.5.10-200 in this particular case.

Fedora 38

  • Release Date: 2023-04-18
  • GNOME 44 release
    • Improved Settings menu
    • File manager enhancements
  • Unfiltered Flathub
  • Xfce 4.18
  • KDE Plasma 5.27
  • MATE 1.26
  • Linux kernel 6.2.11
  • Phase 1 towards Unified Kernel

Fedora 37

  • Release Date: 2022-11-15
  • GNOME 43 release
    • More apps switched from GTK 3 to GTK 4
    • A lot of small improvements in Nautilus (File browsing)
    • Better handling of multiple sound devices
  • Linux kernel 6.0

Fedora 36

  • Release Date: Tue 2022-05-10
  • GNOME 42 release.
    • A new global dark UI style
    • Finally! New Screenshot Experience! Just press Print Screen button end enjoy! Also video capturing is included in the new dialog.
    • Performance optimizations
  • Podman 4.0
  • Golang 1.18, PHP 8.1.
  • System JDK now java-17-openjdk.
  • Wayland sessions are by default enabled in GDM even with the NVIDIA proprietary driver.
  • Release time kernel: 5.17

Fedora 35

  • Release Date: 2021-11-02
  • GNOME 41 Release
    • New Power modes
    • Performance optimizations
  • DNS Over TLS Support should work by default.
  • Kernel 5.14
  • Small changes overall, no big leaps.

Fedora 34

  • Release Date: 2021-04-27
  • GNOME 40 Release. I like it very much so far. It’s very smooth on the laptop. Feels like a good elaborated UX/UI.
  • PulseAudio was replaced by PipeWire
  • Wayland by default for KDE Plasma (if used instead of GNOME)
  • BTRFS now features transparent data compression (Better performance on SSD)
  • enabling systemd-oomd by default (better handling of out-of-memory situations)

For older versions please check Upgrading Fedora Linux

Fedora distribution packages you might not need on a desktop

Fedora distribution brings a lot of preinstalled software. There is no harm in this in most cases and Fedora wants to shine with Apps and versatility to everyone! Good and right intentions! So you might not care about the following information and this is fine!

I can only give you my reasons to look into that:

  1. Better overview and control of what is going on in my system.
  2. Less potential conflicts in the package dependencies, sometimes I’ve seen on the distro upgrade
  3. Less (theoretical) security exposure. Less software installed and running reduces attack vectors
  4. Less load on my machine. Believe it or not, I feel like removing some of the software listed below brings me a second on the machine start ;)

Packages that I usually remove

  • subversion and mercurial - those often get installed as a weak dependency to some dev tools (eg. Golang package). I tend to not install weak dependencies or remove subversion and mercurial as I have not used them for 10 years or so.
  • glusterfs - powerful filesystem that you can use to organize complex distributed storage scenarios. Also, seems to replace NTFs shares scenarios (? lack of experience here). However I’ve seldom needed it on my work-desktop/laptop so far, so I regularly get rid of it. But Glusterfs is a hard dependency of the gnome-boxes and with that also on the virtualization libs (see below). If you need *gnome-boxes’ you might not be able to remove them.
  • gnome-boxes, libvirt, qemu - Can be removed if you’re not using virtual machines for dev work or so. I’ve used qemu before the Docker era, but not using it regularly now.
  • sssd, sssd-client - makes no sense in a private setup where you only have local users on the machine.
  • open-vm-tools - VM Ware virtualization tools.
  • libreoffice - Personally I’ve never got warm with Libre Office. If you fill the same, depending on your Fedora version one of the following commands should do the job: sudo dnf group remove libreoffice or sudo dnf remove libreoffice-core. Keep in mind this will also remove the preinstalled OpenJDK.
  • java-17-openjdk-headless - (version might differ) I’ve used to work a lot with java but I don’t like Fedora outdated versions. Whenever possible I switch to SDKman which allows me to have full control over java distros independently of Fedora maintainer’s velocity and preferences.
  • ModemManager - you can get rid of another background process if your hardware doesn’t have any modems. Beware! Mobile network-enabled laptops have one! Also, it seems to manage bluetooth connections as well. So I don’t recommend to remove it on modern laptops.
  • mcelog - I’m not very sure about mcelog. But as far I understand it, you don’t have much of the HW monitoring on consumer hardware and you probably can’t recover form failures anyway, so why run another background process?
  • NetworkManager-wifi - If there is no WiFi device. Also, wpa_supplicant can be removed. 1- running service

Feel free to add packages from your list.

Packages that I regularly install