Downgrade nur mit neuer Option --force
This commit is contained in:
@@ -12,8 +12,17 @@ Single-file Bash script (`ollama-update`) that updates Ollama to latest stable o
|
||||
./ollama-update --beta
|
||||
./ollama-update -b
|
||||
|
||||
# Force installation of older version (downgrade)
|
||||
./ollama-update --force
|
||||
./ollama-update -f
|
||||
|
||||
# Combine with beta channel
|
||||
./ollama-update --beta --force
|
||||
./ollama-update -b -f
|
||||
|
||||
# Show help
|
||||
./ollama-update --help
|
||||
./ollama-update -h
|
||||
```
|
||||
|
||||
## Lint / Check
|
||||
|
||||
@@ -18,6 +18,8 @@ weiter.
|
||||
./ollama-update # Stable-Channel (Standard)
|
||||
./ollama-update --beta # Beta-Channel
|
||||
./ollama-update -b # Kurzform von --beta
|
||||
./ollama-update --force # Installation älterer Version erzwingen
|
||||
./ollama-update -f # Kurzform von --force
|
||||
./ollama-update --help # Hilfe anzeigen
|
||||
./ollama-update -h
|
||||
```
|
||||
@@ -46,6 +48,9 @@ selbst durchgeführt und kann Root-Rechte erfordern (z. B. wenn per
|
||||
Ollama-Installations-Skript heruntergeladen, ausführbar gemacht und
|
||||
ausgeführt. Bei einer Beta-Installation wird `OLLAMA_VERSION` auf den
|
||||
passenden Tag gesetzt.
|
||||
7. **Downgrade-Schutz** – Ist die bereits installierte Version neuer als
|
||||
die Zielversion, bricht das Skript standardmäßig ab. Mit `--force`/`-f`
|
||||
lässt sich ein solches Downgrade dennoch erzwingen.
|
||||
7. **Ausgabe** – Vor jeder Aktion werden die ermittelten Versionen
|
||||
(lokal, stable, beta) sowie die Entscheidung (Update/Installation/
|
||||
kein Update) ausgegeben.
|
||||
@@ -66,6 +71,7 @@ Kein Update erforderlich.
|
||||
| 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`) |
|
||||
| Downgrade-Schutz | Kein Schutz | Downgrades werden blockiert, es sei denn, `--force`/`-f` wird gesetzt |
|
||||
| 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 |
|
||||
|
||||
+22
-5
@@ -11,7 +11,7 @@ PROG_NAME=$(basename "$0") || { printf 'Fehler: basename fehlgeschlagen\n' >&2;
|
||||
readonly PROG_NAME
|
||||
|
||||
usage() {
|
||||
printf 'Verwendung: %s [--beta|-b]\n' "$PROG_NAME" >&2
|
||||
printf 'Verwendung: %s [--beta|-b] [--force|-f]\n' "$PROG_NAME" >&2
|
||||
exit 2
|
||||
}
|
||||
|
||||
@@ -30,18 +30,24 @@ die() {
|
||||
}
|
||||
|
||||
parse_args() {
|
||||
local use_beta=false
|
||||
local use_beta_ref=$1
|
||||
local force_ref=$2
|
||||
local use_beta_value=false
|
||||
local force_value=false
|
||||
shift 2
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--beta|-b) use_beta=true ;;
|
||||
--beta|-b) use_beta_value=true ;;
|
||||
--force|-f) force_value=true ;;
|
||||
-h|--help) usage ;;
|
||||
*) usage ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
printf '%s\n' "$use_beta"
|
||||
printf -v "$use_beta_ref" '%s' "$use_beta_value"
|
||||
printf -v "$force_ref" '%s' "$force_value"
|
||||
}
|
||||
|
||||
get_local_version() {
|
||||
@@ -167,10 +173,11 @@ install_ollama() {
|
||||
|
||||
main() {
|
||||
local use_beta=false
|
||||
local force_downgrade=false
|
||||
local local_ver stable_ver beta_ver
|
||||
local target_ver=""
|
||||
|
||||
use_beta=$(parse_args "$@")
|
||||
parse_args use_beta force_downgrade "$@"
|
||||
check_dependencies
|
||||
|
||||
local_ver=$(get_local_version)
|
||||
@@ -233,6 +240,16 @@ main() {
|
||||
fi
|
||||
fi
|
||||
|
||||
# Downgrade-Schutz: Eine Installation älterer Version als die bereits
|
||||
# installierte nur mit --force/-f erlauben.
|
||||
if [[ -n "$local_ver" && -n "$target_ver" && "$(cmp_versions "$target_ver" "$local_ver")" == -1 ]]; then
|
||||
if [[ "$force_downgrade" != true ]]; then
|
||||
printf 'Aktuelle Version %s ist neuer als Zielversion %s. Downgrade abgebrochen (verwende --force/-f, um es trotzdem durchzuführen).\n' "$local_ver" "$target_ver" >&2
|
||||
return 0
|
||||
fi
|
||||
printf 'Downgrade wird erzwungen: %s -> %s\n' "$local_ver" "$target_ver"
|
||||
fi
|
||||
|
||||
# Bei Beta-Installation die gewünschte Version an das Installer-Skript übergeben.
|
||||
if [[ "$use_beta" == true && -n "$target_ver" && "$target_ver" != "$stable_ver" ]]; then
|
||||
install_ollama "$target_ver"
|
||||
|
||||
Reference in New Issue
Block a user