#!/usr/bin/env bash # Tuxflotte Installer # Phase 0 – Preflight # # Stellt sicher, dass Werkzeuge vorhanden sind, die spaetere Module (ab # 10_hardware.sh) brauchen, aber auf dem Live-Medium selbst (anders als im # Zielsystem, siehe pkgsel/include in preseed.tpl) nicht vorinstalliert sind. # # jq ist der einzige hier betroffene Fall: 10_hardware.sh, 12_enrollment_auth.sh, # 15_server_handshake.sh, 17_device_status.sh, 20_profile_selection.sh, # 25_installation_confirm.sh und 30_runtime_blueprint.sh nutzen es alle, das # erste davon (10_hardware.sh) bereits deutlich vor 40_backend.sh, wo # backend_init() denselben Nachinstallations-Mechanismus fuer den Kexec-Pfad # schon kennt (siehe backends/mint/backend.sh) - hier zu spaet fuer die # frueheren Module. Real entdeckt: beim automatisierten Start ueber # start-kiosk.sh (kein Terminal, keine sichtbare Fehlermeldung) blieb der # Installer bereits in 10_hardware.sh mit "Benoetigtes Programm nicht # gefunden: jq" haengen, sichtbar nur in ~/.xsession-errors - manuelle Testlaeufe # in dieser Session sind daran nie gescheitert, weil jq dabei stets vorab von # Hand nachinstalliert wurde, bevor installer.sh gestartet wurde. set -Eeuo pipefail readonly SCRIPT_NAME="${0##*/}" log() { printf '[%s] %s\n' "${SCRIPT_NAME}" "$*" >&2 } if ! command -v jq >/dev/null 2>&1; then log "jq fehlt auf dem Live-Medium, installiere nach." sed -i '/^deb cdrom/d' /etc/apt/sources.list 2>/dev/null || true rm -f /etc/apt/sources.list.d/*cdrom* 2>/dev/null || true apt-get update -qq || { log "FEHLER: apt-get update fehlgeschlagen."; exit 1; } DEBIAN_FRONTEND=noninteractive apt-get install -y jq || { log "FEHLER: Installation von jq fehlgeschlagen."; exit 1; } fi