Another recent problem is that my system uses GNOME Software and PackageKit to manage packages and updates. However, for correctness, it wants to only update packages during a restart. (https://fedoraproject.org/wiki/Features/OfflineSystemUpdates) Of course, I almost never restart my computer, and end up just using dnf ("Dandified Yum" (yum: Yellowdog Updater, Modified (replaced yup: Yellowdog Updater, which was the update manager for Yellow Dog Linux, which focussed on PowerPCs, GPUs, and high performance computing). So, GNOME Software uses PackageKit to pre-download updates, which wait to be applied during the next update. However, I end up installing them separately before that using dnf. Then, GNOME Software and PackageKit by default just leave them there in the cache, FOREVER. Over 4 months, that consumed 5GB of space. If I had to pay for all that data, that would be a huge redundant waste. So much effort with delta RPMs to conserve data used in updating, only to waste it like that, by having double-downloads? That's a bug: https://bugs.freedesktop.org/show_bug.cgi?id=80053
Replacing libraries and files while the OS is running can cause
problems ranging from application crashes to inconsistent system states
where processes are using different versions of a library at the same
time. By installing system updates 'outside' the normal system
operation, we avoid these problems.
- https://fedoraproject.org/wiki/Features/OfflineSystemUpdates
One of the commentators on the FreeDesktop bug report uses a cron job for the command:
pkcon refresh force -c -1
I haven't done much with cron for a while, so I used Arch Linux's great documentation on cron and the man pages, before deciding that I'd actually give the Future (er, present) a try with systemd timers. A combination of the documentation, Arch Linux's page on it, and this random blog post by Jason Graham, I ended up adding a pretty minimal .service and .timer pair of files.
Yay, problem worked around.
Proper solution?
This probably would have entailed trying to write and submit a patch that would have done one of the following:
- cause packagekit to discard superseded packages in its cache, or
- cause GNOME Software to let you choose to do risky, online updates, or
- cause dnf aware of packagekit's cache so we don't have to re-download and waste data (seems kind of dumb), or
- cause multiple solutions to share the same package cache directory, or
- use something like ostree to make 'online' updates safe
Who knows.