From 6c0d6601b133e0091aeb848918539c89d4a740c4 Mon Sep 17 00:00:00 2001 From: Thomas Kuschel Date: Thu, 30 Jul 2026 16:27:46 +0200 Subject: [PATCH] Update texlive update script --- texlive_update.sh | 181 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100755 texlive_update.sh diff --git a/texlive_update.sh b/texlive_update.sh new file mode 100755 index 0000000..e27bc59 --- /dev/null +++ b/texlive_update.sh @@ -0,0 +1,181 @@ +#!/bin/bash +set -e # Bricht bei echten 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 + +echo "=== Starte optimierte LaTeX-Konfiguration ===" + +# 1. Optionale Updates +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)." +fi + +# 3. ALLE Pakete gebündelt in EINEM Rutsch installieren +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 \ + pgf \ + datetime2 \ + datetime2-english \ + datetime2-german \ + currfile \ + filehook \ + xstring \ + enumitem \ + fmtcount \ + steinmetz \ + pict2e \ + pgfplots \ + minted \ + upquote \ + lineno \ + newunicodechar \ + marginnote \ + pdfpages \ + cleveref \ + pdflscape \ + booktabs \ + vmargin \ + newtx \ + xpatch \ + fontaxes \ + cancel \ + microtype \ + background \ + everypage \ + koma-script \ + csquotes \ + setspace \ + biblatex \ + biblatex-ieee \ + ccicons \ + ncctools \ + xcharter \ + titlesec \ + fontspec \ + parskip \ + newpx \ + trimspaces \ + mathtools \ + unicode-math \ + stix2-otf \ + cm-unicode \ + concmath-otf \ + fontmfizz \ + fontawesome5 \ + luatexbase \ + circuitikz \ + tcolorbox \ + tikzfill \ + pdfcol \ + listings \ + imakeidx \ + ean13isbn \ + ean \ + ocr-b \ + wrapfig \ + subfigure \ + sidecap \ + ragged2e \ + xltabular \ + ltablex \ + caption \ + needspace + +# 4. Datenbank-Refresh +if [ -n "$TEXHASH" ]; then + echo "Aktualisiere LaTeX-Dateidatenbank..." + $TEXHASH +fi + +# 5. System-Abhängigkeiten prüfen und installieren (Biber & Ghostscript) +echo "Überprüfe Linux-Systemkomponenten..." + +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 + +# 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 + + # 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 + +echo "" +echo "=== Speicherplatz-Optimierung ===" +read -p "Möchtest du alle alten tlmgr-Paketbackups unwiderruflich löschen? (j/N): " response +if [[ "$response" =~ ^[jJ][aA]?$ || "$response" = "j" ]]; then + echo "Lösche alte Backups..." + $TLMGR backup --clean=0 --all +else + echo "Backups wurden beibehalten." +fi + +echo "=== Fertig! ==="