#!/bin/bash # check_dependencies.sh - Prüft, ob alle benötigten Programme und Build-Abhängigkeiten installiert sind. # Lade die Projekt-Konfiguration, um den Pfad zu minetestmapper zu kennen CONFIG_FILE_PATH="$(dirname "$0")/config.sh" if [ ! -f "$CONFIG_FILE_PATH" ]; then echo "FEHLER: Konfigurationsdatei config.sh nicht unter ${CONFIG_FILE_PATH} gefunden!" exit 1 fi source "$CONFIG_FILE_PATH" echo "Starte Überprüfung der System-Abhängigkeiten..." echo "" declare -i missing_count=0 # --- Teil 1: Kritische Laufzeit-Programme --- echo "--- Prüfe Laufzeit-Programme ---" # Spezieller Check für minetestmapper am Projekt-Pfad MINETESTMAPPER_FULL_PATH="${BASE_SCRIPT_DIR}/${MINETESTMAPPER_EXEC_NAME}" if [ -f "$MINETESTMAPPER_FULL_PATH" ]; then if [ -x "$MINETESTMAPPER_FULL_PATH" ]; then echo "[+] OK: '${MINETESTMAPPER_EXEC_NAME}' ist verfügbar und ausführbar unter: ${MINETESTMAPPER_FULL_PATH}" else echo "[-] FEHLER: '${MINETESTMAPPER_EXEC_NAME}' gefunden, aber NICHT AUSFÜHRBAR unter: ${MINETESTMAPPER_FULL_PATH}" echo " -> Bitte mit 'chmod +x ${MINETESTMAPPER_FULL_PATH}' korrigieren." missing_count=$((missing_count + 1)) fi else echo "[-] FEHLER: Das Hauptprogramm '${MINETESTMAPPER_EXEC_NAME}' wurde nicht unter dem erwarteten Pfad ${MINETESTMAPPER_FULL_PATH} gefunden." missing_count=$((missing_count + 1)) fi # Checks für andere Programme, die im PATH sein sollten # KORREKTUR: 'identify' entfernt, 'vipsheader' hinzugefügt. declare -a runtime_deps_in_path=("gdal2tiles.py" "vips" "vipsheader" "ss" "bc" "sqlite3" "jq") for dep in "${runtime_deps_in_path[@]}"; do if ! command -v "$dep" &> /dev/null; then echo "[-] FEHLER: Das benötigte Programm '$dep' wurde nicht im System-Pfad gefunden." missing_count=$((missing_count + 1)) else found_path=$(command -v "$dep") echo "[+] OK: '$dep' ist verfügbar unter: ${found_path}" fi done echo "" # --- Teil 2: Build-Abhängigkeiten für minetestmapper --- echo "--- Prüfe Build-Abhängigkeiten (für Debian/Ubuntu-basierte Systeme) ---" declare -a build_deps=("cmake" "libgd-dev" "libhiredis-dev" "libleveldb-dev" "libpq-dev" "libsqlite3-dev" "zlib1g-dev" "libzstd-dev") # Prüfen, ob dpkg verfügbar ist, sonst diesen Teil überspringen if ! command -v "dpkg" &> /dev/null; then echo "[!] WARNUNG: 'dpkg' Kommando nicht gefunden. Kann Build-Abhängigkeiten nicht prüfen. (Dies ist normal auf nicht-Debian-Systemen)" else for pkg in "${build_deps[@]}"; do if ! dpkg -s "$pkg" &> /dev/null; then echo "[-] FEHLER: Das benötigte Build-Paket '$pkg' scheint nicht installiert zu sein." missing_count=$((missing_count + 1)) else echo "[+] OK: Build-Paket '$pkg' ist installiert." fi done fi echo "-----------------------------------------------------" # --- Fazit --- if [ "$missing_count" -gt 0 ]; then echo "" echo "Prüfung fehlgeschlagen. Es fehlen ${missing_count} Abhängigkeit(en)." echo "Bitte die oben als FEHLER markierten Programme und/oder Pakete installieren bzw. korrigieren." echo "" echo "Hinweise zur Installation (Beispiele für Debian/Ubuntu):" echo " Laufzeit-Programme:" echo " - minetestmapper: Muss manuell kompiliert oder aus einer anderen Quelle bezogen werden." echo " - gdal-bin: Enthält 'gdal2tiles.py'." echo " - libvips-tools: Enthält 'vips' und 'vipsheader' für die Bildbearbeitung." echo " - iproute2: Enthält 'ss' (meist vorinstalliert)." echo " - bc: Für mathematische Operationen in Skripten." echo " - sqlite3: Zur Abfrage der Spieldatenbanken." echo " - jq: Zur Verarbeitung von JSON in Skripten." echo "" echo " Build-Pakete (zum Kompilieren von minetestmapper):" echo " - sudo apt-get install cmake libgd-dev libhiredis-dev libleveldb-dev libpq-dev libsqlite3-dev zlib1g-dev libzstd-dev" exit 1 else echo "" echo "Alle geprüften Abhängigkeiten sind vorhanden. Das System ist startklar." exit 0 fi