install-termux.sh: APKs laden und fernzuinstallieren

Termux und seine Plugins teilen sich eine Android-UID (sharedUserId=com.termux).
Android verlangt für Apps mit gemeinsamer UID denselben Signaturschlüssel — und
F-Droid und GitHub signieren verschieden. Wer die Quellen mischt, scheitert an
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE, ohne dass die Meldung erklärt warum.

Das Skript lädt alle vier Apps von GitHub und installiert sie über die bestehende
adb-Verbindung, per WLAN wie per Kabel. Vorhandene Termux-Apps aus fremder Quelle
werden erkannt und auf Nachfrage entfernt — mit deutlicher Warnung, dass dabei
auch das Termux-Dateisystem verschwindet.

GitHub statt F-Droid, weil es dort Termux:X11 in einer sharedUid-Variante gibt.
Die läuft in Termux' Prozessgruppe und erbt dessen Akku-Ausnahmen; die normale
Variante ist eine eigenständige Hintergrund-App, die Android drosselt. Bei ROMs
wie ColorOS ist das der Unterschied zwischen 'läuft über Nacht' und 'war morgens
weg'.

Die Asset-Auswahl arbeitet mit einer Rangfolge statt eines festen Namens:
stabile Veröffentlichungen vor Vorabversionen, und bei termux-app die Variante
apt-android-7 vor dem Altbau apt-android-5, der sonst auf einem aktuellen Gerät
gewählt würde.

Korrektur zur bisherigen Dokumentation: Termux:X11 ist NICHT generell von der
Signaturbindung ausgenommen. Nur die normale Variante ist es, die sharedUid-
Fassung setzt GitHub-Termux voraus.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Stefan
2026-08-09 18:39:27 +02:00
co-authored by Claude Opus 5
parent 915fe53eeb
commit eeab61a0a4
5 changed files with 263 additions and 25 deletions
+27 -11
View File
@@ -159,21 +159,37 @@ else
Auf dem Telefon einfach im Browser öffnen und die APK installieren.
"Installation aus unbekannten Quellen" muss für den Browser erlaubt sein.
TEXT
if [ "$TROCKEN" != 1 ]; then
printf '\n Soll ich die Termux-Seite auf dem Telefon öffnen? [J/n] > '
read -r OEFFNEN </dev/tty || OEFFNEN=n
case "${OEFFNEN:-j}" in
if [ "$TROCKEN" != 1 ] && [ -x "$HIER/install-termux.sh" ]; then
cat <<'TEXT'
Das muss aber niemand von Hand machen: install-termux.sh lädt alle vier
Apps von GitHub und installiert sie über die bestehende adb-Verbindung —
per WLAN genauso wie per Kabel.
TEXT
printf '\n Jetzt automatisch installieren? [J/n] > '
read -r AUTOINSTALL </dev/tty || AUTOINSTALL=n
case "${AUTOINSTALL:-j}" in
j|J|"")
adb shell am start -a android.intent.action.VIEW \
-d 'https://f-droid.org/packages/com.termux/' >/dev/null 2>&1 \
&& ok "Seite auf dem Telefon geöffnet" \
|| warn "Konnte den Browser nicht starten — bitte von Hand aufrufen."
if ADB_SERIAL="$ADB_SERIAL" "$HIER/install-termux.sh"; then
ok "Termux ist installiert — weiter mit der Einrichtung."
hinweis "Bitte Termux einmal öffnen, damit es sein Dateisystem anlegt."
printf ' Wenn das erledigt ist, Enter drücken > '
read -r _ </dev/tty
else
fehl "Automatische Installation fehlgeschlagen."
exit 1
fi
;;
*)
hinweis "Dann von Hand — danach dieses Skript erneut aufrufen."
exit 1
;;
esac
else
printf '\n'
hinweis "Danach dieses Skript erneut aufrufen."
exit 1
fi
printf '\n'
hinweis "Danach dieses Skript erneut aufrufen."
exit 1
fi
# ── Hintergrundbetrieb, Android-Standardebene ────────────────────────────────