Package Set Snapshots
Arch Linux (and Linux in general) used to have a reputation of breaking every
time packages were upgraded. Around 2010, Aura's author used to run Arch on a
Macbook, and such catastrophic breakage did occur every six months or so. But
fast-forward to the present day, and such problems are rare. Even so, the idea
of "whole system rollback" is spreading, and even since those early Arch-on-Mac
days, Aura has had the -B
Command for saving and restoring entire package
sets.
Saving a Package Set
> aura -B
aura :: Saved package state.
This saves a file like 2024.07(Jul).09.21.07.02.json
to
~/.cache/aura/snapshots/
. If we take a peek inside, we see:
{
"time": [2024, 196, 3, 54, 43, 311735304, 0, 0, 0],
"pinned": false,
"packages": {
"libmm-glib": "1.22.0-1",
"fcitx5-mozc": "2.26.4632.102.g4d2e3bd-2",
"graphviz": "11.0.0-1",
"mailcap": "2.1.54-1",
"libsm": "1.2.4-1",
"containerd": "1.7.18-1",
... etc ...
Simple enough - a list of all installed packages with their versions. We'll talk
about pinned
below.
These files are in JSON format in case other tools wish to read them.
Restoring a Package Set
Let's say I removed some packages a few days ago but am now having issues, and I want to rollback to the system state I had at the time. Let's see that happen:
> aura -Br
aura :: Select a snapshot to restore:
0) 2024-07-09 21-07-02
1) 2024-07-12 22-56-43
2) 2024-07-12 22-59-18
3) 2024-07-12 23-04-25
4) 2024-07-12 23-19-29 [pinned]
5) 2024-07-14 03-54-37
6) 2024-07-14 03-54-43
>>> 0
loading packages...
resolving dependencies...
looking for conflicting packages...
Packages (21) asar-3.2.8-1 cdparanoia-10.2-9 grimshot-1.9-1 gst-plugins-base-1.24.5-2
kirigami2-5.116.0-1 meson-1.4.1-1 mgba-qt-git-0.11.0.r8251.6853080b9-1
mgba-sdl-0.10.3-2 musl-1.2.5-1 neofetch-7.1.0-2 ninja-1.12.1-1 pkgstats-3.2.18-1
python-tqdm-4.66.4-1 qt5-graphicaleffects-5.15.14-1 qt5-multimedia-5.15.14+kde+r2-1
qt5-quickcontrols-5.15.14-1 qt5-quickcontrols2-5.15.14+kde+r5-1 typst-1:0.11.1-1
webui-2.5.0+beta.1+14+gb65608df-1 xf86-input-libinput-1.4.0-1 xorg-server-21.1.13-1
Total Installed Size: 86.50 MiB
:: Proceed with installation? [Y/n]
This reinstalls the old versions of those packages and removes anything currently installed that wasn't at the time of the snapshot.
Clearing out old Saved States
Especially if you have automatic state-saving with -Au
turned on, these
snapshot files can build up quickly. You might not even have most of the
packages necessary to roll back to those early states if you've recently used
-Cc
. Let's clear out the old, unusable ones:
> aura -Bc
aura :: Remove stale snapshots? [Y/n]
aura :: Done.
"Stale" refers to snapshots for which the corresponding tarball of some package
no longer exists on your system. You can confirm the overall state of your
snapshots with aura check
.
If you have edited a snapshot file to change the pinned
field to true, then
-Bc
will never remove it.