Files
2026-07-01 21:06:39 +02:00

86 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.