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
+34 -14
View File
@@ -26,23 +26,43 @@ Scheitert er, ist das ein früher Warnschuss fürs Gesamtkonzept, kein Detail.
### Termux installieren
**Nicht aus dem Play Store** — die Fassung dort wird seit Jahren nicht mehr gepflegt und
ist für dieses Projekt unbrauchbar. Alle Bestandteile müssen aus **derselben Quelle**
stammen, sonst passen die Signaturen nicht zusammen und die Zusatz-Apps verweigern den Dienst.
```bash
./provision/install-termux.sh
```
| App | F-Droid | GitHub |
Lädt alle vier Apps von GitHub und installiert sie über die bestehende
adb-Verbindung — per WLAN genauso wie per Kabel. `provision.sh` bietet das von
selbst an, wenn Termux fehlt.
#### Warum das ein eigenes Skript verdient
Termux und seine Plugins teilen sich eine Android-UID (`sharedUserId=com.termux`).
Android verlangt, dass Apps mit gemeinsamer UID **mit demselben Schlüssel signiert**
sind — und F-Droid und GitHub signieren verschieden. Mischt man die Quellen, scheitert
die Installation mit `INSTALL_FAILED_SHARED_USER_INCOMPATIBLE`. Das ist der mit Abstand
häufigste Stolperstein beim Einrichten.
Das Skript wählt durchgängig **GitHub**, aus zwei Gründen:
- Termux:X11 gibt es dort in einer **sharedUid-Variante**. 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 der
Unterschied zwischen „läuft über Nacht" und „war morgens weg".
- Eine Quelle, ein Schlüssel, keine Mischmasch-Fehler.
**Nicht aus dem Play Store** — die Fassung dort wird seit Jahren nicht mehr gepflegt.
Von Hand geht es natürlich auch, dann aber konsequent alles aus **einer** Quelle:
| App | GitHub | F-Droid |
|---|---|---|
| Termux | [f-droid.org](https://f-droid.org/packages/com.termux/) | [Releases](https://github.com/termux/termux-app/releases/latest) |
| Termux:API | [f-droid.org](https://f-droid.org/packages/com.termux.api/) | [Releases](https://github.com/termux/termux-api/releases/latest) |
| Termux:Boot | [f-droid.org](https://f-droid.org/packages/com.termux.boot/) | [Releases](https://github.com/termux/termux-boot/releases/latest) |
| Termux:X11 | — | [Releases](https://github.com/termux/termux-x11/releases) (Nightly, `app-universal-debug.apk`) |
| Termux | [Releases](https://github.com/termux/termux-app/releases/latest) | [f-droid.org](https://f-droid.org/packages/com.termux/) |
| Termux:API | [Releases](https://github.com/termux/termux-api/releases/latest) | [f-droid.org](https://f-droid.org/packages/com.termux.api/) |
| Termux:Boot | [Releases](https://github.com/termux/termux-boot/releases/latest) | [f-droid.org](https://f-droid.org/packages/com.termux.boot/) |
| Termux:X11 | [Releases](https://github.com/termux/termux-x11/releases) | — |
Termux:X11 gibt es nur bei GitHub. Wer die anderen drei von F-Droid nimmt, muss
Termux:X11 trotzdem von dort holen — das ist in Ordnung, weil Termux:X11 eine
eigenständige App ohne Signaturbindung an Termux ist.
Fehlt Termux, bietet `provision.sh` an, die Download-Seite direkt auf dem Telefon
zu öffnen.
Bei F-Droid-Termux muss für Termux:X11 die **normale** Variante genommen werden
(`termux-x11-universal-debug.apk`), nicht die sharedUid-Fassung.
**Ein USB-Kabel wird nicht gebraucht.** Ab Android 11 geht die Ersteinrichtung über
WLAN — `provision.sh` fragt beim Start, ob per Kabel oder per Netz verbunden werden