Hold back blocking packages instead of failing the whole upgrade
A repo package that replaces something an installed AUR package still depends on aborted the entire transaction, and would have done so on every subsequent run - one stale AUR package was enough to cut a machine off from all updates indefinitely. Observed in the wild: percona-server-clients replaces libperconaserverclient without providing it, while heidisql-qt6-bin hard-depends on it, blocking 213 unrelated package updates. pacman names the offending package in its dependency errors, so it is now extracted and passed to --ignore for one retry: the other 213 packages go through and the blocker is reported. The hold is per-run, never written to IgnorePkg, so it disappears by itself once upstream catches up. The single retry is also now a bounded recovery loop, because fixing one problem regularly uncovers the next - a conflict resolved with --ask=20 can surface a dependency error behind it. Each remedy is applied at most once. The held-back set is shown in the menu and notified only when it changes, so a blocker waiting on an upstream fix does not produce the same message daily.
This commit is contained in:
1 parent
f593cc1933
commit
9fd2458d20
6 files changed
+150
-57
No files matched your search
@@ -87,6 +87,13 @@ cau_ui_status() {
|
||||
"$(cau_msg "A restart is recommended to finish a kernel update.")" \
|
||||
"$CAU_C_RESET"
|
||||
fi
|
||||
|
||||
local held
|
||||
held="$(cau_state_read held_back '')"
|
||||
if [[ -n $held ]]; then
|
||||
printf '\n %s%s%s\n' "$CAU_C_YELLOW" \
|
||||
"$(cau_msg "Held back: %s" "$held")" "$CAU_C_RESET"
|
||||
fi
|
||||
}
|
||||
|
||||
# cau_ui_status_conditions
|
||||
|
||||
Reference in new issue
Block a user