diff options
| author | 2026-04-21 01:24:35 +0100 | |
|---|---|---|
| committer | 2026-04-21 01:24:35 +0100 | |
| commit | e24c62228c49766935f434192db0d1cb4fdde820 (patch) | |
| tree | 162d1162db2eb6f21b024b4430e9d97c09d67c11 | |
| parent | a7eb25c7a4634418325256a8b368591e5b86ebeb (diff) | |
| download | dotfiles-e24c62228c49766935f434192db0d1cb4fdde820.tar.gz dotfiles-e24c62228c49766935f434192db0d1cb4fdde820.tar.bz2 dotfiles-e24c62228c49766935f434192db0d1cb4fdde820.zip | |
fix(etc-restore): preserve mtime so pacman -Qkk sees file as unmodified
'bsdtar -xOf | doas tee' wrote pristine content but with mtime=now,
which caused 'pacman -Qkk' (and therefore 'just etc') to still flag
the file as drifted — pacman compares stored metadata, not content.
Switch to 'doas bsdtar -xpf <archive> -C / <file>', which extracts
the single file in place with its original owner, mode, and mtime
from the package archive.
| -rw-r--r-- | justfile | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -479,7 +479,9 @@ etc-restore +paths: [ -n "$cache" ] || { echo "error: no cache for ${pkg}-${ver}; mirror may have moved past installed version" >&2; exit 1; } bsdtar -tf "$cache" "${live#/}" >/dev/null 2>&1 \ || { echo "error: $live not present in $pkg archive" >&2; exit 1; } - bsdtar -xOf "$cache" "${live#/}" | doas tee "$live" >/dev/null + # Extract with -p to preserve owner/mode/mtime so pacman -Qkk sees the + # file as unmodified (same metadata as install time, not just same bytes). + doas bsdtar -xpf "$cache" -C / "${live#/}" echo "restored (from $pkg): $live" done |
