From 99dad59c86d0c55e92d3751b8dab8bb0a4dc1953 Mon Sep 17 00:00:00 2001 From: Thomas Kuschel Date: Fri, 18 Sep 2026 13:48:51 +0200 Subject: [PATCH] UPD texlive_update script, spell check, beautify --- texlive_update.sh | 85 +++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 43 deletions(-) diff --git a/texlive_update.sh b/texlive_update.sh index 366d756..97c27c3 100755 --- a/texlive_update.sh +++ b/texlive_update.sh @@ -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 microtype ncctools newpx newtx newunicodechar nextpage parskip pdfcol pdflscape pdfpages # 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) TEXHASH=$(which texhash) @@ -18,9 +19,9 @@ echo "=== Starte optimierte LaTeX-Konfiguration ===" # 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.ctan.org" + "tu-chemnitz.de" + "netcologne.de" "mirror.netcologne.de/tex-archive" ) @@ -33,45 +34,45 @@ ACTIVE_SERVER="" echo "Aktualisiere tlmgr und alle installierten Pakete..." for DOMAIN in "${DOMAINS[@]}"; do - # Hier bauen wir das Protokoll und den Pflichtpfad fehlerfrei zusammen - SERVER="https://${DOMAIN}${PATH_SUFFIX}" + # 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 + # 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 + 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 + echo "❌ ERROR: Alle TeX Live Spiegelserver sind offline oder es gibt keine Internetverbindung." >&2 + exit 1 fi # ============================================================================== # 2. Nur deinstallieren, falls überhaupt vorhanden # 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 --repository "$ACTIVE_SERVER" texliveonfly + echo "Deinstalliere veraltetes texliveonfly..." + $TLMGR remove --repository "$ACTIVE_SERVER" texliveonfly fi # 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") 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 + 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 @@ -225,10 +224,10 @@ echo "" echo "=== Speicherplatz-Optimierung ===" read -p "Möchtest du alle alten tlmgr-Paktebackups unwiderruflich löschen? (j/N): " response if [[ "$response" =~ ^[jJ][aA]?$ || "$response" = "j" ]]; then - echo "Lösche alte Backups..." - $TLMGR backup --clean=0 --all + echo "Lösche alte Backups..." + $TLMGR backup --clean=0 --all else - echo "Backups wurden beibehalten." + echo "Backups wurden beibehalten." fi echo "=== Fertig! ==="