Vorabprüfung: proot-distro und Rootfs vor jedem Beweis
Aus dem Gerätelauf: S2 lief bis Stufe 1 durch und scheiterte dann an 'proot-distro: cannot execute: required file not found'. Danach meldete die Auswertung folgerichtig 'S2 gescheitert' — was den Beweis inhaltlich belastet, obwohl nur die Grundlage fehlte. Genau diese Verwechslung soll der Spike nicht produzieren. Alle Beweise prüfen jetzt vorab, ob proot-distro ausführbar ist und das Rootfs steht, und brechen sonst mit klarer Ansage ab statt mitten im Test aufzulaufen. Die Meldung selbst ist irreführend: 'required file not found' heißt nicht, dass proot-distro fehlt — bash hat es gefunden und nennt den vollen Pfad. Es fehlt der Interpreter aus dessen Shebang-Zeile. Die Prüfung sagt das ausdrücklich und nennt Datei und Shebang, statt den Suchenden an der falschen Stelle graben zu lassen. 00-bootstrap versucht in dem Fall selbsttätig eine Neuinstallation. Dazu die Berechtigungsprüfung entschärft: dumpsys verlangt die DUMP-Berechtigung, die eine gewöhnliche App nicht hat. Das Fehlschlagen ist erwartbar und kein Warnsignal; die Meldung nennt jetzt den Weg über adb statt Ratlosigkeit zu säen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -65,6 +65,53 @@ require_termux() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Prüft, ob die Grundlage steht, BEVOR ein Beweis losläuft. Ohne das scheitert ein
|
||||
# Test mitten im Ablauf und sieht aus wie ein inhaltlicher Fehlschlag, obwohl nur
|
||||
# die Vorbereitung fehlt — die irreführendste Sorte Fehler.
|
||||
voraussetzungen_pruefen() {
|
||||
local distro="${1:-debian}" fehlt=0
|
||||
|
||||
section "Voraussetzungen"
|
||||
|
||||
if ! have proot-distro; then
|
||||
fail "proot-distro ist nicht installiert"
|
||||
hint "Nachholen mit: bash spike/00-bootstrap-termux.sh"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 'cannot execute: required file not found' heißt NICHT, dass das Skript fehlt.
|
||||
# Es heißt, dass der Interpreter aus seiner Shebang-Zeile fehlt. Der Unterschied
|
||||
# kostet sonst eine halbe Stunde Suche an der falschen Stelle.
|
||||
local pfad interpreter
|
||||
pfad="$(command -v proot-distro)"
|
||||
if ! proot-distro list >/dev/null 2>&1; then
|
||||
fail "proot-distro lässt sich nicht ausführen"
|
||||
interpreter="$(head -1 "$pfad" 2>/dev/null | sed 's|^#!||; s| .*||')"
|
||||
log " Datei: $pfad"
|
||||
log " Shebang: ${interpreter:-(keine)}"
|
||||
if [ -n "$interpreter" ] && [ ! -x "$interpreter" ]; then
|
||||
fail "Der Interpreter $interpreter fehlt oder ist nicht ausführbar."
|
||||
hint "Das ist die Ursache, nicht proot-distro selbst."
|
||||
hint "Reparieren mit: pkg install -y bash coreutils proot proot-distro"
|
||||
else
|
||||
hint "Reparieren mit: pkg reinstall -y proot-distro"
|
||||
fi
|
||||
return 1
|
||||
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"
|
||||
else
|
||||
fail "$distro-Rootfs fehlt"
|
||||
hint "Nachholen mit: bash spike/00-bootstrap-termux.sh"
|
||||
fehlt=1
|
||||
fi
|
||||
|
||||
return $fehlt
|
||||
}
|
||||
|
||||
# Fragt am Ende jedes Beweises nach dem, was nur ein Mensch beurteilen kann:
|
||||
# ob es tatsächlich funktioniert hat. Das Ergebnis geht ins Protokoll.
|
||||
verdict() {
|
||||
|
||||
Reference in New Issue
Block a user