diff --git a/texlive_update.sh b/texlive_update.sh index 5f4572e..ff7c5a7 100755 --- a/texlive_update.sh +++ b/texlive_update.sh @@ -1,39 +1,28 @@ #!/bin/bash -set -e # Bricht bei echten Fehlern sofort ab +set -e # Bricht bei Fehlern sofort ab -# Sicherer Ersatz für 'which' -TLMGR=$(command -v tlmgr || true) -TEXHASH=$(command -v texhash || true) - -# Falls tlmgr gar nicht existiert, sofort abbrechen -if [ -z "$TLMGR" ]; then - echo "Fehler: tlmgr wurde auf diesem System nicht gefunden!" >&2 - exit 1 -fi +TLMGR=$(which tlmgr) +TEXHASH=$(which texhash) echo "=== Starte optimierte LaTeX-Konfiguration ===" -# 1. Optionale Updates +# 1. Optionale Updates (NUR aktivieren wenn zwingend nötig, sonst auskommentieren) echo "Aktualisiere tlmgr und alle installierten Pakete..." $TLMGR update --self --all -# 2. Nur deinstallieren, falls überhaupt vorhanden (Fehlertolerant bei set -e) -echo "Überprüfe Altlasten..." -if $TLMGR info texliveonfly 2>/dev/null | grep -q "installed:[[:space:]]*Yes"; then - echo "Deinstalliere veraltetes texliveonfly..." - $TLMGR remove texliveonfly -else - echo " -> texliveonfly ist nicht installiert (Überspringe Deinstallation)." +# 2. Nur deinstallieren, falls überhaupt vorhanden +if $TLMGR info texliveonfly | grep -q "installed: Yes"; then + echo "Deinstalliere veraltetes texliveonfly..." + $TLMGR remove texliveonfly fi -# 3. ALLE Pakete gebündelt in EINEM Rutsch installieren +# 3. ALLE Pakete gebündelt in EINEM Rutsch installieren (only scheme-minimal installed) echo "Installiere alle benötigten LaTeX-Pakete parallel/gebündelt..." $TLMGR install \ scheme-basic \ scheme-infraonly \ scheme-minimal \ collection-fontsrecommended \ - collection-langgerman \ latexmk \ lastpage \ siunitx \ @@ -103,79 +92,70 @@ $TLMGR install \ xltabular \ ltablex \ caption \ - needspace + beamer -# 4. Datenbank-Refresh -if [ -n "$TEXHASH" ]; then - echo "Aktualisiere LaTeX-Dateidatenbank..." - $TEXHASH -fi +echo "Deinstalliere unerwünschte LaTeX-Pakete..." +# 'ae' und 't1enc' wurden entfernt, da sie geschützte Systempakete sind. +# Liste der Pakete, die deinstalliert werden sollen (einfach mit Leerzeichen trennen) +PACKETS=("truncate") + +for packet in "${PACKETS[@]}"; do + if tlmgr info "$packet" --only-installed >/dev/null 2>&1; then + echo "Lösche Paket: $packet..." + tlmgr remove "$packet" || true + else + echo "Paket '$packet' ist nicht installiert oder wurde bereits gelöscht." + fi +done + +# extdash (in ncctools) \ + +# 4. Datenbank-Refresh (tlmgr install macht das oft automatisch, sicherheitshalber am Ende einmal) +echo "Aktualisiere LaTeX-Dateidatenbank..." +$TEXHASH # 5. System-Abhängigkeiten prüfen und installieren (Biber & Ghostscript) echo "Überprüfe Linux-Systemkomponenten..." +# Liste der zu installierenden Apt-Pakete APT_PACKAGES="" INSTALLED_PACKAGES="" -# Ermittle den verfügbaren Paketmanager -PKG_MANAGER="unknown" -if command -v apt-get >/dev/null 2>&1; then PKG_MANAGER="apt"; fi -if command -v pacman >/dev/null 2>&1; then PKG_MANAGER="pacman"; fi +if ! command -v biber >/dev/null 2>&1; then + echo " -> biber fehlt und wird vorgemerkt." + APT_PACKAGES="$APT_PACKAGES biber" +else + echo " -> biber ist bereits installiert ($(biber --version | head -n 1))." + INSTALLED_PACKAGES="$INSTALLED_PACKAGES biber" +fi -# Weiche je nach Distro / Paketmanager -case "$PKG_MANAGER" in - "apt") - echo " -> Debian-basiertes System (apt) erkannt. Prüfe Paketabhängigkeiten..." - - # Biber-Prüfung - if ! command -v biber >/dev/null 2>&1; then - echo " -> biber fehlt und wird vorgemerkt." - APT_PACKAGES="$APT_PACKAGES biber" - else - # Gefangen mit || true / Klammern, um Fehler bei Auslese unter set -e zu blockieren - BIBER_VER=$((biber --version 2>/dev/null || echo "Version unbekannt") | head -n 1) - echo " -> biber ist bereits installiert ($BIBER_VER)." - INSTALLED_PACKAGES="$INSTALLED_PACKAGES biber" - fi +if ! command -v gs >/dev/null 2>&1; then + echo " -> ghostscript (gs) fehlt und wird vorgemerkt." + APT_PACKAGES="$APT_PACKAGES ghostscript" +else + echo " -> ghostscript (gs) ist bereits installiert ($(gs --version | head -n 1))." + INSTALLED_PACKAGES="$INSTALLED_PACKAGES ghostscript" +fi - # Ghostscript-Prüfung - if ! command -v gs >/dev/null 2>&1; then - echo " -> ghostscript (gs) fehlt und wird vorgemerkt." - APT_PACKAGES="$APT_PACKAGES ghostscript" - else - GS_VER=$(gs --version 2>/dev/null | head -n 1) - echo " -> ghostscript (gs) ist bereits installiert ($GS_VER)." - INSTALLED_PACKAGES="$INSTALLED_PACKAGES ghostscript" - fi - - # Falls Pakete fehlen, gebündelt installieren - if [ -n "$APT_PACKAGES" ]; then - echo "Installiere fehlende Systemkomponenten:$APT_PACKAGES..." - sudo apt-get update && sudo apt-get install -y $APT_PACKAGES - else - CLEAN_LIST=$(echo "$INSTALLED_PACKAGES" | sed 's/^[[:space:]]*//; s/[[:space:]]/, /g') - echo " -> Alle notwendigen Systemkomponenten ($CLEAN_LIST) sind bereits installiert!" - fi - ;; - - "pacman") - echo " -> Arch Linux (pacman) erkannt. Debian-Paketverwaltung wird übersprungen." - echo " -> Stelle sicher, dass 'biber' und 'ghostscript' auf Ihrem Arch-System installiert sind." - ;; - - *) - echo " -> Unbekanntes System. Keine automatische Paketprüfung möglich. Fahre fort..." - ;; -esac +# Falls Pakete fehlen, gebündelt mit einmaligem apt-get update installieren +if [ -n "$APT_PACKAGES" ]; then + echo "Installiere fehlende Systemkomponenten:$APT_PACKAGES..." + sudo apt-get update && sudo apt-get install -y $APT_PACKAGES +else + # Formatierung: Entfernt führende Leerzeichen und ersetzt verbleibende durch Kommata + CLEAN_LIST=$(echo $INSTALLED_PACKAGES | sed 's/ /, /g') + echo " -> Alle notwendigen Systemkomponenten ($CLEAN_LIST) sind bereits installiert!" +fi echo "" echo "=== Speicherplatz-Optimierung ===" -read -p "Möchtest du alle alten tlmgr-Paketbackups unwiderruflich löschen? (j/N): " response +read -p "Möchtest du alle alten tlmgr-Paktebackups unwiderruflich löschen? (j/N): " response if [[ "$response" =~ ^[jJ][aA]?$ || "$response" = "j" ]]; then - echo "Lösche alte Backups..." - $TLMGR backup --clean=0 --all + echo "Lösche alte Backups..." + $TLMGR backup --clean=0 --all else - echo "Backups wurden beibehalten." + echo "Backups wurden beibehalten." fi echo "=== Fertig! ===" +echo "Reminder: Please update pull/push the ~/gitea/scripts : scripts.git repository!"