[atomic-update] My little project for transactional updates on read-write systems

erlangen:~ # atomic-update --debug  --no-verify run false
2024-04-12 12:20:04,189: INFO: Starting atomic transaction...
2024-04-12 12:20:04,240: DEBUG: Snapper root config name: root
2024-04-12 12:20:04,256: DEBUG: Active snapshot number: 3361, Default snapshot number: 3369
2024-04-12 12:20:04,256: WARNING: This snapshot is being created from a different base (3361) than the previous default snapshot (3369) and does not contain the changes from the latter.
2024-04-12 12:20:04,844: DEBUG: Latest atomic snapshot number: 3370
2024-04-12 12:20:04,844: INFO: Using snapshot 3361 as base for new snapshot 3370
2024-04-12 12:20:05,412: DEBUG: Btrfs root device: /dev/nvme1n1p2
2024-04-12 12:20:05,412: DEBUG: Setting up temp mounts...
2024-04-12 12:20:05,499: INFO: Running command >>> false <<< within chroot...
2024-04-12 12:20:05,502: ERROR: Command returned exit code 256
2024-04-12 12:20:05,502: INFO: Discarding snapshot 3370
2024-04-12 12:20:06,264: INFO: Cleaning up...
2024-04-12 12:20:06,264: DEBUG: Stopping ephemeral systemd-nspawn containers...
2024-04-12 12:20:06,267: DEBUG: Cleaning up temp mounts...
2024-04-12 12:20:06,272: DEBUG: Cleaning up temp dirs...
2024-04-12 12:20:06,274: DEBUG: Cleaning up unfinished snapshots...
erlangen:~ # 

Ratzfatz! :smiley:

1 Like

Updating the emoji font file /usr/share/fonts/truetype/NotoColorEmoji.ttf without AU caused Gnome shell to crash on opening the Emoji-Copy extension. :boom:

Updating the same file in an AU shell and applying the update live did not cause crash. Though the new emojis were not displayed by the extension (already running app) it was picked up by new instances of apps like the text editor. :white_check_mark:

Hey, great tool @pavinjoseph, I’ve been using it to replace transactional-update after they said it wasn’t supported on RW systems.

Even though I’m not sure what would break on a RW system that wouldn’t also break RO systems - /etc is writable on MicroOS too, after all, but I have to imagine they know way more than me so I’ll trust them on that.

Anyway, for anyone interested I’ve packaged it on OBS for my own convenience and easy install/uninstall.

Of course, I have no idea what I’m doing and just fumble with stuff till it works, but feel free to use it or copy it.

You can install with opi I imagine (never used it), or manually like so:

sudo zypper addrepo https://download.opensuse.org/repositories/home:icodrop:atomic/openSUSE_Tumbleweed/home:icodrop:atomic.repo
sudo zypper refresh
sudo zypper install atomic-update

Currently I’m only building it for x86_64, though I imagine it will work just fine on aarch64 too or any opensuse with snapper and zypper, really.

However, @pavinjoseph could you change the script from /usr/bin/env python3 to /usr/bin/python3 ? OBS/RPM gets very upset otherwise.

2 Likes

Thanks for the feedback :innocent:

Compared to TU, modifications to /var is not atomic.
I believe /etc being user config and packages using /usr/<lib|etc>/ for default config prevents system breaking issues even if /etc is messed up by the user.

I will test packaging for OBS and make the change!