# ollama-update Ein Bash-Skript zur gezielten Aktualisierung (oder Erstinstallation) von [Ollama](https://ollama.com). Es prüft die lokal installierte Version, ermittelt die aktuelle stabile und optional die aktuelle Beta-Version über die GitHub-API und führt nur dann eine Installation durch, wenn tatsächlich ein Update verfügbar (oder gar keine Installation vorhanden) ist. Das Skript nutzt das offizielle Installations-Skript von Ollama (`https://ollama.com/install.sh`) als Backend und reicht bei Bedarf die gewünschte Version über die Umgebungsvariable `OLLAMA_VERSION` an dieses weiter. ## Verwendung ```bash ./ollama-update # Stable-Channel (Standard) ./ollama-update --beta # Beta-Channel ./ollama-update -b # Kurzform von --beta ./ollama-update --help # Hilfe anzeigen ./ollama-update -h ``` Das Skript benötigt keine Root-Rechte für die Versionsermittlung. Die tatsächliche Installation wird jedoch vom Ollama-Installations-Skript selbst durchgeführt und kann Root-Rechte erfordern (z. B. wenn per `systemctl` ein Service eingerichtet wird). ## Was das Skript tut 1. **Abhängigkeiten prüfen** – Es stellt sicher, dass `curl`, `grep`, `sed`, `sort`, `mktemp` und `chmod` verfügbar sind. 2. **Lokale Version ermitteln** – Über `ollama --version` wird die installierte Version gelesen (falls vorhanden). 3. **Stable-Version ermitteln** – Per `GET /repos/ollama/ollama/releases/latest` wird die aktuelle stabile Version vom GitHub-API abgefragt. 4. **Optional: Beta-Version ermitteln** – Bei Aufruf mit `--beta`/`-b` wird zusätzlich `GET /repos/ollama/ollama/releases?per_page=1` abgefragt, um die jüngste (ggf. als Pre-Release markierte) Version zu finden. 5. **Versionsvergleich** – Ein eigener SemVer-ähnlicher Vergleich (`cmp_versions`) ermittelt, ob ein Update vorliegt. Suffixe (z. B. `-rc1`) werden alphabetisch berücksichtigt. 6. **Installation nur bei Bedarf** – Wenn keine Installation vorhanden ist oder eine neuere Version verfügbar ist, wird das offizielle Ollama-Installations-Skript heruntergeladen, ausführbar gemacht und ausgeführt. Bei einer Beta-Installation wird `OLLAMA_VERSION` auf den passenden Tag gesetzt. 7. **Ausgabe** – Vor jeder Aktion werden die ermittelten Versionen (lokal, stable, beta) sowie die Entscheidung (Update/Installation/ kein Update) ausgegeben. Beispielausgabe: ``` Lokal: 0.5.7 Stable: 0.5.7 Beta: keine neuere Beta verfuegbar Kein Update erforderlich. ``` ## Wesentliche Unterschiede zum Originalskript (`ollama.com/install.sh`) | Aspekt | Originalskript | `ollama-update` | | ------------------------------------- | --------------------------------------- | ----------------------------------------------------------------------- | | Installationsverhalten | Führt immer eine Installation durch | Installiert nur, wenn kein Ollama vorhanden oder ein Update verfügbar ist | | Versionsprüfung | Keine | Vergleicht lokale Version mit Stable/Beta aus der GitHub-API | | Auswahl des Channels | Nur Stable | Stable oder Beta (`--beta`/`-b`) | | Ausgabe vor der Installation | Nur Statusmeldungen des Installers | Zeigt lokal/stable/beta-Versionen und die getroffene Entscheidung | | Versions-Pinning | Nicht vorgesehen | Übergibt `OLLAMA_VERSION` an den Installer, wenn eine konkrete Version gewünscht ist | | Abhängigkeitsprüfung | Fehlt | Prüft benötigte Kommandos (`curl`, `grep`, `sed`, …) vorab | | Robustheit | Standard-Bash | `set -euo pipefail`, `nullglob`, leere API-Antworten und Downloads werden abgefangen, temporäre Datei wird per `trap` aufgeräumt | | Hilfe / Argumente | Nicht vorhanden | `--help`/`-h` und klare Fehlerausgaben | ## Voraussetzungen - Linux/macOS mit Bash - `curl`, `grep`, `sed`, `sort`, `mktemp`, `chmod` (alle auf Standard-Distributionen vorhanden) - `ollama` muss für die Versionsermittlung installiert sein – das Skript funktioniert aber auch, wenn es fehlt, und installiert dann die aktuelle Stable-Version ## Lizenz Siehe Repository.