Upgrade und Rollback
Ein Upgrade ersetzt das Binary; es migriert Sie nicht auf ein anderes Produkt. Das Data-Directory, der Audit-Signierschlüssel und das TLS-Material bleiben an ihrem Platz, und die Engine wendet neue Schema-Migrationen beim Boot selbst an. Diese Seite führt Betreiber vom „Soll ich dieses Release einspielen?“ bis zum „Ich brauche die vorige Version zurück“.
Welcher Upgrade-Pfad ist Ihrer?
Abschnitt betitelt „Welcher Upgrade-Pfad ist Ihrer?“Es gibt vier Wege, das Binary vorwärtszubringen; alle führen zum selben Ziel.
| Ihre Installation | Pfad |
|---|---|
| Ein deb-, rpm-, apk- oder AUR-Paket | Der Paketmanager. Aus einem Paket installieren |
| Binary auf einem Host, systemd (nicht aus einem Paket) | olivares upgrade — diese Seite |
| Ein Docker- oder Podman-Container | docker compose exec olivares olivares upgrade, danach den Container neu erstellen. Das Image kann sich nicht ändern; daher wird das Release im Datenvolume abgelegt (ota/ im Datenverzeichnis), und jeder Start des Image-Binary startet es, solange es neuer ist als das Image oder dieselbe Version anders gebaut ist. Wenn Sie ota/ entfernen, kehrt der Container zum Binary seines Images zurück. Docker und Compose enthält die Befehle. |
| Kubernetes / Helm | Setzen Sie das Image und lassen Sie den Operator den Rollout durchführen. Führen Sie olivares upgrade nicht in einem Pod aus: Die Bereitstellung ist deklarativ, und der nächste Reconcile würde die Änderung rückgängig machen. |
Vor allem anderen: den Plan lesen
Abschnitt betitelt „Vor allem anderen: den Plan lesen“--check lädt das Channel-Manifest herunter, verifiziert es, vergleicht es mit der
installierten Version und gibt aus, was geschehen würde. Es wird nichts ausgetauscht.
olivares upgrade --checkDie Ausgabe nennt die installierte und die verfügbare Version sowie eine Statuszeile:
up to date, upgrade available,
DOWNGRADE (blocked unless --force-rollback) oder UNKNOWN. Lesen Sie die
Statuszeile, statt die beiden Versionsnummern selbst zu vergleichen.
UNKNOWN bedeutet nicht „wahrscheinlich in Ordnung“. Die installierte Version
konnte nicht ermittelt werden — etwa bei einem Staging-Verzeichnis für eine andere
Architektur, einem noexec-Mount oder einem Build aus dem Quellcode. Sowohl der
Anti-Rollback-Schutz als auch das Mindestversions-Gate treffen Aussagen über die
installierte Version und können daher nicht ausgewertet werden. Der Befehl verweigert
den Vorgang, statt zu raten. Geben Sie die bekannte Version an; dann bleiben die
Schutzmechanismen aktiv:
olivares upgrade --check --current-version 0.4Release-Channels
Abschnitt betitelt „Release-Channels“olivares upgrade folgt einem Release-Channel. Es gibt 3; sie sind in
core/release/manifest.go nach steigender Stabilität deklariert:
Wert für --channel |
Deklariert als |
|---|---|
stable |
release.ChannelStable |
security |
release.ChannelSecurity |
lts |
release.ChannelLTS |
Ein Wert außerhalb dieser Tabelle wird abgelehnt, bevor etwas heruntergeladen wird
(release.ValidChannel).
stable ist die allgemein verfügbare Linie und der Standard. security enthält
ausschließlich außerplanmäßige Sicherheitskorrekturen. Eine Bereitstellung auf diesem
Channel erhält daher Sicherheits-, aber keine Feature-Releases.
Wählen Sie den Channel, der zu Ihrem Betrieb passt, und bleiben Sie dabei:
olivares upgrade --channel securityEin Security-Release ist im Manifest entsprechend markiert, und --check gibt die
behobenen Advisories aus. Auf dem Security-Channel erhalten Sie diese außerhalb der
GA-Linie.
Upgrade durchführen
Abschnitt betitelt „Upgrade durchführen“olivares upgradeAuf einer Paketinstallation (deb, rpm, apk, AUR) wird das mit Exit-Code 2 abgelehnt, bevor etwas
heruntergeladen wird: Nutzen Sie den Paketmanager, wie die Tabelle oben zeigt. --check zeigt weiterhin den Plan.
Der Befehl führt der Reihe nach folgende Schritte aus:
- Er lädt das Channel-Manifest herunter und verifiziert dessen Signatur offline
gegen den im Build eingebetteten Ed25519-Release-Schlüssel. Der Trust Anchor ist die
Signatur, nicht der Transport. Bei einem Build ohne eingebetteten Schlüssel müssen
Sie mit
--pubkeyeinen bereitstellen; es gibt keinen unverifizierten Pfad. - Er verweigert den Rückwärtsgang. Eine ältere als die laufende Version wird nur
mit
--force-rollbackinstalliert; der Override erzeugt einen Audit-Eintrag. - Er bindet das Artefakt an den signierten SHA-256 des Manifests, bevor die Bytes ausgeführt werden.
- Er prüft den Kandidaten und tauscht ihn anschließend atomar aus. Dabei bleibt ein mit Zeitstempel versehenes Backup des ersetzten Binary erhalten. Läuft das neu installierte Binary nicht, stellt der Befehl dieses Backup selbst wieder her.
- Er lässt den laufenden Prozess unangetastet. Der Austausch ändert die Datei auf der Platte. Der neue Code übernimmt nach dem Neustart des Dienstes.
Fügen Sie --yes hinzu, wenn ein Skript den Vorgang steuert und niemand die
Bestätigungsfrage beantworten kann.
Der automatische Rollback in Schritt 4 prüft version, nicht den Dienststart oder die
Datenbankkompatibilität. Er stellt keinen beim nächsten Neustart migrierten Store wieder her.
Air-Gap-Installationen
Abschnitt betitelt „Air-Gap-Installationen“Eine Air-Gap-Bereitstellung erreicht niemals einen Update-Host. Übertragen Sie das Bundle mit einem bereits vertrauenswürdigen Verfahren und installieren Sie es aus der lokalen Datei. Die Verifikation ist identisch, denn dem Netzwerk wurde nie vertraut.
Offline-Installation erfordert Enterprise. Community prüft ein Bundle mit --bundle --check, ohne eine Lizenz zu lesen oder es zu installieren.
olivares upgrade --bundle ./olivares-release.tar.gz --checkGestaffelter Rollout und unbeaufsichtigte Prüfungen
Abschnitt betitelt „Gestaffelter Rollout und unbeaufsichtigte Prüfungen“Ein Manifest kann eine Kohorte für den gestaffelten Rollout benennen, sodass ein
Release zunächst nur einen Teil der Estate erreicht. Mit --if-eligible handelt ein
Node nur dann, wenn er dieser Kohorte angehört; andernfalls geschieht nichts:
olivares upgrade --if-eligible --yesIn dieser Form läuft der eingebaute Timer. Um einen systemd-Timer samt Dienst auszugeben, der den Befehl innerhalb eines Wartungsfensters aufruft:
olivares upgrade --install-timer --timer-schedule 'Sun *-*-* 03:00:00'Standardmäßig gibt der Befehl die Units aus; --timer-dir schreibt sie in das von
Ihnen angegebene Verzeichnis. Das ist opt-in — nichts plant sich selbst ein.
Bei einer Paketinstallation verweigert der Befehl das: /usr/bin/olivares gehört dem Paketmanager,
daher endet er mit dem Exit-Code 2, schreibt keine Unit und nennt den Weg: den Paketmanager des Hosts, auf der
Olivares-Appliance systemctl start olivares-appliance-update.service. Mit --enterprise --connect nennt er zusätzlich
olivares license connect refresh. Die Prüfung erfolgt über den Pfad; eine Binärdatei, die
install.sh --bindir /usr/bin dort abgelegt hat, wird also ebenfalls verweigert.
Die Konsole bietet die schreibgeschützte Hälfte derselben Information:
Settings → update status ruft POST /v1/console/update-check auf und führt bei
Bedarf eine Prüfung gegen den konfigurierten Channel aus. Eine Air-Gap-Bereitstellung
oder eine ohne konfigurierten Channel antwortet mit 501 und nennt den Grund, statt
zu melden, es gebe kein Update.
Upgrade verifizieren
Abschnitt betitelt „Upgrade verifizieren“olivares versionolivares upgrade --check--check sollte jetzt up to date melden. Prüfen Sie anschließend den Dienst
selbst: in der Konsole unter Health (/health) oder über den Readiness-Endpunkt
der Engine aus Mit Prometheus überwachen.
Rollback
Abschnitt betitelt „Rollback“Die vorige ausführbare Datei bleibt neben ihrem Ersatz erhalten; der Befehl gibt ihren Pfad aus. Diese Kopie ist kein Wiederherstellungspunkt für Ihre Daten.
Ein älteres Binary verweigert eine Core-Schemaversion, die neuer ist als die von ihm unterstützte, auch nach additiven Migrationen. Das alte Binary oder Image zurückzuspielen macht die Schemaerhöhung nicht rückgängig. Ändern Sie weder die Migrationshistorie noch den Schutz.
- Stoppen Sie alle Engines am Store. Bewahren Sie die aktualisierten Daten, Dienstkonfiguration, das TLS-Material und externe Sealer-Schlüssel auf.
- Stellen Sie mit dem Binary des vorigen Releases das DR-Bundle von vor dem Upgrade
wieder her: Sichern und wiederherstellen. SQLite: frisches
Datenverzeichnis oder
dr restore --in-placemit--operatorund--reason; bewahren Sie die automatisch gesicherten Dateien bis zur bestätigten Wiederherstellung auf. PostgreSQL: leeres Ziel mitolivares db init, dessen--dsn,--owner-dsnund--admin-dsnsowie ein frisches Verzeichnis für den wiederhergestellten Signierschlüssel verwenden. - Ledger und Audit-Schlüssel müssen erfolgreich verifiziert sein. Richten Sie Datenverzeichnis, Volumes und PostgreSQL-DSNs des Dienstes auf den wiederhergestellten Store und die passenden Signierschlüssel aus, bevor Sie das vorige Release starten.
- Melden Sie sich an und prüfen Sie die wiederhergestellten Daten und den Dienstzustand.
Die Wiederherstellung kehrt zum gesicherten Zeitpunkt zurück. Spätere Schreibvorgänge fehlen; bewahren Sie den aktualisierten Store zum Abgleich auf. Ohne das Bundle und seine Passphrase oder seinen KEK ersetzt die ausführbare Datei keine Wiederherstellung.
--force-rollback erlaubt die Installation eines älteren Binary und protokolliert den Override
im Audit-Log. Es umgeht weder die Core-Schemaprüfung noch das Mindestversions-Gate und stellt
keine Daten wieder her. Unterhalb der Mindestversion ist ein Zwischenrelease erforderlich.
Wiederherstellung vor dem Produktionsupgrade testen
Abschnitt betitelt „Wiederherstellung vor dem Produktionsupgrade testen“Starten Sie das verifizierte vorige Release mit einem temporären SQLite-Datenverzeichnis,
führen Sie Setup und Anmeldung durch, stoppen Sie es und erstellen und verifizieren Sie mit
seinem dr backup und dr verify ein Bundle. Starten Sie den Kandidaten auf demselben Store,
melden Sie sich an und stoppen Sie ihn. Nach einer Schemaerhöhung über die unterstützte Version
muss das vorige Release mit core schema version newer than this binary supports fehlschlagen.
Stellen Sie das Bundle mit dem vorigen dr restore in ein frisches Verzeichnis wieder her.
Verlangen Sie Exit null und erfolgreiche Ledger-Verifikation; starten Sie dort das vorige
Release und prüfen Sie Anmeldung, ursprünglichen Audit-Public-Key und gesicherte Daten.
Ein fehlgeschlagener Restore oder eine fehlgeschlagene Anmeldung bedeutet einen fehlgeschlagenen Test.
Gemessene SQLite-Wiederherstellung (2026-10-08): Das offizielle Release 26.10.1 erstellte
Core-Schema 18, ein neuerer Kandidat erhöhte es auf 27. Das alte Binary verweigerte den Store
mit Exit 1 (database=27 binary=18). Seine dr backup, dr verify und dr restore beendeten
sich mit Code 0. Nach Wiederherstellung des Bundles von vor dem Upgrade in ein frisches
Verzeichnis funktionierten die ursprüngliche Anmeldung und der ursprüngliche Audit-Public-Key.
Wenn etwas schiefgeht
Abschnitt betitelt „Wenn etwas schiefgeht“| Symptom | Bedeutung | Maßnahme |
|---|---|---|
--check gibt UNKNOWN aus |
Die installierte Version konnte nicht ermittelt werden, daher ist keine Aussage über die Reihenfolge möglich | Übergeben Sie mit --current-version die bekanntermaßen installierte Version |
min_ver meldet eine zu alte Version |
Das Release verweigert die direkte Installation über Ihrer Version | Aktualisieren Sie zuerst auf das genannte Zwischenrelease |
Die installierte Datei besteht die version-Prüfung nach dem Austausch nicht |
Die Prüfung der ausführbaren Datei ist fehlgeschlagen | Der Befehl stellt die gesicherte Datei wieder her; prüfen Sie die Logs |
| Dienststart nach dem Neustart fehlgeschlagen oder Core-Schema zu neu für das alte Binary | Das liegt außerhalb der Prüfung der ausführbaren Datei | Dienst stoppen und gemäß Rollback das DR-Bundle von vor dem Upgrade wiederherstellen |
--install-timer löst aus, aber nichts geschieht |
Der Node gehört nicht zur Kohorte des gestaffelten Rollouts | Mit --if-eligible ist das erwartet; die Kohorte wird im Verlauf des Rollouts erweitert |
| “another olivares upgrade is already installing”, exit 5 | Je Binary kann nur ein Upgrade laufen. Die Sperre gilt für die gesamte Download-und-Austausch-Sequenz | Warten Sie auf den laufenden Vorgang und starten Sie erneut. Läuft nichts mehr, hat der Kernel die Sperre bereits freigegeben; starten Sie jetzt erneut |
| “it CHANGED while this upgrade was downloading” | Nach der Planung hat etwas anderes das Binary ersetzt — Paketmanager, Image-Rollout oder Konfigurationsverwaltung | Starten Sie erneut: Die Schutzmechanismen werden gegen die tatsächlich installierte Datei neu ausgewertet. Wiederholt sich das, verwalten zwei Systeme dasselbe Binary |
Ein Upgrade-Agent pro Binary. olivares upgrade hält während der gesamten
Prepare-Download-Swap-Sequenz eine exklusive Sperre auf dem Ziel. Ein zweiter Lauf
beendet sich daher mit 5, statt zu installieren. Installieren Sie einen Timer
und ändern Sie darin --channel, statt je Channel einen Timer zu betreiben: Zwei
Installationen, die in derselben Sekunde endeten, konnten früher das Rollback-Backup
der jeweils anderen überschreiben; der automatische Rollback des Verlierers stellte
dann das andere Binary wieder her und meldete Erfolg. Unmittelbar vor dem Austausch
liest der Befehl außerdem die Bytes des Ziels erneut und verweigert den Vorgang, wenn
sie nicht der eingeplanten Datei entsprechen. Anti-Rollback- und
Mindestversionsurteile beziehen sich auf eine konkrete installierte Datei.
Für alles Weitere ist Fehlerbehebung der allgemeine
Einstieg; die Konsole zeigt unter Logs (/logs) den eigenen Log-Stream der Engine.