#!/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 \ scheme-basic \ scheme-infraonly \ scheme-minimal \ collection-fontsrecommended \ 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 \ beamer 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!"