luanti-web/check_dependencies.sh
rainer a225feef98 feat(map): Implement interactive area overlays
This major update introduces a complete system for visualizing protected areas on the OpenLayers map. It adds a new sync script to process area data and heavily modifies the frontend to support interactive, multi-layer display with custom popups.

Additionally, data-sync scripts were refactored to run globally on all configured worlds, simplifying cron automation.
2025-06-23 01:41:17 +02:00

93 lines
4 KiB
Bash
Executable file

#!/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
# HINZUGEFÜGT: sqlite3 und jq
declare -a runtime_deps_in_path=("gdal2tiles.py" "vips" "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
# dpkg -s gibt einen Fehlercode zurück, wenn das Paket nicht installiert ist
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' 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