Downgrade nur mit neuer Option --force

This commit is contained in:
Tim
2026-07-11 21:03:48 +02:00
parent 6d47e5ec79
commit 958ed3fef7
3 changed files with 37 additions and 5 deletions
+22 -5
View File
@@ -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"