#!/usr/bin/env bash # # ftptui – Installations-Skript (systemweit) # # Das System nutzt ein "externally managed" Python (PEP 668, Debian/Ubuntu), # daher wird NIE direkt in System-Site-Packages installiert. Stattdessen wird # eine eigene systemweite virtuelle Umgebung unter /opt/ftptui/venv angelegt # und der Einstiegspunkt nach /usr/local/bin/ftptui verlinkt. Damit steht das # Kommando global im PATH, ohne das System-Python zu gefährden. # # Verwendung: # ./install.sh # installiert systemweit (fragt ggf. nach sudo) # ./install.sh --force # überschreibt eine bereits installierte Version # ./install.sh --uninstall # set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PACKAGE_DIR="$SCRIPT_DIR" APP_NAME="ftptui" VENV_DIR="/opt/ftptui/venv" BIN_LINK="/usr/local/bin/$APP_NAME" FORCE=0 MODE="install" for arg in "$@"; do case "$arg" in --force|-f) FORCE=1 ;; --uninstall|-u) MODE="uninstall" ;; -h|--help) echo "Verwendung: $0 [--force|--uninstall]"; exit 0 ;; *) echo "Unbekanntes Argument: $arg"; exit 1 ;; esac done run_sudo() { if [ "$(id -u)" -eq 0 ]; then "$@" else sudo "$@" fi } if [ "$MODE" = "uninstall" ]; then echo "==> Entferne systemweite Installation von '$APP_NAME' ..." run_sudo rm -f "$BIN_LINK" run_sudo rm -rf /opt/ftptui echo "==> Entfernt: $BIN_LINK und $VENV_DIR" echo "=> Fertig. (Konfigurationsdateien unter ~/.config/ftptui bleiben erhalten.)" exit 0 fi echo "==> ftptui Installations-Skript (systemweit, via /opt/ftptui/venv)" # Abhängigkeiten prüfen command -v python3 >/dev/null 2>&1 || { echo "FEHLER: python3 nicht gefunden."; exit 1; } if ! python3 -m venv --help >/dev/null 2>&1; then echo "FEHLER: python3-venv fehlt. Bitte installieren: sudo apt install python3-venv" exit 1 fi # Bereits installiert? if [ -x "$BIN_LINK" ] && [ "$FORCE" -ne 1 ]; then echo "WARNUNG: '$APP_NAME' ist bereits installiert: $BIN_LINK" echo " Mit --force wird neu installiert." echo " Zum Entfernen: $0 --uninstall (bzw. ./uninstall.sh)" exit 0 fi echo "==> Lege systemweite virtuelle Umgebung an: $VENV_DIR" run_sudo python3 -m venv "$VENV_DIR" run_sudo "$VENV_DIR/bin/pip" install --upgrade pip echo "==> Installiere '$APP_NAME' + Abhängigkeiten ..." run_sudo "$VENV_DIR/bin/pip" install --upgrade "$PACKAGE_DIR" echo "==> Verlinke Einstiegspunkt nach $BIN_LINK" run_sudo ln -sf "$VENV_DIR/bin/$APP_NAME" "$BIN_LINK" # Konfigurationsverzeichnis anlegen CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/ftptui" mkdir -p "$CONFIG_DIR" echo "==> Konfigurationsverzeichnis bereit: $CONFIG_DIR" # Fertig echo echo "Installation abgeschlossen." echo " Befehl: $(command -v "$APP_NAME" 2>/dev/null || echo "$BIN_LINK")" echo " Start: $APP_NAME" echo " Venv: $VENV_DIR" echo echo "Tipp: 'ftptui' startet die TUI. Entfernen mit: ./uninstall.sh"