From 7d0063278c6242f9e1ab78cd768a3a6e204a2286 Mon Sep 17 00:00:00 2001 From: Stefan Date: Mon, 10 Aug 2026 21:50:18 +0200 Subject: [PATCH] =?UTF-8?q?Upgrade-Abbr=C3=BCche=20abfangen=20und=20das=20?= =?UTF-8?q?Rauschen=20filtern?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- provision/init-phone.sh | 32 ++++++++++++++++++++++++++------ spike/00-bootstrap-termux.sh | 23 ++++++++++++++++++++++- 2 files changed, 48 insertions(+), 7 deletions(-) diff --git a/provision/init-phone.sh b/provision/init-phone.sh index 8dd1fc4..fc3cd74 100755 --- a/provision/init-phone.sh +++ b/provision/init-phone.sh @@ -61,14 +61,34 @@ else 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." export DEBIAN_FRONTEND=noninteractive - # --force-confold: vorhandene Konfigurationsdateien behalten, statt mitten im - # Lauf eine Rückfrage zu stellen, die niemand beantwortet. - if pkg update -y && pkg upgrade -y -o Dpkg::Options::=--force-confold; then + + # Beim Wechsel der Python-Version wirft dpkg dutzende Zeilen + # "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" else - warn "Das Upgrade lief nicht sauber durch." - hinweis "Weiter geht es trotzdem — aber merken, falls später etwas klemmt." - hinweis "Von Hand nachziehen: pkg update && pkg upgrade -y" + warn "Das Upgrade brach ab. Versuche zu reparieren …" + # Die übliche Ursache ist ein einzelnes Paket, das sich nicht auspacken + # 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 diff --git a/spike/00-bootstrap-termux.sh b/spike/00-bootstrap-termux.sh index 3cd50d1..51239f7 100755 --- a/spike/00-bootstrap-termux.sh +++ b/spike/00-bootstrap-termux.sh @@ -37,7 +37,28 @@ else if try pkg upgrade -y -o Dpkg::Options::=--force-confold; then ok "Termux ist aktuell" 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