Refactor: optimize package installation and platform detection

Dieser Commit ist enthalten in:
tom
2026-09-08 12:10:41 +02:00
Ursprung 4d299b1330
Commit 6a2eddc9d8
+27 -10
Datei anzeigen
@@ -1,6 +1,12 @@
#!/bin/bash #!/bin/bash
set -e # Bricht bei Fehlern sofort ab set -e # Bricht bei Fehlern sofort ab
# spell:ignore tlmgr texhash texliveonfly beamer biblatex ieee booktabs bigdelim ccicons circuitikz
# spell:ignore Ghostscript biber cleveref concmath csquotes currfile enumitem everypage extdash
# spell:ignore filehook fmtcount fontawesome fontaxes fontmfizz fontspec fontsrecommended ghostscript
# 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
TLMGR=$(which tlmgr) TLMGR=$(which tlmgr)
TEXHASH=$(which texhash) TEXHASH=$(which texhash)
@@ -17,6 +23,7 @@ if $TLMGR info texliveonfly | grep -q "installed: Yes"; then
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)
# Hinweis: scheme-basic beinhaltet bereits scheme-infraonly sowie scheme-minimal
echo "Installiere alle benötigten LaTeX-Pakete parallel/gebündelt..." echo "Installiere alle benötigten LaTeX-Pakete parallel/gebündelt..."
$TLMGR install \ $TLMGR install \
background \ background \
@@ -61,10 +68,12 @@ $TLMGR install \
mathtools \ mathtools \
microtype \ microtype \
minted \ minted \
multirow \
ncctools \ ncctools \
newpx \ newpx \
newtx \ newtx \
newunicodechar \ newunicodechar \
nextpage \
ocr-b \ ocr-b \
parskip \ parskip \
pdfcol \ pdfcol \
@@ -72,11 +81,10 @@ $TLMGR install \
pdfpages \ pdfpages \
pgf \ pgf \
pgfplots \ pgfplots \
physics \
pict2e \ pict2e \
ragged2e \ ragged2e \
scheme-basic \ scheme-basic \
scheme-infraonly \
scheme-minimal \
setspace \ setspace \
sidecap \ sidecap \
siunitx \ siunitx \
@@ -120,12 +128,12 @@ $TEXHASH
echo "Überprüfe Linux-Systemkomponenten..." echo "Überprüfe Linux-Systemkomponenten..."
# Liste der zu installierenden Apt-Pakete # Liste der zu installierenden Apt-Pakete
APT_PACKAGES="" SYSTEM_PACKAGES=""
INSTALLED_PACKAGES="" INSTALLED_PACKAGES=""
if ! command -v biber >/dev/null 2>&1; then 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" SYSTEM_PACKAGES="$SYSTEM_PACKAGES biber"
else else
echo " -> biber ist bereits installiert ($(biber --version | head -n 1))." echo " -> biber ist bereits installiert ($(biber --version | head -n 1))."
INSTALLED_PACKAGES="$INSTALLED_PACKAGES biber" INSTALLED_PACKAGES="$INSTALLED_PACKAGES biber"
@@ -133,16 +141,25 @@ fi
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" SYSTEM_PACKAGES="$SYSTEM_PACKAGES ghostscript"
else else
echo " -> ghostscript (gs) ist bereits installiert ($(gs --version | head -n 1))." echo " -> ghostscript (gs) ist bereits installiert ($(gs --version | head -n 1))."
INSTALLED_PACKAGES="$INSTALLED_PACKAGES ghostscript" INSTALLED_PACKAGES="$INSTALLED_PACKAGES ghostscript"
fi fi
# Falls Pakete fehlen, gebündelt mit einmaligem apt-get update installieren # Paket-Installation basierend auf dem verfügbaren Paketmanager
if [ -n "$APT_PACKAGES" ]; then if [ -n "$SYSTEM_PACKAGES" ]; then
echo "Installiere fehlende Systemkomponenten:$APT_PACKAGES..." if command -v apt-get >/dev/null 2>&1; then
sudo apt-get update && sudo apt-get install -y $APT_PACKAGES echo "Debian/Ubuntu-System erkannt. Installiere:$SYSTEM_PACKAGES..."
sudo apt-get update && sudo apt-get install -y $SYSTEM_PACKAGES
elif command -v pacman >/dev/null 2>&1; then
echo "Arch Linux erkannt. Installiere:$SYSTEM_PACKAGES..."
# Arch nutzt andere Paketnamen für ghostscript (ghostscript) und biber (biber)
sudo pacman -Sy --noconfirm $SYSTEM_PACKAGES
else
echo "⚠️ Unbekanntes System (kein apt oder pacman gefunden)."
echo "Bitte installiere die folgenden Pakete manuell: $SYSTEM_PACKAGES"
fi
else else
# Formatierung: Entfernt führende Leerzeichen und ersetzt verbleibende durch Kommata # Formatierung: Entfernt führende Leerzeichen und ersetzt verbleibende durch Kommata
CLEAN_LIST=$(echo $INSTALLED_PACKAGES | sed 's/ /, /g') CLEAN_LIST=$(echo $INSTALLED_PACKAGES | sed 's/ /, /g')