libdnf
libdnf copied to clipboard
Missing integration with snapper for auto-snapshotting
Today, if someone is using the Btrfs filesystem and has Snapper set up along with the DNF plugin for snapper, the filesystem will automatically be snapshotted on each action that modifies the operating system.
However, this only works with DNF. Anything that uses the underlying libdnf library directly doesn't get this benefit, which leads to the unexpected surprise that there's missing snapshots of the system when PackageKit does software updates (GNOME Software, Plasma Discover, Apper, plasma-pk-updates, pkcon, etc.).
Obviously, this doesn't apply to all use-cases of libdnf (@cgwalters' RPM-OSTree doesn't particularly need this), but we need a way to dynamically offer this capability at runtime.
One way to do this would be with a plugin system, as #202 proposed. Perhaps that should be revived? Alternatively, Snapper support could be a compile time option that builds out a private library (like how GNOME Software and PackageKit do it) and that can be subpackaged out so that it's not always available.
Whatever way we choose to do this, we do need to solve this problem. It's quite annoying and inconsistent.
Reference: Mageia bug 21319
@Conan-Kudo I hope that DNF5 will solve this in the future. Until then, I see one solution - a plugin for the libdnf context - via the plugin API I created some time ago.
But, what is this https://code.opensuse.org/microos/libdnf-plugin-txnupd/blob/master/f/src/txnupd.cpp? Are you already writing such a plugin?
The txnupd plugin is a different thing, and doesn't solve the use-case being asked here.
Today I created the libdnf "snapper" plugin. https://github.com/rpm-software-management/libdnf/pull/1120 However, it is only a prototype. I didn't test it. I don't have snapper support installed on my computer. I just looked at the "snapper" source code https://github.com/openSUSE/snapper.
@Conan-Kudo I hope that DNF5 will solve this in the future.
@jrohel do you mean this issue is already solved in DNF 5?