Upgrade-Abbrüche abfangen und das Rauschen filtern

Beim Wechsel der Python-Version wirft dpkg dutzende Zeilen 'unable to delete old
directory ... Directory not empty'. Das sind Warnungen — in site-packages liegen
noch .pyc-Dateien oder selbst installierte Module. Sie verdecken aber die eine
Zeile, auf die es ankommt, und werden deshalb gefiltert.

Bricht das Upgrade ab, steckt dpkg meist halb fertig fest und blockiert jede
weitere Installation. Beide Skripte versuchen jetzt 'dpkg --configure -a' und
'apt-get -f install', dann das Upgrade erneut, bevor sie aufgeben. Scheitert es
weiterhin, nennen sie den Befehl, der den echten Fehler ohne Rauschen zeigt.

Dazu eine Platzprüfung im Bootstrap gegen $PREFIX statt gegen /. In Termux zeigt
'df -h' als / die Systempartition mit oft nur zweistelligen MB — die aber nichts
mit dem Platz zu tun hat, der Termux zur Verfügung steht. Wer danach geht,
diagnostiziert am falschen Datenträger.

Der Vulkan-Treiber ist geklärt: mesa-vulkan-icd-freedreno ist verfügbar und steht
in der Kandidatenliste bereits an erster Stelle.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Stefan
2026-08-10 21:50:18 +02:00
co-authored by Claude Opus 5
parent 488851101e
commit 7d0063278c
2 changed files with 48 additions and 7 deletions
+26 -6
View File
@@ -61,14 +61,34 @@ else
hinweis "Das dauert und lädt einiges. Es erspart aber genau die Fehler," hinweis "Das dauert und lädt einiges. Es erspart aber genau die Fehler,"
hinweis "die sonst erst Stunden später als kaputtes proot-distro auffallen." hinweis "die sonst erst Stunden später als kaputtes proot-distro auffallen."
export DEBIAN_FRONTEND=noninteractive export DEBIAN_FRONTEND=noninteractive
# --force-confold: vorhandene Konfigurationsdateien behalten, statt mitten im
# Lauf eine Rückfrage zu stellen, die niemand beantwortet. # Beim Wechsel der Python-Version wirft dpkg dutzende Zeilen
if pkg update -y && pkg upgrade -y -o Dpkg::Options::=--force-confold; then # "unable to delete old directory ... Directory not empty". Das sind
# Warnungen, keine Fehler: in site-packages liegen noch .pyc-Dateien oder
# selbst installierte Module. Sie herauszufiltern ist kein Verstecken —
# sie verdecken sonst die eine Zeile, auf die es ankommt.
rauschfilter() { grep -viE 'unable to delete old directory|^(Unpacking|Preparing|Selecting) '; }
# --force-confold: vorhandene Konfiguration behalten, statt mitten im Lauf
# eine Rückfrage zu stellen, die niemand beantwortet.
pkg update -y 2>&1 | rauschfilter
if pkg upgrade -y -o Dpkg::Options::=--force-confold 2>&1 | rauschfilter; then
ok "Termux ist aktuell" ok "Termux ist aktuell"
else else
warn "Das Upgrade lief nicht sauber durch." warn "Das Upgrade brach ab. Versuche zu reparieren …"
hinweis "Weiter geht es trotzdem — aber merken, falls später etwas klemmt." # Die übliche Ursache ist ein einzelnes Paket, das sich nicht auspacken
hinweis "Von Hand nachziehen: pkg update && pkg upgrade -y" # ließ. Danach steckt dpkg halb fertig fest und blockiert alles Weitere.
dpkg --configure -a 2>&1 | rauschfilter
apt-get -f install -y 2>&1 | rauschfilter
if pkg upgrade -y -o Dpkg::Options::=--force-confold 2>&1 | rauschfilter; then
ok "Nach der Reparatur durchgelaufen"
else
warn "Bleibt unvollständig."
hinweis "Speicherplatz prüfen: df -h \$PREFIX"
hinweis "Fehler ohne Rauschen ansehen:"
hinweis " pkg upgrade -y 2>&1 | grep -viE 'unable to delete' | tail -20"
hinweis "Weiter geht es trotzdem — aber hier ansetzen, falls später etwas klemmt."
fi
fi fi
fi fi
+22 -1
View File
@@ -37,7 +37,28 @@ else
if try pkg upgrade -y -o Dpkg::Options::=--force-confold; then if try pkg upgrade -y -o Dpkg::Options::=--force-confold; then
ok "Termux ist aktuell" ok "Termux ist aktuell"
else else
warn "Upgrade lief nicht sauber durch — bei späteren Fehlern hier ansetzen." warn "Upgrade brach ab — versuche zu reparieren."
# Meist scheitert ein einzelnes Paket beim Auspacken, danach steckt dpkg
# halb fertig fest und blockiert jede weitere Installation.
try dpkg --configure -a
try apt-get -f install -y
if try pkg upgrade -y -o Dpkg::Options::=--force-confold; then
ok "Nach der Reparatur durchgelaufen"
else
warn "Bleibt unvollständig."
hint "Speicherplatz: df -h \$PREFIX"
hint "Freier Platz unter etwa 1 GB ist die häufigste Ursache."
hint "Fehler ohne Rauschen: pkg upgrade -y 2>&1 | grep -viE 'unable to delete' | tail -20"
hint "Die vielen 'unable to delete old directory' sind Warnungen, keine Fehler."
fi
fi
# Platz prüfen, solange es noch nicht weh tut: das Debian-Rootfs samt Plasma
# Mobile braucht mehrere GB, und ein Abbruch mitten im Entpacken ist ärgerlicher
# als eine Warnung vorher.
FREI_KB=$(df -Pk "$PREFIX" 2>/dev/null | awk 'NR==2 {print $4}')
if [ -n "$FREI_KB" ]; then
log " Freier Speicher: $((FREI_KB / 1024)) MB"
[ "$FREI_KB" -lt 2000000 ] && warn "Unter 2 GB frei — für Debian plus Plasma Mobile knapp."
fi fi
fi fi