Version 2.8.33: Selbstreparatur der Python-Umgebung nach einem Release-Upgrade

This commit is contained in:
alientim committed 2026-09-16 21:17:09 +02:00
1 parent 617fe10d8d
commit 23c091e99f
7 files changed
+226 -44

No files matched your search

+43
View File
@@ -383,6 +383,49 @@ sudo bash /srv/tesm/deploy/update.sh tesm
---
## 4bb. Release-Upgrade des Betriebssystems
Ein `do-release-upgrade` tauscht die Minor-Fassung von Python aus (24.04 bringt
3.12, 26.04 bringt 3.14). Der venv einer Installation hängt daran: seine Pakete
liegen unter `lib/python3.12`, während `venv/bin/python3` auf `/usr/bin/python3`
zeigt — also nach dem Upgrade auf den **neuen** Interpreter. Er ist ausführbar
und trotzdem tot; jeder Dienst scheitert mit `No module named gunicorn`, nginx
meldet 502.
**Das repariert TESM seit 2.8.33 von selbst.** Vor jedem Dienststart läuft
```
ExecStartPre=+/usr/local/lib/tesm/tesm-venv /srv/tesm tesm
```
Ist die Umgebung heil, kostet das Millisekunden. Sonst wird sie neu gebaut und
mit denselben Paketen bestückt, die auch die Installation einspielt — es ist
dasselbe Programm, `install.sh` ruft es mit `--immer` auf. Nach dem Neustart,
der auf jedes Release-Upgrade folgt, kommt der Dienst also von allein zurück;
im Live-Protokoll steht dann eine Zeile als Hinweis.
Von Hand prüfen oder anstoßen:
```bash
/usr/local/lib/tesm/tesm-venv /srv/tesm tesm --pruefen # 0 heil, 1 kaputt
/usr/local/lib/tesm/tesm-venv /srv/tesm tesm # reparieren
```
**Grenzen.** Der Neuaufbau lädt Pakete und braucht Zugriff auf das
Paketverzeichnis. Ohne Netz kann er nicht gelingen: dann wird **ein** Versuch je
Systemstart unternommen (Merker unter `/run`), und es bleibt bei einer klaren
Zeile im Journal und im Live-Protokoll. Ohne diese Bremse startete
`Restart=always` alle fünf Sekunden einen neuen `pip`-Lauf.
Die alten Pakete unter `lib/python3.<alt>` werden nicht übernommen —
`cryptography`, `argon2-cffi` und `bcrypt` sind kompiliert und für die alte
Fassung gebaut.
Empfohlene Reihenfolge bleibt trotzdem: erst TESM aktualisieren, dann
`do-release-upgrade`, dann prüfen.
---
## 4c. Installation entfernen
Das Gegenstück zu `install.sh`: