DNF System Upgrades
- Name: Will Woods (fedup author)
- Email: firstname.lastname@example.org
- Name: Zbigniew Jędrzejewski-Szmek (systemd developer)
- Email: email@example.com
- Name: Radek Holy (DNF developer)
- Email: firstname.lastname@example.org
- Release notes owner:
- Targeted release: Fedora 23
- Last updated: 2015-08-18
- Tracker bug: #1250939
While fedup worked well in many circumstances, there were a lot of problems resulting from using
upgrade.img. This has caused nasty, hard-to-debug blocker bugs for every release since it was introduced.
It turns out that
upgrade.img was relying on some undocumented, unsupported systemd behavior.
After F22 this was discussed
on the systemd-devel mailing list, and the conclusion
was that fedup's boot behavior is broken by design, and systemd can't (and won't) continue to support it.
systemd already supports a simpler, more reliable method for performing Offline System Updates; the systemd team suggests using that to perform system upgrades.
Most of the remaining problems with fedup were caused by the fact that it was separate from the system packaging tools, and therefore had slight (and confusing) differences from the normal package update mechanisms.
Therefore, we propose that system upgrades should be handled by the system packaging tools, using systemd's Offline System Updates facility.
dnf-plugin-fedup is a proof-of-concept implementation; we propose to integrate support for this into DNF itself.
Benefit to Fedora
The upgrade process will be much more reliable, and well-integrated with the system packaging tools.
Better integration with system packaging tools:
- Upgrades support
- Systems do not need to (re-)download update metadata after the upgrade
We no longer need to build
upgrade.img, which saves space in boot/install media.
- Proposal owners:
- Make DNF able to send progress output to Plymouth (basically done; see dnf #281 and #313)
- Modify Offline System Updates spec as needed to support major system upgrades (in progress, see this systemd-devel thread)
- Package dnf-plugin-system-upgrade
- Write man pages and other documentation
- Obsolete and retire fedup
- Other developers:
- Fix any conflicts with
- See RHBZ #1252500
- In the unlikely event that some kind of offline system migration is necessary (like UsrMove), it should be handled the same way as UsrMove - i.e. by a dracut script that runs the first time the new system boots after the upgrade.
- Fix any conflicts with
- Release engineering:
upgrade.imgfrom image builds
- Trademark approval: N/A (not needed for this Change)
Existing systems can still use fedup to upgrade to F22, F21, and older.
If we backport the DNF changes (or provide them as plugins) we can even provide this as an alternate upgrade path from F21 (or earlier).
How To Test
NOTE: this will change as things evolve
dnf copr enable wwoods/dnf-plugin-system-upgrade
dnf install dnf-plugin-system-upgrade
systemctl mask packagekit-offline-update.service fwupd-offline-update.service
dnf system-upgrade download --releasever=23
- This should download lots of packages; it will probably also ask about importing the new GPG key.
dnf system-upgrade reboot
- Observe upgrade progress on plymouth boot splash
- System reboots at end of upgrade
systemctl unmask packagekit-offline-update.service fwupd-offline-update.service
- That's about it
(steps 2. and 7. are a temporary work-around, should be gone soon)
System upgrades will look a lot more like offline updates (because they're just big offline updates).
The commands to upgrade the system will probably be more like:
sudo dnf system-upgrade download --releasever=23 sudo dnf system-upgrade reboot
- Contingency mechanism: There are a few options; none of them are good.
- Find someone to maintain fedup and keep using it for one more release, even though upstream systemd says not to
- Use a different upgrade method for one release
- Just don't support upgrades for one release
- Contingency deadline: Beta, at latest - any of the above contingency plans would take a lot of work.
- Blocks release? Yes. Upgrades are a release criteria.
- Blocks product? Not product-specific AFAIK.
fedora devel announcement:
Offline System Updates spec:
dnf system-upgrade plugin
DNF upstream (links to API docs etc.)
fedup utility has been retired; system upgrades are now handled by