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:
+26
-6
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user