#!/usr/bin/env bash # Installiert Notarius in eine lokale virtuelle Umgebung (.venv) und richtet # einen Menü-Eintrag im Anwendungsmenü ein. Setzt voraus, dass ffmpeg, pactl # und eine funktionierende CUDA-Umgebung bereits auf dem System vorhanden sind # (siehe README.md). set -euo pipefail PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" VENV_DIR="$PROJECT_DIR/.venv" # whisperx zieht (über faster-whisper) eine exakt gepinnte ctranslate2-Version, # für die es auf ganz neuen Python-Versionen (3.13/3.14 - z.B. Fedoras aktueller # Standard-python3) noch keine Wheels gibt. Deshalb wird hier gezielt nach einer # bekannt kompatiblen Version gesucht, statt blind "python3" zu verwenden. find_compatible_python() { if [[ -n "${PYTHON_BIN:-}" ]]; then echo "$PYTHON_BIN" return fi for candidate in python3.12 python3.11 python3.10; do if command -v "$candidate" &>/dev/null; then echo "$candidate" return fi done return 1 } # Prüft, ob eine bestehende .venv mit einer der bekannt kompatiblen Versionen läuft. venv_is_compatible() { local venv_python="$VENV_DIR/bin/python3" [[ -x "$venv_python" ]] || return 1 local version version="$("$venv_python" -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')" [[ "$version" == "3.10" || "$version" == "3.11" || "$version" == "3.12" ]] } if [[ -d "$VENV_DIR" ]] && venv_is_compatible; then echo "Verwende bestehende virtuelle Umgebung: $VENV_DIR" else if [[ -d "$VENV_DIR" ]]; then echo "Bestehende .venv nutzt eine mit whisperx inkompatible Python-Version, wird neu angelegt..." rm -rf "$VENV_DIR" fi if ! PYTHON_BIN="$(find_compatible_python)"; then cat >&2 <<'EOF' Kein kompatibler Python-Interpreter (3.10/3.11/3.12) gefunden. whisperx benötigt (über faster-whisper) ctranslate2 in einer Version, für die es auf neueren Python-Versionen (3.13/3.14) noch keine Wheels gibt. Bitte auf Fedora nachinstallieren, z.B.: sudo dnf install python3.12 Danach install.sh erneut ausführen, oder gezielt vorgeben mit: PYTHON_BIN=python3.12 ./install.sh EOF exit 1 fi echo "Erstelle virtuelle Umgebung mit $PYTHON_BIN ($("$PYTHON_BIN" --version)): $VENV_DIR" "$PYTHON_BIN" -m venv "$VENV_DIR" fi echo "Installiere Notarius und Python-Abhängigkeiten..." "$VENV_DIR/bin/pip" install --upgrade pip --quiet "$VENV_DIR/bin/pip" install -e "$PROJECT_DIR" echo "Richte Menü-Eintrag ein..." "$VENV_DIR/bin/notarius-install-launcher" cat <