Update texlive_update, install beamer class
Dieser Commit ist enthalten in:
+44
-64
@@ -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,74 +92,64 @@ $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"
|
|
||||||
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."
|
echo " -> biber fehlt und wird vorgemerkt."
|
||||||
APT_PACKAGES="$APT_PACKAGES biber"
|
APT_PACKAGES="$APT_PACKAGES biber"
|
||||||
else
|
else
|
||||||
# Gefangen mit || true / Klammern, um Fehler bei Auslese unter set -e zu blockieren
|
echo " -> biber ist bereits installiert ($(biber --version | head -n 1))."
|
||||||
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"
|
INSTALLED_PACKAGES="$INSTALLED_PACKAGES biber"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Ghostscript-Prüfung
|
if ! command -v gs >/dev/null 2>&1; then
|
||||||
if ! command -v gs >/dev/null 2>&1; then
|
|
||||||
echo " -> ghostscript (gs) fehlt und wird vorgemerkt."
|
echo " -> ghostscript (gs) fehlt und wird vorgemerkt."
|
||||||
APT_PACKAGES="$APT_PACKAGES ghostscript"
|
APT_PACKAGES="$APT_PACKAGES ghostscript"
|
||||||
else
|
else
|
||||||
GS_VER=$(gs --version 2>/dev/null | head -n 1)
|
echo " -> ghostscript (gs) ist bereits installiert ($(gs --version | head -n 1))."
|
||||||
echo " -> ghostscript (gs) ist bereits installiert ($GS_VER)."
|
|
||||||
INSTALLED_PACKAGES="$INSTALLED_PACKAGES ghostscript"
|
INSTALLED_PACKAGES="$INSTALLED_PACKAGES ghostscript"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Falls Pakete fehlen, gebündelt installieren
|
# Falls Pakete fehlen, gebündelt mit einmaligem apt-get update installieren
|
||||||
if [ -n "$APT_PACKAGES" ]; then
|
if [ -n "$APT_PACKAGES" ]; then
|
||||||
echo "Installiere fehlende Systemkomponenten:$APT_PACKAGES..."
|
echo "Installiere fehlende Systemkomponenten:$APT_PACKAGES..."
|
||||||
sudo apt-get update && sudo apt-get install -y $APT_PACKAGES
|
sudo apt-get update && sudo apt-get install -y $APT_PACKAGES
|
||||||
else
|
else
|
||||||
CLEAN_LIST=$(echo "$INSTALLED_PACKAGES" | sed 's/^[[:space:]]*//; s/[[:space:]]/, /g')
|
# 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!"
|
echo " -> Alle notwendigen Systemkomponenten ($CLEAN_LIST) sind bereits installiert!"
|
||||||
fi
|
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
|
||||||
@@ -179,3 +158,4 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "=== Fertig! ==="
|
echo "=== Fertig! ==="
|
||||||
|
echo "Reminder: Please update pull/push the ~/gitea/scripts : scripts.git repository!"
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren