Refactor: optimize package installation and platform detection
Dieser Commit ist enthalten in:
+27
-10
@@ -1,6 +1,12 @@
|
||||
#!/bin/bash
|
||||
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)
|
||||
TEXHASH=$(which texhash)
|
||||
|
||||
@@ -17,6 +23,7 @@ if $TLMGR info texliveonfly | grep -q "installed: Yes"; then
|
||||
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 \
|
||||
background \
|
||||
@@ -61,10 +68,12 @@ $TLMGR install \
|
||||
mathtools \
|
||||
microtype \
|
||||
minted \
|
||||
multirow \
|
||||
ncctools \
|
||||
newpx \
|
||||
newtx \
|
||||
newunicodechar \
|
||||
nextpage \
|
||||
ocr-b \
|
||||
parskip \
|
||||
pdfcol \
|
||||
@@ -72,11 +81,10 @@ $TLMGR install \
|
||||
pdfpages \
|
||||
pgf \
|
||||
pgfplots \
|
||||
physics \
|
||||
pict2e \
|
||||
ragged2e \
|
||||
scheme-basic \
|
||||
scheme-infraonly \
|
||||
scheme-minimal \
|
||||
setspace \
|
||||
sidecap \
|
||||
siunitx \
|
||||
@@ -120,12 +128,12 @@ $TEXHASH
|
||||
echo "Überprüfe Linux-Systemkomponenten..."
|
||||
|
||||
# Liste der zu installierenden Apt-Pakete
|
||||
APT_PACKAGES=""
|
||||
SYSTEM_PACKAGES=""
|
||||
INSTALLED_PACKAGES=""
|
||||
|
||||
if ! command -v biber >/dev/null 2>&1; then
|
||||
echo " -> biber fehlt und wird vorgemerkt."
|
||||
APT_PACKAGES="$APT_PACKAGES biber"
|
||||
SYSTEM_PACKAGES="$SYSTEM_PACKAGES biber"
|
||||
else
|
||||
echo " -> biber ist bereits installiert ($(biber --version | head -n 1))."
|
||||
INSTALLED_PACKAGES="$INSTALLED_PACKAGES biber"
|
||||
@@ -133,16 +141,25 @@ fi
|
||||
|
||||
if ! command -v gs >/dev/null 2>&1; then
|
||||
echo " -> ghostscript (gs) fehlt und wird vorgemerkt."
|
||||
APT_PACKAGES="$APT_PACKAGES ghostscript"
|
||||
SYSTEM_PACKAGES="$SYSTEM_PACKAGES ghostscript"
|
||||
else
|
||||
echo " -> ghostscript (gs) ist bereits installiert ($(gs --version | head -n 1))."
|
||||
INSTALLED_PACKAGES="$INSTALLED_PACKAGES ghostscript"
|
||||
fi
|
||||
|
||||
# Falls Pakete fehlen, gebündelt mit einmaligem apt-get update installieren
|
||||
if [ -n "$APT_PACKAGES" ]; then
|
||||
echo "Installiere fehlende Systemkomponenten:$APT_PACKAGES..."
|
||||
sudo apt-get update && sudo apt-get install -y $APT_PACKAGES
|
||||
# Paket-Installation basierend auf dem verfügbaren Paketmanager
|
||||
if [ -n "$SYSTEM_PACKAGES" ]; then
|
||||
if command -v apt-get >/dev/null 2>&1; then
|
||||
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
|
||||
# Formatierung: Entfernt führende Leerzeichen und ersetzt verbleibende durch Kommata
|
||||
CLEAN_LIST=$(echo $INSTALLED_PACKAGES | sed 's/ /, /g')
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren