92 lines
4 KiB
Bash
Executable file
92 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
|
|
# 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
|