fix: Ghostscript-Angebot log nicht mehr, fehlende Voraussetzungen dokumentiert (v0.7.1)
Befunde aus dem ersten echten Erstinstallations-Test auf frischen Debian-12- und Debian-13-Containern. Der Weg selbst hat getragen (Basis-Install, Instanz-Anlage, zweite Instanz, Update mit Rauchtest, Rollback) — diese Stellen haben gelogen oder gefehlt: - Das Ghostscript-Backports-Angebot auf Debian 12 war ein garantierter Leerlauf, der "aktualisiert ✓" meldete: bookworm-backports enthaelt gar kein ghostscript (am Paketindex verifiziert). Die Routine sucht jetzt den echten Kandidaten, vergleicht vorher/nachher und raeumt eine nur zur Probe angelegte Quelle wieder weg. - Derselbe untaugliche Rat stand in der Preflight-Meldung, der pdfa_level-Warnung, config.example.toml und vier Doku-Dateien — ueberall ersetzt durch die echten Optionen. - Mehrzeilige Log-Hinweise waren durch "echo -e" zerrissen und nicht kopierbar; log_* nutzt jetzt printf mit %s. - pip-freeze.txt landete beim Rollback als /pip-freeze.txt im Wurzelverzeichnis, liegt jetzt unter opt/pdf-ocr-hotfolder/. - git und sudo fehlen auf dem Proxmox-Debian-Template; "sudo ./install.sh" scheitert dort. Beide Wege dokumentiert, git als Voraussetzung ergaenzt, HTTPS-Clone als Normalfall. - Rollback: systemctl start kann kein Glob. journald-Reparatur: Instanzen danach neu starten, sonst bleibt das Journal leer. 254 Tests gruen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -901,14 +901,24 @@ strip_root() {
|
||||
# Das Archiv enthaelt Klartext-Passwoerter aus den Instanz-Configs und wird
|
||||
# deshalb root-only (0600) abgelegt.
|
||||
create_backup() {
|
||||
local stage tmp d
|
||||
local stage tmp tar_tmp d freeze_rel
|
||||
local -a items=()
|
||||
|
||||
log_step "Backup erstellen"
|
||||
mkdir -p "$BACKUP_DIR" || die "Backup-Verzeichnis $BACKUP_DIR nicht anlegbar."
|
||||
chmod 700 "$BACKUP_DIR" 2>/dev/null || true
|
||||
|
||||
# Die pip-freeze-Liste liegt im Archiv UNTER dem Installationsverzeichnis.
|
||||
# Der dokumentierte Rollback (tar -xzf ... -C /) legt sie damit nach
|
||||
# $INSTALL_DIR/pip-freeze.txt statt als /pip-freeze.txt in die Wurzel.
|
||||
# Dort ueberlebt sie auch den naechsten Update-Lauf: der raeumt nur
|
||||
# $INSTALL_DIR/pdf_ocr_hotfolder und $INSTALL_DIR/lib weg.
|
||||
freeze_rel="$(strip_root "$INSTALL_DIR")/pip-freeze.txt"
|
||||
stage="$(mktemp -d)" || die "mktemp -d fehlgeschlagen."
|
||||
if ! mkdir -p "$stage/$(dirname "$freeze_rel")"; then
|
||||
rm -rf "$stage"
|
||||
die "Backup-Zwischenverzeichnis nicht anlegbar."
|
||||
fi
|
||||
{
|
||||
echo "# pip freeze der alten venv vor dem Update"
|
||||
echo "# Zeitpunkt: $(date -Is)"
|
||||
@@ -918,7 +928,7 @@ create_backup() {
|
||||
else
|
||||
echo "# keine funktionierende venv vorhanden"
|
||||
fi
|
||||
} > "$stage/pip-freeze.txt"
|
||||
} > "$stage/$freeze_rel"
|
||||
|
||||
[ -d "$INSTALL_DIR" ] && items+=("$(strip_root "$INSTALL_DIR")")
|
||||
[ -d "$CONFIG_DIR" ] && items+=("$(strip_root "$CONFIG_DIR")")
|
||||
@@ -935,17 +945,24 @@ create_backup() {
|
||||
fi
|
||||
|
||||
tmp="$BACKUP_DIR/backup-$(date +%Y%m%d-%H%M%S).tar.gz"
|
||||
tar_tmp="${tmp%.gz}"
|
||||
local old_umask; old_umask="$(umask)"
|
||||
umask 077
|
||||
if ! tar -czf "$tmp" \
|
||||
# Zwei tar-Aufrufe statt einem: --exclude wirkt global, wuerde also auch
|
||||
# die frische Liste aus $stage verschlucken. So faellt eine von einem
|
||||
# frueheren Rollback liegengebliebene pip-freeze.txt im ersten Aufruf raus,
|
||||
# und der zweite haengt die frische an — genau ein Eintrag im Archiv.
|
||||
if ! tar -cf "$tar_tmp" \
|
||||
--exclude="$(strip_root "$INSTALL_DIR")/venv" \
|
||||
--exclude="$(strip_root "$INSTALL_DIR")/venv.old-*" \
|
||||
--exclude="$freeze_rel" \
|
||||
--exclude='*/__pycache__' \
|
||||
--exclude='*.pyc' \
|
||||
-C "$TAR_ROOT" "${items[@]}" \
|
||||
-C "$stage" pip-freeze.txt; then
|
||||
|| ! tar -rf "$tar_tmp" -C "$stage" "$freeze_rel" \
|
||||
|| ! gzip -n "$tar_tmp"; then
|
||||
umask "$old_umask"
|
||||
rm -f "$tmp"
|
||||
rm -f "$tar_tmp" "$tmp"
|
||||
rm -rf "$stage"
|
||||
die "Backup fehlgeschlagen (volle Platte?). Es wurde NICHTS veraendert."
|
||||
fi
|
||||
@@ -956,7 +973,8 @@ create_backup() {
|
||||
|
||||
BACKUP_FILE="$tmp"
|
||||
log_info "Backup: $tmp ($(du -h "$tmp" 2>/dev/null | awk '{print $1}'))"
|
||||
log_info " Enthalten: Code, $CONFIG_DIR, Template-Unit, Drop-ins, pip-freeze.txt"
|
||||
log_info " Enthalten: Code, $CONFIG_DIR, Template-Unit, Drop-ins"
|
||||
log_info " Dazu die pip-Liste der alten venv: $INSTALL_DIR/pip-freeze.txt"
|
||||
log_info " NICHT enthalten: venv und die Datenverzeichnisse ($DATA_ROOT)"
|
||||
log_warn " Achtung: die Instanz-Configs enthalten Klartext-Passwoerter"
|
||||
log_warn " (SMTP/Nextcloud/SFTP) — Archiv ist deshalb root-only (0600)."
|
||||
|
||||
Reference in New Issue
Block a user