86 lines
4.5 KiB
Markdown
86 lines
4.5 KiB
Markdown
# 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. |