diff --git a/deploy/venv-audit.sh b/deploy/venv-audit.sh index cef818c..97d3e40 100644 --- a/deploy/venv-audit.sh +++ b/deploy/venv-audit.sh @@ -39,14 +39,18 @@ CVES_GESAMT=0 for EINTRAG in "${VENVS[@]}"; do VENV="${EINTRAG%%:*}"; NAME="${EINTRAG##*:}" - if [ ! -x "$VENV/bin/pip" ]; then - ZEILEN+=("$NAME: venv fehlt unter $VENV — bitte prüfen") + # uv-venvs haben KEIN eigenes pip (Befund Erstlauf 17.07.) → das Audit-venv + # inspiziert deren site-packages von außen (pip --path); Dienst-venvs bleiben unberührt. + SP="$("$VENV/bin/python" -c 'import sysconfig; print(sysconfig.get_paths()["purelib"])' 2>/dev/null || true)" + if [ -z "$SP" ] || [ ! -d "$SP" ]; then + ZEILEN+=("$NAME: venv fehlt/unlesbar unter $VENV — bitte prüfen") continue fi # Veraltete Pakete (Anzahl reicht fürs Lagebild) - ALT_N="$("$VENV/bin/pip" list --outdated 2>/dev/null | tail -n +3 | grep -c '' || echo 0)" + ALT_N="$("$AUDIT_VENV/bin/pip" list --outdated --path "$SP" 2>/dev/null | tail -n +3 | grep -c '' || echo 0)" # CVE-Prüfung gegen den eingefrorenen Stand (lokale Pfade/Editables ausfiltern) - "$VENV/bin/pip" freeze 2>/dev/null | grep -vE ' @ |^-e |^#' > "$TMP/$NAME.txt" || true + "$AUDIT_VENV/bin/pip" list --format=freeze --path "$SP" 2>/dev/null \ + | grep -vE ' @ |^-e |^#' > "$TMP/$NAME.txt" || true CVE_N=0 if [ -x "$AUDIT_VENV/bin/pip-audit" ] && [ -s "$TMP/$NAME.txt" ]; then AUDIT_OUT="$("$AUDIT_VENV/bin/pip-audit" -r "$TMP/$NAME.txt" --progress-spinner off 2>&1 || true)"