Files

82 lines
2.8 KiB
Bash
Executable File

#!/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 <<EOF
Installation abgeschlossen.
Notarius ist jetzt im Anwendungsmenü zu finden, oder direkt startbar mit:
$VENV_DIR/bin/notarius
Autostart, API-Key und Modellwahl lassen sich im Tab "Settings" konfigurieren.
Zum Entfernen: ./uninstall.sh
EOF