unter Archlinux mit yay, zsh und fzf etwas housekeeping betreiben
Ich wollte ein paar kleine Funktionen haben, um verwaiste Pakete besser handlen zu können.
Ihr kennt das sicherlich, dass man diese Pakete aufräumen will und halb sein system crashed, weil der Paket manager ein Installiertes Paket wäre verwaist, obwohl es das nicht ist.
Nerdfonts sollten auch installiert sein. Dann sehen die Icons in den Meldungen besser aus.
Nachfolgend der Code für die Funktion die Verwaisten Pakete zu löschen:
yay_remove_orphans() {
local backup_dir="$HOME/.config/yay"
local date_str
local backup_file
local orphans
date_str="$(date +%Y-%m-%d_%H-%M-%S)"
backup_file="$backup_dir/remove_orph_${date_str}.bak"
mkdir -p "$backup_dir"
# Verwaiste Pakete ermitteln
orphans="$(yay -Qtdq)"
if [[ -z "$orphans" ]]; then
echo "✔ Keine verwaisten Pakete gefunden."
return 0
fi
# Backup schreiben
echo "$orphans" > "$backup_file"
echo "📦 Backup der verwaisten Pakete erstellt:"
echo " $backup_file"
echo
echo "🧹 Entferne folgende Pakete:"
echo "$orphans"
echo
yay -Rns $orphans
}
Und das ist der Code, um Pakete aus dem „Backup“ wieder herzustellen.
yay_restore_orphans() {
local backup_dir="$HOME/.config/yay"
local backup_file
local packages
local selected
# Backup-Datei auswählen
backup_file=$(ls -1 "$backup_dir"/remove_orph_*.bak 2>/dev/null | fzf \
--prompt="Backup auswählen: " \
--height=40% \
--reverse)
[[ -z "$backup_file" ]] && {
echo "✖ Kein Backup ausgewählt."
return 1
}
# Pakete aus Backup lesen
packages=("${(@f)$(cat "$backup_file")}")
if [[ ${#packages[@]} -eq 0 ]]; then
echo "✖ Backup ist leer."
return 1
fi
# Pakete auswählen
selected=($(printf "%s\n" "${packages[@]}" | fzf \
--multi \
--prompt="Pakete auswählen (TAB): " \
--height=60% \
--reverse))
[[ ${#selected[@]} -eq 0 ]] && {
echo "✖ Keine Pakete ausgewählt."
return 1
}
echo
echo "📦 Installiere folgende Pakete:"
printf " - %s\n" "${selected[@]}"
echo
yay -S "${selected[@]}"
}