phased update
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Bei Ubuntu werden manche veröffentlichte Updates nicht gleichzeitig an alle installierten Betriebssysteme verteilt, sondern gestaffelt (phased update) an die anfragenden Kunden übertragen. Dies betrifft immer funktionale Upgrades auf eine neuere Version von Ubuntu und auch innerhalb einer LTS-Version den Übergang auf den Stand eines aktuellen Point-Releases.
Dieses Verfahren dient der Qualitätssicherung. Moderne Software und insbesondere Softwaresysteme wie Betriebssysteme und Distributionen haben zu viele Kombinationsmöglichkeiten, die nicht alle getestet werden können. Es ist daher bei Ubuntu wie auch bei anderen Herstellern bei umfangreichen Update-Aktionen üblich, zur Begrenzung der schädlichen Auswirkungen von unerkannten Mängeln das Update zunächst nur auf einem kleinen Teil aller installierten Systeme auszuführen und später nur dann fortzusetzen, wenn keine Fehlermeldungen einlaufen. Dies setzt voraus, dass die installierten Systeme auch automatisch erkannte Fehler an den Hersteller zurück melden. Bei Ubuntu wird man bei der Installation gebeten, dieser automatischen Rückmeldung zuzustimmen. Man kann es auch jederzeit über
Einstellungen → Datenschutz → Fehlerdiagnose → Fehlerberichte an Canonical senden
ändern. (Diese Einstellung betrifft nur das Senden von Fehlerberichten und nicht die grundsätzliche Teilnahme an der Prozedur.)
Phased-Update-Aktionen werden bei Ubuntu nicht in den folgenden Fällen angewendet:
während der Entwicklung einer neuen Version von Ubuntu vor deren offizieller Freigabe
bei Vorveröffentlichungen aus den Repositorien DISTRIBUTION-proposed (Für DISTRIBUTION ist deren jeweiliger Kurzname einzusetzen, also so etwas wie beispielsweise
focal
oderjammy
.)bei Sicherheitsupdates, wenn die Version in DISTRIBUTION-security neuer als die Version in DISTRIBUTION-update ist
Eine laufende Phased-Update-Aktion verursacht bei den Benutzern Irritationen, wenn diese feststellen, dass eines ihrer Systeme noch nicht aktualisiert wurde, obwohl dies auf anderen, ähnlich konfigurierten Systemen längst geschehen ist.
Manchmal kann eine Phased-Update-Aktion für einzelne Benutzer kontraproduktiv sein, beispielsweise wenn man die betroffene Software testen möchte oder bereits weiß, dass man eine Eigenschaft der neusten Version benötigt.
In der Mehrzahl aller Fälle ist aber jegliche Besorgnis und Aufregung unnötig und lediglich geduldiges Abwarten angesagt. Beim Standardverfahren von Ubuntu sollte man spätestens 54 Stunden nach Start der Update-Aktion die aktualisierte Software auch auf dem eigenen System haben. Wenn es länger dauert, ist es ein Indiz, dass durch dieses Verfahren Mängel erkannt wurden, deren schädliche Auswirkungen einen selbst aber nicht erreicht haben.
Ursprünglich (seit Ubuntu 13.04 bis 20.04 LTS) waren Phased-Updates eine Spezialität des von Ubuntu verwendeten eigenen grafischen Update-Managers und betrafen somit nur Desktop-Installationen. Bei Ubuntu-Servern, die über die Kommandozeile z.B. per
sudo apt update sudo apt upgrade
mit Aktualisierungen versorgt wurden, wurden stets alle verfügbaren Updates direkt berücksichtigt. Auch bei Desktops konnte man mit diesen Befehlen die Wartezeit beenden.
Mit Ubuntu 22.04 LTS kann die verwendete Version von apt (bzw. apt-get
usw.) selbst Phased-Updates verwalten. Somit spielt es nun keine Rolle mehr, ob per grafischem Update-Manager oder mit Befehlen auf der Kommandozeile die Aktualisierungen eingespielt werden und beide Arten der Installation (Desktop oder Server) werden gleich behandelt.
Phased-Update erkennen¶
Eine laufende Phased-Update-Aktion kann sowohl in der GUI Aktualisierungsverwaltung als auch beim Arbeiten auf der Kommandozeile erkannt werden.
Nebenstehendes Bild zeigt ein Beispiel: Es werden aktualisierungsfähige Pakete angezeigt, die jedoch bereits von der Aktualisierungsverwaltung abgewählt wurden. |
Beim Arbeiten auf der Kommandozeile erkennt man eine laufende Phased-Update-Aktion, wenn der Befehl
sudo apt upgrade
„zurückgehaltene Pakete“ meldet, wie im folgenden Beispiel:
Paketlisten werden gelesen… Fertig Abhängigkeitsbaum wird aufgebaut… Fertig Statusinformationen werden eingelesen… Fertig Paketaktualisierung (Upgrade) wird berechnet… Fertig Die folgenden Pakete sind zurückgehalten worden: python3-software-properties software-properties-common software-properties-gtk 0 aktualisiert, 0 neu installiert, 0 zu entfernen und 3 nicht aktualisiert.
Ab 24.04 wird bereits hier darauf hingewiesen, wenn die Pakete „aufgrund von gestaffelter Auslieferung“ zurückgehalten werden. Eine weitere Prüfung erübrigt sich.
Man kann sich für die zurückgehaltenen Pakete (hier beispielhaft: software-properties-common
) mit dem Befehl
apt-cache policy software-properties-common
die Update-Methode anschauen:
software-properties-common: Installiert: 0.99.22.2 Installationskandidat: 0.99.22.3 Versionstabelle: 0.99.22.3 500 (gestaffelt 0%) 500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages 500 http://archive.ubuntu.com/ubuntu jammy-updates/main i386 Packages *** 0.99.22.2 100 100 /var/lib/dpkg/status 0.99.22 500 500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages 500 http://archive.ubuntu.com/ubuntu jammy/main i386 Packages
(Die Beispiele sind abhängig vom konkreten Rechner und auch von der Zeit und lassen sich daher nicht reproduzieren. Sie wurden erzeugt auf einem 22.04-System in der Update-Phase 22.04 → 22.04.1 Anfang August 2022.)
Im Beispiel steht für das Paket software-properties-common bereits die Version 0.99.22.3 bereit, dessen Auslieferung per Phased-Update aber gestoppt wurde; dies erkennt man an „gestaffelt 0%
“. Bei einem laufenden Phased-Update steht hier eine positive Zahl, solange man selbst noch nicht an der Aktualisierung teilnehmen durfte.
Auch der Befehl
apt list --upgradable
zeigt zurückgehaltene Pakete an.
Man kann sich auch im Internet über aktuell laufende Phased-Update-Aktionen informieren; auf dieser Internetseite werden wohl aber nur die Phased-Updates von SRU (Stable Release Updates) angezeigt. Es gibt gelegentlich andere Gründe, warum bei der Aktualisierung bestimmter Pakete ebenfalls dieses Verfahren eingesetzt wird, und diese Pakete erscheinen nicht immer auf dieser Seite. Im Beispiel sieht man Probleme bei den Paketen bolt für focal und virtualbox für jammy: Bei beiden wurde das gestaffelte Ausrollen der Aktualisierung unterbrochen durch Setzen des Phasenfortschritts auf 0. |
Ablauf eines Phased-Updates¶
Auf dem Paketserver wird für das Phased-Update der Schwellwert P (0 < P < 100) gesetzt, der Standardwert bei Ubuntu ist 10.
Auf dem Client, der aktualisiert werden soll, wird eine Kennzahl L (als „Losnummer“) berechnet (0 ≤ L ≤ 100). Hierfür wird aus dem Paketnamen, dessen Version und der Zahl aus /etc/machine-id ein Anfangswert für einen Pseudo-Zufallszahl-Generator berechnet und dessen Ergebnis verwendet.
Nur wenn L ≤ P, dann wird auf dem Client die anstehende Aktualisierung ausgeführt.
Die Paketbetreuer überwachen und bewerten einlaufende Fehlermeldungen. Wenn innerhalb einer festgelegten Zeitdauer keine fatalen Mängel bekannt werden, dann wird die Zahl P erhöht (bei Ubuntu standardmäßig um 10 alle 6 Stunden); im anderen Fall wird die Zahl P auf 0 gesetzt, wodurch ein weiteres Ausrollen der mangelhaften Aktualisierung verhindert wird.
Nach Beseitigung der erkannten Mängel wird das Phased-Update mit Schritt 1 erneut gestartet.
Das Verfahren wird ab Schritt 2 fortgesetzt, bis P den Wert 100 erreicht.
Phased-Update konfigurieren¶
Achtung!
Phased-Updates sind eine vom Hersteller Canonical vorgesehene Maßnahme zu Verbesserung der Sicherheit von Ubuntu-Installationen. Jeder Eingriff in die Konfiguration kann die Sicherheit und/oder die Funktionsfähigkeit des eigenen Systems beeinträchtigen oder im Extremfall auch zu einem unbenutzbaren System führen.
Einsteigern wird ausdrücklich empfohlen, Ubuntu wie vorgesehen zu benutzen und die anschließend beschriebenen Konfigurationen erfahrenen Kennern zu überlassen.
Die Konfiguration der Phased-Updates kann nicht in der GUI erfolgen, vielmehr muss man dies mit Rootrechten in einer Konfigurationsdatei des Update-Managers oder der Paketverwaltung mit einem Texteditor erledigen, indem man aus den in folgender Tabelle genannten Konfigurationszeilen die für die eigenen Bedürfnisse geeigneten (inkl. der Anführungszeichen und des abschließenden Semicolons!) auswählt.
Optionen zur Konfiguration von Phased-Update | |
Konfigurationszeile | Bedeutung |
Update-Manager::Always-Include-Phased-Updates; | Bei Aktualisierungen über die GUI die Updates so früh wie möglich übernehmen. Ab Ubuntu 22.04 wirkungslos. |
APT::Get::Always-Include-Phased-Updates "true"; | Bei Aktualisierungen über die Kommandozeile die Updates so früh wie möglich übernehmen. Ab Ubuntu 21.04 möglich. |
Update-Manager::Never-Include-Phased-Updates; | Bei Aktualisierungen über die GUI die Updates so spät wie möglich übernehmen. Ab Ubuntu 22.04 wirkungslos. |
APT::Get::Never-Include-Phased-Updates "true"; | Bei Aktualisierungen über die Kommandozeile die Updates so spät wie möglich übernehmen. Ab Ubuntu 21.04 möglich. |
APT::Machine-ID "UUID"; | Für UUID ist eine genau 32-stellige Hexadezimalzahl einzusetzen (zul. Zeichen 0-9 und a-f). Die Datei /etc/machine-id enthält eine solche Kennung, die auch verwendet wird, wenn man für APT nichts anderes angibt. Alle Rechner mit dieser UUID übernehmen die Updates zum gleichen Zeitpunkt. |
Die Optionen Always-Include-Phased-Updates
und Never-Include-Phased-Updates
sind ihrer Natur nach Wahrheitswerte und bestimmen zusammen die bei Phased-Updates angewendete Strategie:
Mögliche Strategien für Phased-Update | ||
Always-Include-Phased-Updates | Never-Include-Phased-Updates | Bedeutung |
false | false | Vorgabe. An Phased-Update-Aktionen wie vom Hersteller vorgesehen teilnehmen. |
true | false | Early Adopter |
false | true | Nachzügler |
true | true | Unzulässige Konfiguration. Erzeugt mit Sicherheit Chaos im System, wobei nur das Chaos den Zeitpunkt bestimmt, zu dem es einzieht. Nicht verwenden! |
Die Vorgabe für beide Wahrheitswerte ist false
; man „setzt“ daher diesen Wert, indem man es beim Vorgabewert belässt und in den Konfigurationsdateien hierfür keine Angabe macht. Man darf nur einen der beiden Werte auf true
setzten. Die Arbeitsweise bei der Kombination true/true
ist undefiniert, und dies ist eine höfliche Umschreibung für: „Das Chaos wird das System übernehmen.“
Man soll die Strategie für die GUI (= Update-Manager
) und die Kommandozeile (= APT
) unterschiedlich wählen können, dies funktioniert aber jedenfalls bei Ubuntu 22.04 nicht. Die Einstellungen für die Kommandozeile haben immer Vorrang.
Mit der Option Machine-ID
kann man bei aktiver Standard-Strategie false/false
begrenzt den Moment steuern, zu dem für das eigenen System die Aktualisierung wirksam wird. Bei den anderen Strategien ist dies Optionen nicht sinnvoll. Man kann diese Option verwenden, um alle seine betreuten Maschinen zum gleichen Zeitpunkt innerhalb des Phased-Update aktualisieren zu lassen; den tatsächlichen Zeitpunkt kann man aber nicht festlegen.
Die ausgewählten Konfigurationszeilen werden in einer Konfigurationsdatei von APT eingetragen. Hierfür kann Root sich z.B. eine Datei /etc/apt/apt.conf.d/99-Phased-Updates anlegen; der Dateiname darf auch anders lauten. In diesen Dateien beginnen Kommentarzeilen mit zwei Schrägstrichen.
Beispiel: Early Adopter¶
Dies ist die zweckmäßige Konfiguration für ungeduldige, wagemutige und erfahrene Benutzer, die immer den „letzten heißen Scheiß“ als erste haben müssen und dafür auch das Risiko akzeptieren, dass es dem eigenen System schaden kann:
// Phased updates: Early adopter // https://wiki.ubuntuusers.de/Aktualisierungen/phased_update/ Update-Manager::Always-Include-Phased-Updates; APT::Get::Always-Include-Phased-Updates "true";
Mit diesen Einstellungen gehört man bei Phased-Update-Aktionen stets zu den Begünstigten in der ersten Runde. Das macht in der Regel nur dann Sinn, wenn man die auf dem eigenen System auftretenden Fehler auch zurück meldet.
Beispiel: Nachzügler¶
Dies ist die zweckmäßige Konfiguration für übervorsichtige Benutzer, die lieber nur ausgereiftes übernehmen:
// Phased updates: Late adopter // https://wiki.ubuntuusers.de/Aktualisierungen/phased_update/ Update-Manager::Never-Include-Phased-Updates; APT::Get::Never-Include-Phased-Updates "true";
Man erhält die Aktualisierungen erst nach dem erfolgreichen Abschluss der Phased-Update-Aktion.
Beispiel: Altes Verfahren beibehalten¶
Bei Ubuntu-Desktop-Installationen bis 20.04 wurden bei Aktualisierungen über die GUI die Phased-Updates beachtet, nicht jedoch bei der direkten Verwendung der APT-Befehle auf der Kommandozeile. Die folgende Konfigurationsdatei sollte für Ubuntu ab 22.04 das bisherige Verhalten wieder herstellen, leider funktioniert das aber nicht:
// Phased updates: Split GUI / CLI (funktioniert nicht!) // https://wiki.ubuntuusers.de/Aktualisierungen/phased_update/ APT::Get::Always-Include-Phased-Updates "true";
Siehe auch: Howto/phased updates deaktivieren
Links¶
Phasing Ubuntu Stable Release Updates 🇬🇧 – aktuell laufende Phased-Update-Aktionen
PhasedUpdates 🇬🇧 – Einführung von Phased-Updates bei Ubuntu-Desktops im grafischen Update-Manager (Ubuntu-Wiki, 2012)
Ubuntu introduces phased updates 🇬🇧 – Artikel bei LWN zur Einführung, Motivation, Arbeitsweise und ersten Erfahrungen (2013)
Phased updates in APT in 21.04 🇬🇧 – Einführung von Phased-Updates für APT (Forum der Ubuntu-Entwickler, 2021)
Ubuntu 21.04 To Expand The Use Of Phased Package Updates 🇬🇧 – Nachricht bei Phoronix über die Einführung von Phased-Updates für APT (2021)