Recs.
Updated
GNU Guix is a functional package manager for the GNU system. Besides the usual package management features, it also supports transactional upgrades and roll-backs, per-user profiles, and much more. It is similar in design to the Nix package manager.
SpecsUpdate
Pros
Pro Can always roll back to a safe state
Guix creates new profile generations for each operation. If anything goes wrong, a simple --roll-back gets you immediately back to the previous, working, generation. Because it is a purely functional package management system, generations don't affect each other, so you're back to the exact same state as before : still working.
Cons
Con Cannot handle filetypes that have different semantics across different versions
While the functional approach that Guix takes is great for sandboxing binary artifacts of packages, it seriously lacks any power in handling configuration files or user data. It's difficult to upgrade and downgrade files where semantics and syntax can change between versions.