ADD check if server is online, else take another one of the supported list

Dieser Commit ist enthalten in:
tom
2026-09-14 14:20:35 +02:00
Ursprung 74050a4784
Commit 944c81c6b5
2 geänderte Dateien mit 273 neuen und 5 gelöschten Zeilen
+57 -5
Datei anzeigen
@@ -12,20 +12,72 @@ TEXHASH=$(which texhash)
echo "=== Starte optimierte LaTeX-Konfiguration ==="
# 1. Optionale Updates (NUR aktivieren wenn zwingend nötig, sonst auskommentieren)
# ==============================================================================
# AUTOMATISCHE SERVER-FALLBACK LOGIK
# ==============================================================================
# Liste von zuverlässigen Spiegelservern (Der zweite ist der automatische CTAN-Verteiler)
DOMAINS=(
"at.ctan.niranjan.co"
"mirror.ctan.org"
"tu-chemnitz.de"
"netcologne.de"
"mirror.netcologne.de/tex-archive"
)
# Das ist der exakte Pfad, den TeX Live zwingend benötigt
PATH_SUFFIX="/systems/texlive/tlnet"
UPDATE_SUCCESS=false
ACTIVE_SERVER=""
echo "Aktualisiere tlmgr und alle installierten Pakete..."
$TLMGR update --self --all
for DOMAIN in "${DOMAINS[@]}"; do
# Hier bauen wir das Protokoll und den Pflichtpfad fehlerfrei zusammen
SERVER="https://${DOMAIN}${PATH_SUFFIX}"
# Sonderfall für den Haupt-CTAN-Server, da dieser manchmal kein https erzwingt
if [[ "$DOMAIN" == "mirror.ctan.org" ]]; then
SERVER="http://${DOMAIN}${PATH_SUFFIX}"
fi
echo "Versuche Verbindung zu Spiegelserver: $SERVER"
# Sende eine schnelle Anfrage an die MD5-Datenbank des Servers.
# --connect-timeout 3: Bricht nach 3 Sekunden ab, falls der Server nicht reagiert.
# --max-time 5: Der gesamte Check darf maximal 5 Sekunden dauern.
if curl --output /dev/null --silent --head --fail --connect-timeout 3 --max-time 5 "${SERVER}/tlpkg/texlive.tlpdb.md5"; then
echo "--> Server online. Starte TeX Live Update über $SERVER..."
# Da wir wissen, dass der Server da ist, führen wir das eigentliche Update aus
if $TLMGR update --repository "$SERVER" --self --all; then
echo "--> Update erfolgreich durchgeführt!"
UPDATE_SUCCESS=true
ACTIVE_SERVER="$SERVER"
break
fi
else
echo "⚠️ Warnung: Server reagiert nicht schnell genug (Timeout) oder ist offline. Versuche nächsten..."
fi
done
if [ "$UPDATE_SUCCESS" = false ]; then
echo "❌ ERROR: Alle TeX Live Spiegelserver sind offline oder es gibt keine Internetverbindung." >&2
exit 1
fi
# ==============================================================================
# 2. Nur deinstallieren, falls überhaupt vorhanden
if $TLMGR info texliveonfly | grep -q "installed: Yes"; then
# Nutzen den ermittelten ACTIVE_SERVER, um erneute Verbindungsfehler zu vermeiden
if $TLMGR info --repository "$ACTIVE_SERVER" texliveonfly | grep -q "installed: Yes"; then
echo "Deinstalliere veraltetes texliveonfly..."
$TLMGR remove texliveonfly
$TLMGR remove --repository "$ACTIVE_SERVER" texliveonfly
fi
# 3. ALLE Pakete gebündelt in EINEM Rutsch installieren (only scheme-minimal installed)
# Hinweis: scheme-basic beinhaltet bereits scheme-infraonly sowie scheme-minimal
echo "Installiere alle benötigten LaTeX-Pakete parallel/gebündelt..."
$TLMGR install \
$TLMGR install --repository "$ACTIVE_SERVER" \
background \
beamer \
biblatex \