From ee123f2a90b280f0b1704443d32a68300d436107 Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Sun, 26 Jul 2026 12:59:42 +0200 Subject: [PATCH] fix(install): Paketbefehl je Distribution statt stur apt Commander-Frage: "Was wenn der Unterbau nicht Debian ist?" Berechtigt - bei fehlendem Compose nannte install.sh stur `sudo apt install docker-compose-plugin`. Auf Arch, Fedora oder openSUSE ist das ein Befehl, den es nicht gibt. Erkannt wird ueber das VORHANDENE Paketwerkzeug (apt-get/dnf/yum/pacman/zypper/ apk), nicht ueber /etc/os-release: Ein Derivat kann sich anders nennen als sein Unterbau, sein Paketwerkzeug liegt aber im PATH. Findet sich keines, wird nichts behauptet. Auf der Rippy-VM gegengeprueft (Ubuntu 26.04 -> apt), unter Git Bash gegengeprueft (kein Treffer -> keine Behauptung). Dazu steht IMMER der Weg da, der auf jeder Distribution funktioniert: get.docker.com bringt das Compose-Plugin mit. Paketnamen wandern, dieses Skript nicht. README stellt jetzt oben klar, dass die Distribution gleichgueltig ist - Rippy bringt MakeMKV, HandBrake und abcde in seinen eigenen Containern mit, vom Host braucht es nur Docker und einen Kernel, der das Laufwerk sieht. Co-Authored-By: Claude Opus 5 --- README.md | 6 ++++++ install.sh | 28 +++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f3f82be..ef1fc92 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,12 @@ in Docker, komplett lokal — keine Cloud, keine Telemetrie. Du brauchst: einen **Linux-Rechner mit Docker** und ein **optisches Laufwerk**. +**Welche Distribution, ist gleichgültig** — Debian, Ubuntu, Arch, Fedora, +openSUSE, Alpine. Rippy bringt alles Nötige (MakeMKV, HandBrake, abcde) in +seinen eigenen Containern mit; vom Host braucht es nur Docker und einen Kernel, +der das Laufwerk sieht. `install.sh` erkennt das Paketwerkzeug selbst und nennt +dir den passenden Befehl, falls etwas fehlt. + ```bash git clone rippy && cd rippy sudo ./install.sh diff --git a/install.sh b/install.sh index 331e9fe..6e45dfd 100755 --- a/install.sh +++ b/install.sh @@ -47,6 +47,25 @@ problem() { PROBLEME="${PROBLEME}$1"$'\n'; rot " X $1"; } hinweis() { HINWEISE="${HINWEISE}$1"$'\n'; gelb " ! $1"; } ok() { gruen " OK $1"; } +# Welches Paketwerkzeug hat dieser Host? (Commander-Frage 26.07.2026: „Was wenn +# der Unterbau nicht Debian ist?") Vorher nannte das Skript bei fehlendem +# Compose stur `sudo apt install …` — auf Arch, Fedora oder openSUSE ist das +# schlicht falsch, und der Nutzer stand vor einem Befehl, den es nicht gibt. +# +# Erkannt wird über das VORHANDENE Werkzeug, nicht über /etc/os-release: Ein +# Derivat kann sich anders nennen als sein Unterbau, aber sein Paketwerkzeug +# liegt im PATH. Findet sich keines, wird nichts behauptet. +paket_befehl() { + if command -v apt-get >/dev/null 2>&1; then echo "sudo apt install docker-compose-plugin" + elif command -v dnf >/dev/null 2>&1; then echo "sudo dnf install docker-compose-plugin" + elif command -v yum >/dev/null 2>&1; then echo "sudo yum install docker-compose-plugin" + elif command -v pacman >/dev/null 2>&1; then echo "sudo pacman -S docker-compose" + elif command -v zypper >/dev/null 2>&1; then echo "sudo zypper install docker-compose" + elif command -v apk >/dev/null 2>&1; then echo "sudo apk add docker-cli-compose" + else echo "" + fi +} + cd "$(dirname "$0")" || exit 1 echo "======================================================================" @@ -85,7 +104,14 @@ elif command -v docker-compose >/dev/null 2>&1; then hinweis "Nur das alte docker-compose gefunden — funktioniert, ist aber veraltet." else problem "Docker Compose fehlt." - rot " Installation (Debian/Ubuntu): sudo apt install docker-compose-plugin" + PAKET_BEFEHL="$(paket_befehl)" + if [ -n "$PAKET_BEFEHL" ]; then + rot " Auf diesem System: $PAKET_BEFEHL" + fi + # Der Weg, der auf JEDER Distribution funktioniert — Dockers eigenes Skript + # bringt das Compose-Plugin mit. Steht immer da, auch wenn oben schon ein + # passender Paketbefehl genannt wurde: Paketnamen wandern, dieses Skript nicht. + rot " Überall gültig: curl -fsSL https://get.docker.com | sudo sh" fi if [ "$(id -u)" = "0" ]; then