Replies: 3 comments 1 reply
-
You need snapshots to undo scriptlet actions, but indeed it should be possible to at least continue an interrupted transaction. It'd only require a thorough rewrite of how rpm processes its "transactions" 😅 |
Beta Was this translation helpful? Give feedback.
-
Is “expect people to use LVM or BTRFS” the answer? If the former, is there a way to get the transaction to abort if it runs out of disk space, rather than invalidating the snapshot? Thin snapshots don’t handle this very well either. |
Beta Was this translation helpful? Give feedback.
-
One option for Linux would be to apply the changes to an overlayfs, then mount the overlayfs over the root filesystem. |
Beta Was this translation helpful? Give feedback.
-
Time to time we get reports related to the broken system. There is a wide range of reasons why it happens - power outage, packaging, issue in DNF or RPM, restarting critical processes and killing rpm (scriptlets, logout, ...), broken scriptlets and so on. The problem is that there is not an easy way how to restore the system into the original state.
People are supposed to do snapshots before (each?) transaction but it cost something or run system in console and not in desktop terminal but it is not the default behavior of the deployed system or something that is recommended by guidelines. May be it is a time to move the current status to provide a support of automation that will help to resolve such a problem automatically. Specially desktop users know such a functionality from Windows.
From DNF side we can detect unfinished transaction and propose to redo of such a transaction. We can remove all artifacts, finish unfinished steps and redo all finished steps to ensure all scriptlets were correctly performed, but it will not help with any transaction performed outside of DNF or performed directly by RPM. If recovery support will be somehow supported directly in RPM it would be better for more player.
May by it would be good to ask a question what is required to allow transactional behavior for operation with RPMs (keep changes only when all requested operation succeed).
Beta Was this translation helpful? Give feedback.
All reactions