Bootc (bootable containers) enables building bootable host systems with Containerfiles or any other container build tooling. Bootc presents a UX challenge: because bootc systems are immutable, software packages must be installed at build-time, not runtime. To install an additional package, an end user needs to edit their system's Containerfile, rebuild the image, bootc switch to the new image, and reboot. This process is more complicated than the traditional dnf install UX, doubly so if the user is directly booting a distribution base image (think Bazzite) and they don't even have a Containerfile to edit!
What's needed for dnf install (or something like it) to Just Work on bootc systems? Is it possible to reconcile imperative package management and declarative container workflows? And how can we make it fast and reproducible? In this talk, we'll discuss recent work on dnf rebuild, a new DNF5 plugin that will bring satisfying answers!