📚 Improved 'backend/setup.sh' for better code organization & readability

This commit is contained in:
Till Tomczak 2025-06-03 14:37:41 +02:00
parent 7c30ca2188
commit 5be81a5a83

View File

@ -952,6 +952,7 @@ install_python_packages() {
return 0
else
warning "⚠️ Direkte Installation fehlgeschlagen oder Timeout - verwende minimale Installation"
debug "requirements.txt Installation nach 600s abgebrochen"
# Strategie 2: Nur essenzielle Pakete (timeout-gesichert)
progress "Installiere nur essenzielle Flask-Komponenten..."
@ -978,77 +979,60 @@ install_python_packages() {
if [ $installed_count -eq 0 ]; then
warning "⚠️ Keine Python-Pakete konnten installiert werden"
warning "⚠️ System läuft möglicherweise mit bereits installierten Paketen"
info " → Manuell: pip3 install --break-system-packages Flask requests"
warning "⚠️ Überspringe Python-Pakete Installation - verwende System-Pakete"
# Strategie 3: Fallback auf System-Pakete (APT)
progress "Versuche System-Python-Pakete als Fallback..."
local system_packages=("python3-flask" "python3-requests")
local system_installed=0
for pkg in "${system_packages[@]}"; do
if timeout 60 apt-get install -y "$pkg" >/dev/null 2>&1; then
success "✅ System-Paket installiert: $pkg"
((system_installed++))
else
debug "System-Paket fehlgeschlagen: $pkg"
fi
done
if [ $system_installed -gt 0 ]; then
success "✅ Fallback auf System-Pakete erfolgreich ($system_installed installiert)"
else
warning "⚠️ Auch System-Pakete Installation fehlgeschlagen"
info " → System läuft mit vorhandenen Python-Paketen"
info " → Manuell: pip3 install --break-system-packages Flask requests"
info " → Oder: apt install python3-flask python3-requests"
fi
else
success "$installed_count von ${#essential_deps[@]} essenziellen Paketen installiert"
fi
fi
# Umfassende Validierung
progress "Validiere kritische Python-Abhängigkeiten..."
# Schnelle Validierung nur der essenziellen Pakete (timeout-gesichert)
progress "Validiere essenzielle Python-Module..."
# Erstelle Validierungs-Skript
cat > /tmp/validate_python.py << 'EOF'
#!/usr/bin/env python3
import sys
import importlib
required_modules = [
('flask', 'Flask'),
('werkzeug', 'Werkzeug'),
('jinja2', 'Jinja2'),
('sqlalchemy', 'SQLAlchemy'),
('bcrypt', 'bcrypt'),
('cryptography', 'cryptography'),
('requests', 'requests'),
('psutil', 'psutil'),
('flask_login', 'Flask-Login'),
('flask_wtf', 'Flask-WTF'),
('wtforms', 'WTForms'),
('itsdangerous', 'itsdangerous'),
('markupsafe', 'MarkupSafe'),
('click', 'click')
]
failed_imports = []
successful_imports = []
for module_name, display_name in required_modules:
try:
module = importlib.import_module(module_name)
version = getattr(module, '__version__', 'Version unbekannt')
print(f"✅ {display_name}: {version}")
successful_imports.append(display_name)
except ImportError as e:
print(f"❌ {display_name}: Import fehlgeschlagen - {e}")
failed_imports.append(display_name)
except Exception as e:
print(f"⚠️ {display_name}: Unerwarteter Fehler - {e}")
failed_imports.append(display_name)
print(f"\nErgebnis: {len(successful_imports)} erfolgreich, {len(failed_imports)} fehlgeschlagen")
if failed_imports:
print("Fehlgeschlagene Module:", ", ".join(failed_imports))
sys.exit(1)
else:
print("Alle kritischen Module erfolgreich importiert!")
sys.exit(0)
EOF
if python3 /tmp/validate_python.py; then
success "✅ Alle kritischen Python-Abhängigkeiten erfolgreich validiert"
local essential_modules=("flask" "requests")
local validation_success=true
for module in "${essential_modules[@]}"; do
if timeout 10 python3 -c "import $module; print(f'✅ $module verfügbar')" 2>/dev/null; then
debug "$module erfolgreich importiert"
else
warning "⚠️ $module nicht verfügbar"
validation_success=false
fi
done
if [ "$validation_success" = true ]; then
success "✅ Essenzielle Python-Module verfügbar"
else
warning "⚠️ Einige Python-Abhängigkeiten fehlen - versuche Reparatur..."
# Repair-Versuch
retry_command "python3 -m pip install --break-system-packages --upgrade --force-reinstall Flask Werkzeug SQLAlchemy bcrypt" "Critical Package Repair"
warning "⚠️ Einige essenzielle Module fehlen"
info " → System funktioniert möglicherweise trotzdem"
info " → Fehlende Pakete: pip3 install --break-system-packages Flask requests"
fi
rm -f /tmp/validate_python.py
log "✅ Python-Pakete Installation abgeschlossen"
log "✅ Timeout-gesicherte Python-Pakete Installation abgeschlossen"
debug "Python-Installation ohne hängende Prozesse beendet"
}
# =========================== ROBUSTE NODE.JS INSTALLATION ===========================