Rootfs am Anmeldeversuch erkennen, nicht an Pfaden
Der zweite Bootstrap-Lauf brach ab, obwohl beim ersten alles stand: proot-distro hat sein Ablageformat gewechselt — sichtbar an 'Migrating legacy container' — und danach lag das Rootfs nicht mehr dort, wo meine Prüfung nachsah. Sie meldete 'nicht installiert', die folgende Installation scheiterte an 'already installed', und der Lauf brach ab. Ein Fehler in der Erkennung, nicht auf dem Gerät. Geprüft wird jetzt mit 'proot-distro login <distro> -- true'. Das fragt nicht, wo etwas liegt oder wie eine Ausgabe formatiert ist, sondern ob es funktioniert — und überlebt damit auch den nächsten Formatwechsel. Zusätzlich gilt 'already installed' nicht mehr als Fehler: entscheidend ist allein, ob die Anmeldung danach klappt. Tut sie es nicht, nennt das Skript die Handgriffe zum Neuaufsetzen, statt nur abzubrechen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -260,13 +260,40 @@ if ! proot-distro list >/dev/null 2>&1; then
|
||||
ok "proot-distro läuft wieder"
|
||||
fi
|
||||
|
||||
if proot-distro list --installed 2>/dev/null | grep -q "^$DISTRO\b" \
|
||||
|| [ -d "$PREFIX/var/lib/proot-distro/installed-rootfs/$DISTRO" ]; then
|
||||
ok "$DISTRO bereits installiert"
|
||||
# Ob ein Rootfs da ist, wird nicht mehr an Pfaden oder Ausgabeformaten festgemacht:
|
||||
# proot-distro hat sein Ablageformat gewechselt (erkennbar an der Meldung
|
||||
# "Migrating legacy container"), und danach lag das Rootfs woanders als erwartet.
|
||||
# Ein Anmeldeversuch ist die einzige Prüfung, die das nicht betrifft — sie fragt
|
||||
# nicht, wo etwas liegt, sondern ob es funktioniert.
|
||||
rootfs_laeuft() { proot-distro login "$DISTRO" -- true >/dev/null 2>&1; }
|
||||
|
||||
if rootfs_laeuft; then
|
||||
ok "$DISTRO bereits installiert und lauffähig"
|
||||
else
|
||||
log " Installiere $DISTRO — das dauert einige Minuten."
|
||||
need proot-distro install "$DISTRO"
|
||||
ok "$DISTRO installiert"
|
||||
if proot-distro install "$DISTRO" >>"$LOG" 2>&1; then
|
||||
ok "$DISTRO installiert"
|
||||
else
|
||||
# 'already installed' ist kein Fehler, sondern ein Wettlauf zwischen
|
||||
# meiner Prüfung und der Wirklichkeit. Entscheidend ist allein, ob sich
|
||||
# danach anmelden lässt.
|
||||
if grep -qi 'already installed' "$LOG"; then
|
||||
warn "proot-distro meldet: bereits installiert"
|
||||
else
|
||||
warn "Installation meldete einen Fehler:"
|
||||
tail -n 12 "$LOG" | sed 's/^/ /'
|
||||
fi
|
||||
if rootfs_laeuft; then
|
||||
ok "Anmeldung funktioniert trotzdem — weiter."
|
||||
else
|
||||
fail "Kein lauffähiges $DISTRO-Rootfs."
|
||||
log ""
|
||||
log " Von Hand versuchen:"
|
||||
log " proot-distro list --installed"
|
||||
log " proot-distro remove $DISTRO && proot-distro install $DISTRO"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
section "Debian-Grundausstattung"
|
||||
|
||||
+6
-4
@@ -100,11 +100,13 @@ voraussetzungen_pruefen() {
|
||||
fi
|
||||
ok "proot-distro ausführbar"
|
||||
|
||||
if proot-distro list --installed 2>/dev/null | grep -q "^$distro\b" \
|
||||
|| [ -d "$PREFIX/var/lib/proot-distro/installed-rootfs/$distro" ]; then
|
||||
ok "$distro-Rootfs vorhanden"
|
||||
# Anmeldeversuch statt Pfad- oder Ausgabeprüfung: proot-distro hat sein
|
||||
# Ablageformat gewechselt, und danach lag das Rootfs woanders als erwartet.
|
||||
# Diese Prüfung fragt nicht, wo etwas liegt, sondern ob es funktioniert.
|
||||
if proot-distro login "$distro" -- true >/dev/null 2>&1; then
|
||||
ok "$distro-Rootfs lauffähig"
|
||||
else
|
||||
fail "$distro-Rootfs fehlt"
|
||||
fail "$distro-Rootfs fehlt oder startet nicht"
|
||||
hint "Nachholen mit: bash spike/00-bootstrap-termux.sh"
|
||||
fehlt=1
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user