#!/bin/bash set -e # Bricht bei Fehlern sofort ab TLMGR=$(which tlmgr) TEXHASH=$(which texhash) echo "=== Starte optimierte LaTeX-Konfiguration ===" # 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 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 (only scheme-minimal installed) echo "Installiere alle benötigten LaTeX-Pakete parallel/gebündelt..." $TLMGR install \ background \ beamer \ biblatex \ biblatex-ieee \ booktabs \ cancel \ caption \ ccicons \ circuitikz \ cleveref \ cm-unicode \ collection-fontsrecommended \ concmath-otf \ contour \ csquotes \ currfile \ datetime2 \ datetime2-english \ datetime2-german \ ean \ ean13isbn \ enumitem \ epigraph \ everypage \ filehook \ fmtcount \ fontawesome5 \ fontaxes \ fontmfizz \ fontspec \ imakeidx \ koma-script \ latexmk \ lastpage \ lineno \ listings \ ltablex \ luatexbase \ marginnote \ mathtools \ microtype \ minted \ ncctools \ newpx \ newtx \ newunicodechar \ ocr-b \ parskip \ pdfcol \ pdflscape \ pdfpages \ pgf \ pgfplots \ pict2e \ ragged2e \ scheme-basic \ scheme-infraonly \ scheme-minimal \ setspace \ sidecap \ siunitx \ steinmetz \ stix2-otf \ subfigure \ tcolorbox \ tikzfill \ titlesec \ trimspaces \ unicode-math \ upquote \ vmargin \ wrapfig \ xcharter \ xltabular \ xpatch \ xstring 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="" 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 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 # 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-Paktebackups 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! ===" echo "Reminder: Please update pull/push the ~/gitea/scripts : scripts.git repository!"