📚 Improved 'backend/setup.sh' for better code organization & readability
This commit is contained in:
parent
7c30ca2188
commit
5be81a5a83
104
backend/setup.sh
104
backend/setup.sh
@ -952,6 +952,7 @@ install_python_packages() {
|
|||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
warning "⚠️ Direkte Installation fehlgeschlagen oder Timeout - verwende minimale Installation"
|
warning "⚠️ Direkte Installation fehlgeschlagen oder Timeout - verwende minimale Installation"
|
||||||
|
debug "requirements.txt Installation nach 600s abgebrochen"
|
||||||
|
|
||||||
# Strategie 2: Nur essenzielle Pakete (timeout-gesichert)
|
# Strategie 2: Nur essenzielle Pakete (timeout-gesichert)
|
||||||
progress "Installiere nur essenzielle Flask-Komponenten..."
|
progress "Installiere nur essenzielle Flask-Komponenten..."
|
||||||
@ -978,77 +979,60 @@ install_python_packages() {
|
|||||||
|
|
||||||
if [ $installed_count -eq 0 ]; then
|
if [ $installed_count -eq 0 ]; then
|
||||||
warning "⚠️ Keine Python-Pakete konnten installiert werden"
|
warning "⚠️ Keine Python-Pakete konnten installiert werden"
|
||||||
warning "⚠️ System läuft möglicherweise mit bereits installierten Paketen"
|
warning "⚠️ Überspringe Python-Pakete Installation - verwende System-Pakete"
|
||||||
info " → Manuell: pip3 install --break-system-packages Flask requests"
|
|
||||||
|
# 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
|
else
|
||||||
success "✅ $installed_count von ${#essential_deps[@]} essenziellen Paketen installiert"
|
success "✅ $installed_count von ${#essential_deps[@]} essenziellen Paketen installiert"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Umfassende Validierung
|
# Schnelle Validierung nur der essenziellen Pakete (timeout-gesichert)
|
||||||
progress "Validiere kritische Python-Abhängigkeiten..."
|
progress "Validiere essenzielle Python-Module..."
|
||||||
|
|
||||||
# Erstelle Validierungs-Skript
|
local essential_modules=("flask" "requests")
|
||||||
cat > /tmp/validate_python.py << 'EOF'
|
local validation_success=true
|
||||||
#!/usr/bin/env python3
|
|
||||||
import sys
|
|
||||||
import importlib
|
|
||||||
|
|
||||||
required_modules = [
|
for module in "${essential_modules[@]}"; do
|
||||||
('flask', 'Flask'),
|
if timeout 10 python3 -c "import $module; print(f'✅ $module verfügbar')" 2>/dev/null; then
|
||||||
('werkzeug', 'Werkzeug'),
|
debug "$module erfolgreich importiert"
|
||||||
('jinja2', 'Jinja2'),
|
else
|
||||||
('sqlalchemy', 'SQLAlchemy'),
|
warning "⚠️ $module nicht verfügbar"
|
||||||
('bcrypt', 'bcrypt'),
|
validation_success=false
|
||||||
('cryptography', 'cryptography'),
|
fi
|
||||||
('requests', 'requests'),
|
done
|
||||||
('psutil', 'psutil'),
|
|
||||||
('flask_login', 'Flask-Login'),
|
|
||||||
('flask_wtf', 'Flask-WTF'),
|
|
||||||
('wtforms', 'WTForms'),
|
|
||||||
('itsdangerous', 'itsdangerous'),
|
|
||||||
('markupsafe', 'MarkupSafe'),
|
|
||||||
('click', 'click')
|
|
||||||
]
|
|
||||||
|
|
||||||
failed_imports = []
|
if [ "$validation_success" = true ]; then
|
||||||
successful_imports = []
|
success "✅ Essenzielle Python-Module verfügbar"
|
||||||
|
|
||||||
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"
|
|
||||||
else
|
else
|
||||||
warning "⚠️ Einige Python-Abhängigkeiten fehlen - versuche Reparatur..."
|
warning "⚠️ Einige essenzielle Module fehlen"
|
||||||
|
info " → System funktioniert möglicherweise trotzdem"
|
||||||
# Repair-Versuch
|
info " → Fehlende Pakete: pip3 install --break-system-packages Flask requests"
|
||||||
retry_command "python3 -m pip install --break-system-packages --upgrade --force-reinstall Flask Werkzeug SQLAlchemy bcrypt" "Critical Package Repair"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -f /tmp/validate_python.py
|
log "✅ Timeout-gesicherte Python-Pakete Installation abgeschlossen"
|
||||||
|
debug "Python-Installation ohne hängende Prozesse beendet"
|
||||||
log "✅ Python-Pakete Installation abgeschlossen"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# =========================== ROBUSTE NODE.JS INSTALLATION ===========================
|
# =========================== ROBUSTE NODE.JS INSTALLATION ===========================
|
||||||
|
Loading…
x
Reference in New Issue
Block a user