UPD texlive_update script, spell check, beautify
Dieser Commit ist enthalten in:
+40
-41
@@ -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! ==="
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren