Update texlive_update, install beamer class

Dieser Commit ist enthalten in:
tom
2026-09-08 10:44:09 +02:00
Ursprung 959319aed0
Commit 9e068163ef
+58 -78
Datei anzeigen
@@ -1,39 +1,28 @@
#!/bin/bash #!/bin/bash
set -e # Bricht bei echten Fehlern sofort ab set -e # Bricht bei Fehlern sofort ab
# Sicherer Ersatz für 'which' TLMGR=$(which tlmgr)
TLMGR=$(command -v tlmgr || true) TEXHASH=$(which texhash)
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 ===" 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..." echo "Aktualisiere tlmgr und alle installierten Pakete..."
$TLMGR update --self --all $TLMGR update --self --all
# 2. Nur deinstallieren, falls überhaupt vorhanden (Fehlertolerant bei set -e) # 2. Nur deinstallieren, falls überhaupt vorhanden
echo "Überprüfe Altlasten..." if $TLMGR info texliveonfly | grep -q "installed: Yes"; then
if $TLMGR info texliveonfly 2>/dev/null | grep -q "installed:[[:space:]]*Yes"; then echo "Deinstalliere veraltetes texliveonfly..."
echo "Deinstalliere veraltetes texliveonfly..." $TLMGR remove texliveonfly
$TLMGR remove texliveonfly
else
echo " -> texliveonfly ist nicht installiert (Überspringe Deinstallation)."
fi 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..." echo "Installiere alle benötigten LaTeX-Pakete parallel/gebündelt..."
$TLMGR install \ $TLMGR install \
scheme-basic \ scheme-basic \
scheme-infraonly \ scheme-infraonly \
scheme-minimal \ scheme-minimal \
collection-fontsrecommended \ collection-fontsrecommended \
collection-langgerman \
latexmk \ latexmk \
lastpage \ lastpage \
siunitx \ siunitx \
@@ -103,79 +92,70 @@ $TLMGR install \
xltabular \ xltabular \
ltablex \ ltablex \
caption \ caption \
needspace beamer
# 4. Datenbank-Refresh echo "Deinstalliere unerwünschte LaTeX-Pakete..."
if [ -n "$TEXHASH" ]; then # 'ae' und 't1enc' wurden entfernt, da sie geschützte Systempakete sind.
echo "Aktualisiere LaTeX-Dateidatenbank..." # Liste der Pakete, die deinstalliert werden sollen (einfach mit Leerzeichen trennen)
$TEXHASH PACKETS=("truncate")
fi
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) # 5. System-Abhängigkeiten prüfen und installieren (Biber & Ghostscript)
echo "Überprüfe Linux-Systemkomponenten..." echo "Überprüfe Linux-Systemkomponenten..."
# Liste der zu installierenden Apt-Pakete
APT_PACKAGES="" APT_PACKAGES=""
INSTALLED_PACKAGES="" INSTALLED_PACKAGES=""
# Ermittle den verfügbaren Paketmanager if ! command -v biber >/dev/null 2>&1; then
PKG_MANAGER="unknown" echo " -> biber fehlt und wird vorgemerkt."
if command -v apt-get >/dev/null 2>&1; then PKG_MANAGER="apt"; fi APT_PACKAGES="$APT_PACKAGES biber"
if command -v pacman >/dev/null 2>&1; then PKG_MANAGER="pacman"; fi else
echo " -> biber ist bereits installiert ($(biber --version | head -n 1))."
INSTALLED_PACKAGES="$INSTALLED_PACKAGES biber"
fi
# Weiche je nach Distro / Paketmanager if ! command -v gs >/dev/null 2>&1; then
case "$PKG_MANAGER" in echo " -> ghostscript (gs) fehlt und wird vorgemerkt."
"apt") APT_PACKAGES="$APT_PACKAGES ghostscript"
echo " -> Debian-basiertes System (apt) erkannt. Prüfe Paketabhängigkeiten..." else
echo " -> ghostscript (gs) ist bereits installiert ($(gs --version | head -n 1))."
INSTALLED_PACKAGES="$INSTALLED_PACKAGES ghostscript"
fi
# Biber-Prüfung # Falls Pakete fehlen, gebündelt mit einmaligem apt-get update installieren
if ! command -v biber >/dev/null 2>&1; then if [ -n "$APT_PACKAGES" ]; then
echo " -> biber fehlt und wird vorgemerkt." echo "Installiere fehlende Systemkomponenten:$APT_PACKAGES..."
APT_PACKAGES="$APT_PACKAGES biber" sudo apt-get update && sudo apt-get install -y $APT_PACKAGES
else else
# Gefangen mit || true / Klammern, um Fehler bei Auslese unter set -e zu blockieren # Formatierung: Entfernt führende Leerzeichen und ersetzt verbleibende durch Kommata
BIBER_VER=$((biber --version 2>/dev/null || echo "Version unbekannt") | head -n 1) CLEAN_LIST=$(echo $INSTALLED_PACKAGES | sed 's/ /, /g')
echo " -> biber ist bereits installiert ($BIBER_VER)." echo " -> Alle notwendigen Systemkomponenten ($CLEAN_LIST) sind bereits installiert!"
INSTALLED_PACKAGES="$INSTALLED_PACKAGES biber" fi
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 ""
echo "=== Speicherplatz-Optimierung ===" 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 if [[ "$response" =~ ^[jJ][aA]?$ || "$response" = "j" ]]; then
echo "Lösche alte Backups..." echo "Lösche alte Backups..."
$TLMGR backup --clean=0 --all $TLMGR backup --clean=0 --all
else else
echo "Backups wurden beibehalten." echo "Backups wurden beibehalten."
fi fi
echo "=== Fertig! ===" echo "=== Fertig! ==="
echo "Reminder: Please update pull/push the ~/gitea/scripts : scripts.git repository!"