I have recently upgraded Fedora 38 to 39 and after not finding new “Text editor” and “Image editor” installed started investigation. Looks like that new packages were not installed during upgrade. While it’s not a big deal with software applications, as I can easily remove old ones and install new ones. More concerning situation is with system packages, which usually does all the important stuff in the background. Currently I’ve made a diff of my system installed packages and one from fresh Fedora 39 install, and results are a bit concerning. Haven’t gone through whole list yet, so let’s start with some examples from the top:
Fresh Fedora 39 install has ModemManager.x86_64 , NetworkManager-bluetooth.x86_64 and NetworkManager-wwan.x86_64 installed, while my upgraded system doesn’t have those packages.
My upgraded system, on the other hand, has some NetworkManager related packages which are not installed in Fedora 39 anymore: NetworkManager-initscripts-ifcfg-rh.x86_64 , NetworkManager-initscripts-updown.noarch , NetworkManager-libnm.i686
While this is just a tip of the iceberg, and probably interesting topic in itself, could someone advise me how to proceed? Should I just do a fresh re-install and forget about this until next upgrade cycle? Check out Fedora Silverblue? Or manually go through list and try to make packages lists as similar as possible (excluding the dependencies required by my extra installed software)?
Linux packages often get renamed or replaced with a new and improved library that provides similar features. My use case often involves installing oddball libraries that have high turnover rates – in one case the library disappeared and the author’s email bounced. I contacted the author’s PhD adviser, who replied that the last he heard, the package author was driving a taxi. My strategy is to have multiple backups, and keep notes on the configuration changes I make so I can install from scratch without much trouble. When I encounter too many older packages that aren’t in current Fedora, I wipe wipe the disk and do a fresh install of a new version.
In some cases, older libraries are no longer available as linux packages, but packages that used them have just added portions of the old library source to their own source package, but not in the form of a library I can use in my own code.
Okay, NP.
So what I do before any upgrade, irrespective of Gnome Software telling me a new version is available. I always do sudo dnf dsync (now sudo dnf5 dsync as I am using DNF5). This will make sure your installed system is up to the latest WRT Fedora Repos. Then, after that completes, I do the system-upgrade to the next release. As a note, there has been some reorganizing of some packages recently, and I think a good portion of it relates to making minimal installs, well more minimal.
As another side note, Silverblue is very good to run, I did it from F27 to F36. I am going back to it once I am done with the current setup where I needed Workstation. It is a paradigm shift as a user to get used to the atomic way of doing things.
The technical term for “package drift” is “hysteresis” – where the the current state of your system depends on its history, whether it was freshly installed or upgraded from a previous release. It could very well happen because the state of a typical Linux system – the bits on disk – is not completely described by the set of RPM packages installed. It could depend on the order in they are installed, or whether a package is replacing an older version.
If you don’t need those packages, before the upgrade, then you will also not need them after. Also, if you are actually using some program from NetworkManager-initscripts-updown, then it would not be a good idea if the upgrade would remove the package.
You may be able to install the missing programs by running
dnf group upgrade workstation-product-environment
if you are actually running the GNOME version. Run
dnf group list installed --ids
to find out which environment group you actually have installed.