Update texlive update script

Dieser Commit ist enthalten in:
tom
2026-07-30 16:27:49 +02:00
Ursprung b1934e4392
Commit 6c0d6601b1
Ausführbare Datei
+181
Datei anzeigen
@@ -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! ==="