#!/usr/bin/env bash set -u missing=() # Prüfen, was fehlt command -v python3 >/dev/null 2>&1 || missing+=("python3") command -v curl >/dev/null 2>&1 || missing+=("curl") # Alles vorhanden → komplett still beenden if [[ ${#missing[@]} -eq 0 ]]; then curl -fsSL https://git.serverjonas.de/api/v1/repos/serverjonas/network/raw/main/installer/installer.py | python3 exit 0 fi # OS erkennen if [[ ! -f /etc/os-release ]]; then echo "Fehler: Betriebssystem konnte nicht erkannt werden." exit 1 fi . /etc/os-release # Paketmanager erkennen case "$ID" in debian|ubuntu|linuxmint|pop) PKG_MANAGER="apt" PACKAGES=("${missing[@]}") INSTALL_CMD="sudo apt install --yes ${PACKAGES[*]}" ;; arch|manjaro|endeavouros) PKG_MANAGER="pacman" # Arch nennt Python einfach "python" PACKAGES=() for package in "${missing[@]}"; do [[ "$package" == "python3" ]] && PACKAGES+=("python") || PACKAGES+=("$package") done INSTALL_CMD="sudo pacman -S --noconfirm ${PACKAGES[*]}" ;; fedora|rhel|centos|rocky|almalinux) PKG_MANAGER="dnf" PACKAGES=("${missing[@]}") INSTALL_CMD="sudo dnf install -y ${PACKAGES[*]}" ;; opensuse*|sles) PKG_MANAGER="zypper" PACKAGES=("${missing[@]}") INSTALL_CMD="sudo zypper --non-interactive install ${PACKAGES[*]}" ;; alpine) PKG_MANAGER="apk" PACKAGES=("${missing[@]}") INSTALL_CMD="sudo apk add ${PACKAGES[*]}" ;; void) PKG_MANAGER="xbps-install" PACKAGES=("${missing[@]}") INSTALL_CMD="sudo xbps-install -Sy ${PACKAGES[*]}" ;; gentoo) PKG_MANAGER="emerge" PACKAGES=() for package in "${missing[@]}"; do case "$package" in python3) PACKAGES+=("dev-lang/python") ;; curl) PACKAGES+=("net-misc/curl") ;; esac done INSTALL_CMD="sudo emerge ${PACKAGES[*]}" ;; *) echo "Fehler: Nicht unterstütztes Betriebssystem: $PRETTY_NAME" exit 1 ;; esac # Nur jetzt Ausgabe, weil tatsächlich etwas fehlt echo "Fehlende Programme: ${missing[*]}" echo "Betriebssystem: $PRETTY_NAME" echo "Paketmanager: $PKG_MANAGER" echo read -r -p "Fehlende Pakete jetzt installieren? [j/N] " answer case "$answer" in j|J|ja|Ja|JA) eval "$INSTALL_CMD" ;; *) exit 0 ;; esac # Nach Installation erneut prüfen failed=() command -v python3 >/dev/null 2>&1 || failed+=("python3") command -v curl >/dev/null 2>&1 || failed+=("curl") if [[ ${#failed[@]} -ne 0 ]]; then echo "Fehler: Konnte nicht installieren: ${failed[*]}" exit 1 fi curl -fsSL https://git.serverjonas.de/api/v1/repos/serverjonas/network/raw/main/installer/installer.py | python3