The pacman cache grows without bound across updates, and nothing in the update flow ever reclaimed it. On a machine that has been updating for a while it reaches several gigabytes of superseded versions that nothing will ever install again. Prune it with paccache -rk2 as the first step of an update. Both halves of that placement are load-bearing. Keeping two versions rather than one preserves the rollback path. The cache is Arch's only offline downgrade: when an update breaks a single package, reinstalling its predecessor from here is the surgical fix, where a snapshot rollback would revert every other package too. Pruning before the packages update means the installed version is still the newest cached, so it survives along with a spare. Retention is by version order and never consults what is installed, so that holds while the installed version is among the two newest cached; a deliberate downgrade or repeated failed transactions can stack newer archives on top of it. Running before the snapshot is what actually frees the space. The cache sits on the snapshotted root subvolume, so a prune taken afterwards leaves the fresh snapshot holding those extents and reclaims nothing until it ages out of the number cleanup. A failed prune warns and continues. Cache housekeeping should not trip the update's ERR trap and tell the user their update went wrong. This runs after omarchy-update-requires-free-space, so it reclaims space during healthy updates but does not rescue a machine already under the 10 GiB gate. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
13 lines
458 B
Bash
Executable File
13 lines
458 B
Bash
Executable File
#!/bin/bash
|
|
|
|
# omarchy:summary=Prune superseded versions from the pacman package cache
|
|
# omarchy:requires-sudo=true
|
|
|
|
set -e
|
|
|
|
# The cache is the only offline downgrade path, so keep two. Run before the
|
|
# packages update and the installed version survives with a spare. paccache
|
|
# retains by version order, never by what is installed.
|
|
echo -e "\e[32m\nPrune package cache\e[0m"
|
|
sudo paccache -rk2 || echo -e "\e[33mCould not prune the package cache.\e[0m" >&2
|