-
Notifications
You must be signed in to change notification settings - Fork 1
Description
In ostree distro, which includes MicroOS, the 3-way merge of /etc during upgrade, downgrade, install, or uninstall happens at ostree deployment switch rather than during the RPM install/uninstall actions like in a non-ostree distro. The RPMs now operate on /usr/etc and the ostree deployment manager handles doing the 3-way merge between the old /usr/etc, the new /usr/etc, and the new /etc.
Effectively, /usr/etc is a copy of what the RPMs want to have in /etc. In non-ostree distros, each RPM install and uninstall has to figure out whether the files in /etc that the RPM wants to modify are unchanged from a prior RPM version and therefore can be modified to match the new files (upgrade/downgrade, or add/remove for fresh install/uninstall), or modified by the user and therefore must be left alone. With ostree, RPM install/uninstall instead operates on files in a fresh copy of /usr/etc associated with the new ostree commit, and then the ostree itself does that 3-way compare between old, new, and current when first deploying the new ostree commit. It resolves this in a new copy of /etc that remains associated with the new ostree commit deployment (so if you rollback, you get the old /etc from before the new ostree commit started using it).
Functionally, that means you shouldn't be doing anything to /usr/etc (nor are you even be able to without being in a transactional-update shell since it's read only like the rest of the rootfs).
The valid options are to either create the blank /usr/etc/service file while in the transactional-update shell that you're also doing the guix setup and install in, or to manually create the /etc/services file after you reboot at the end of the guix install.