You typically do that in a container and use the container.
If you really want it on your system root you can layer it in as a commit on top of the distro with rpm-ostree. System upgrades should change the commits below yours but keep your modifications on top.
For something like that where you likely want it everywhere, I would probably layer it on top of the base system (with rpm-ostree install zsh). That uses the same Fedora package management as dnf but applies it as a changeset on the immutable system instead of modifying things directly.
Something more specific to a single category of task (I’m thinking like Rust or Python tooling) you might want to leave in a container.
You typically do that in a container and use the container.
If you really want it on your system root you can layer it in as a commit on top of the distro with rpm-ostree. System upgrades should change the commits below yours but keep your modifications on top.
So, if I wanted to install zsh I would need to use a container for it?
For something like that where you likely want it everywhere, I would probably layer it on top of the base system (with
rpm-ostree install zsh
). That uses the same Fedora package management as dnf but applies it as a changeset on the immutable system instead of modifying things directly.Something more specific to a single category of task (I’m thinking like Rust or Python tooling) you might want to leave in a container.