UPD texlive_update script, spell check, beautify

Dieser Commit ist enthalten in:
tom
2026-09-18 13:48:51 +02:00
Ursprung 55e539339f
Commit 99dad59c86
+42 -43
Datei anzeigen
@@ -6,7 +6,8 @@ set -e # Bricht bei Fehlern sofort ab
# spell:ignore gitea imakeidx infraonly isbn koma latexmk ltablex luatexbase marginnote mathtools # spell:ignore gitea imakeidx infraonly isbn koma latexmk ltablex luatexbase marginnote mathtools
# spell:ignore microtype ncctools newpx newtx newunicodechar nextpage parskip pdfcol pdflscape pdfpages # spell:ignore microtype ncctools newpx newtx newunicodechar nextpage parskip pdfcol pdflscape pdfpages
# spell:ignore pgfplots pict setspace sidecap siunitx stix subfigure tcolorbox tikzfill titlesec # spell:ignore pgfplots pict setspace sidecap siunitx stix subfigure tcolorbox tikzfill titlesec
# spell:ignore trimspaces unicode upquote vmargin wrapfig xcharter xltabular xpatch xstring # spell:ignore trimspaces unicode upquote vmargin wrapfig xcharter xltabular xpatch xstring xecjk
# spell:ignore ctan niranjan netcologne multirow texlive noconfirm pacman tlnet tlpdb tlpkg
TLMGR=$(which tlmgr) TLMGR=$(which tlmgr)
TEXHASH=$(which texhash) TEXHASH=$(which texhash)
@@ -18,9 +19,9 @@ echo "=== Starte optimierte LaTeX-Konfiguration ==="
# Liste von zuverlässigen Spiegelservern (Der zweite ist der automatische CTAN-Verteiler) # Liste von zuverlässigen Spiegelservern (Der zweite ist der automatische CTAN-Verteiler)
DOMAINS=( DOMAINS=(
"at.ctan.niranjan.co" "at.ctan.niranjan.co"
"mirror.ctan.org" "mirror.ctan.org"
"tu-chemnitz.de" "tu-chemnitz.de"
"netcologne.de" "netcologne.de"
"mirror.netcologne.de/tex-archive" "mirror.netcologne.de/tex-archive"
) )
@@ -33,45 +34,45 @@ ACTIVE_SERVER=""
echo "Aktualisiere tlmgr und alle installierten Pakete..." echo "Aktualisiere tlmgr und alle installierten Pakete..."
for DOMAIN in "${DOMAINS[@]}"; do for DOMAIN in "${DOMAINS[@]}"; do
# Hier bauen wir das Protokoll und den Pflichtpfad fehlerfrei zusammen # Hier bauen wir das Protokoll und den Pflichtpfad fehlerfrei zusammen
SERVER="https://${DOMAIN}${PATH_SUFFIX}" SERVER="https://${DOMAIN}${PATH_SUFFIX}"
# Sonderfall für den Haupt-CTAN-Server, da dieser manchmal kein https erzwingt # Sonderfall für den Haupt-CTAN-Server, da dieser manchmal kein https erzwingt
if [[ "$DOMAIN" == "mirror.ctan.org" ]]; then if [[ "$DOMAIN" == "mirror.ctan.org" ]]; then
SERVER="http://${DOMAIN}${PATH_SUFFIX}" SERVER="http://${DOMAIN}${PATH_SUFFIX}"
fi fi
echo "Versuche Verbindung zu Spiegelserver: $SERVER" echo "Versuche Verbindung zu Spiegelserver: $SERVER"
# Sende eine schnelle Anfrage an die MD5-Datenbank des Servers. # Sende eine schnelle Anfrage an die MD5-Datenbank des Servers.
# --connect-timeout 3: Bricht nach 3 Sekunden ab, falls der Server nicht reagiert. # --connect-timeout 3: Bricht nach 3 Sekunden ab, falls der Server nicht reagiert.
# --max-time 5: Der gesamte Check darf maximal 5 Sekunden dauern. # --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 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..." echo "--> Server online. Starte TeX Live Update über $SERVER..."
# Da wir wissen, dass der Server da ist, führen wir das eigentliche Update aus # Da wir wissen, dass der Server da ist, führen wir das eigentliche Update aus
if $TLMGR update --repository "$SERVER" --self --all; then if $TLMGR update --repository "$SERVER" --self --all; then
echo "--> Update erfolgreich durchgeführt!" echo "--> Update erfolgreich durchgeführt!"
UPDATE_SUCCESS=true UPDATE_SUCCESS=true
ACTIVE_SERVER="$SERVER" ACTIVE_SERVER="$SERVER"
break break
fi fi
else else
echo "⚠️ Warnung: Server reagiert nicht schnell genug (Timeout) oder ist offline. Versuche nächsten..." echo "⚠️ Warnung: Server reagiert nicht schnell genug (Timeout) oder ist offline. Versuche nächsten..."
fi fi
done done
if [ "$UPDATE_SUCCESS" = false ]; then if [ "$UPDATE_SUCCESS" = false ]; then
echo "❌ ERROR: Alle TeX Live Spiegelserver sind offline oder es gibt keine Internetverbindung." >&2 echo "❌ ERROR: Alle TeX Live Spiegelserver sind offline oder es gibt keine Internetverbindung." >&2
exit 1 exit 1
fi fi
# ============================================================================== # ==============================================================================
# 2. Nur deinstallieren, falls überhaupt vorhanden # 2. Nur deinstallieren, falls überhaupt vorhanden
# Nutzen den ermittelten ACTIVE_SERVER, um erneute Verbindungsfehler zu vermeiden # Nutzen den ermittelten ACTIVE_SERVER, um erneute Verbindungsfehler zu vermeiden
if $TLMGR info --repository "$ACTIVE_SERVER" texliveonfly | grep -q "installed: Yes"; then if $TLMGR info --repository "$ACTIVE_SERVER" texliveonfly | grep -q "installed: Yes"; then
echo "Deinstalliere veraltetes texliveonfly..." echo "Deinstalliere veraltetes texliveonfly..."
$TLMGR remove --repository "$ACTIVE_SERVER" texliveonfly $TLMGR remove --repository "$ACTIVE_SERVER" texliveonfly
fi fi
# 3. ALLE Pakete gebündelt in EINEM Rutsch installieren (only scheme-minimal installed) # 3. ALLE Pakete gebündelt in EINEM Rutsch installieren (only scheme-minimal installed)
@@ -165,16 +166,14 @@ echo "Deinstalliere unerwünschte LaTeX-Pakete..."
PACKETS=("truncate") PACKETS=("truncate")
for packet in "${PACKETS[@]}"; do for packet in "${PACKETS[@]}"; do
if tlmgr info "$packet" --only-installed >/dev/null 2>&1; then if tlmgr info "$packet" --only-installed >/dev/null 2>&1; then
echo "Lösche Paket: $packet..." echo "Lösche Paket: $packet..."
tlmgr remove "$packet" || true tlmgr remove "$packet" || true
else else
echo "Paket '$packet' ist nicht installiert oder wurde bereits gelöscht." echo "Paket '$packet' ist nicht installiert oder wurde bereits gelöscht."
fi fi
done done
# extdash (in ncctools) \
# 4. Datenbank-Refresh (tlmgr install macht das oft automatisch, sicherheitshalber am Ende einmal) # 4. Datenbank-Refresh (tlmgr install macht das oft automatisch, sicherheitshalber am Ende einmal)
echo "Aktualisiere LaTeX-Dateidatenbank..." echo "Aktualisiere LaTeX-Dateidatenbank..."
$TEXHASH $TEXHASH
@@ -225,10 +224,10 @@ echo ""
echo "=== Speicherplatz-Optimierung ===" echo "=== Speicherplatz-Optimierung ==="
read -p "Möchtest du alle alten tlmgr-Paktebackups 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! ==="