snap/Updateverwaltung

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


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:

  1. ⚓︎ Ein Terminal öffnen

Inhaltsverzeichnis
  1. Aktualisierungen - snap refresh
    1. Aktualisierungsintervall anzeigen
    2. Aktualisierungszeit einstellen
    3. Updates temporär unterbinden
    4. Benachrichtigungen deaktivieren
    5. von snapd erzwungene Aktualisierungen
  2. Änderungsverlauf - snap changes
    1. Verlauf der Änderungen ansehen
    2. Details zu einer Änderung anzeigen

Snaps werden automatisch zeitgesteuert oder manuell über den Befehl snap refresh aktualisiert. Dieser bietet einige zusätzliche Optionen, mit denen man das Verhalten von Updates beeinflussen kann.

Weiterhin kann man sich mit dem Befehl snap changes den Verlauf von Updates und Änderungen von Snaps anzeigen lassen.

Aktualisierungen - snap refresh

Die von snapcraft.io 🇬🇧 installierten Snaps werden im Hintergrund regelmäßig auf Aktualität überprüft und auch automatisch aktualisiert. Die Aktualisierung aller oder eines einzelnen Snaps kann aber auch manuell durchgeführt werden.

Aktualisierungsintervall anzeigen

Das aktuelle Intervall, mit dem alle Snaps aktualisiert werden sowie der Zeitpunkt der letzten und nächsten Aktualisierung lässt sich über den folgenden Befehl abfragen[1]:

snap refresh --time 

Die Ausgabe sieht z.B so aus:

timer: 00:00~24:00/4
last: heute um 10:47 CET
next: heute um 16:46 CET

Die Zeile beginnend mit timer zeigt das Aktualisierungsintervall an. Im obigen Beispiel ist es das Standardintervall: 4x täglich. Die mit last beginnende Zeile zeigt den Zeitpunkt der letzten Aktualisierung und die Zeile beginnend mit next für wann die nächste Aktualisierung geplant ist.

Aktualisierungszeit einstellen

Man kann die Zeiten und Intervalle, mit denen Snaps aktualisiert werden, aber selber ein- / umstellen.

Die allgemeine Syntax lautet:

sudo snap set system refresh.timer=ZEITEN 

ZEITEN können Uhrzeiten, Tage oder eine Kombination aus beiden sein.

Beispiele möglicher Zeitangaben für Aktualisierungen
Angaben für ZEITEN Erklärung
mon,wed,fri,11:00 Montags, Mittwochs und Freitags, jeweils im 11.00 Uhr
tue,11:00-12:00,,thu,14:00-16:00 Dienstags zwischen 11.00 und 12.00 Uhr und Donnerstags zwischen 14.00 und 16.00 Uhr (Beachte das doppelte Komma!)
mon2,10:00-20:00/2 Jeden 2. Montag, zum ersten Mal zwischen 10.00 und 15.00 Uhr und zum 2. Mal zwischen 15.00 und 20.00 Uhr
00:00-24:00/24 täglich jede Stunde

Es gibt noch eine Vielzahl weiterer Möglichkeiten, Datum, Uhrzeit und Intervalle anzugeben. Beispiele und Erklärungen dazu findet man in der offizielle Dokumentation für Snaps 🇬🇧.

Updates temporär unterbinden

Ab snapd Version 2.58 kann man die Aktualisierung eines, mehrerer oder aller Snaps temporär unterbinden.

snap refresh --hold=DAUER [NAME_DES_SNAPS] 

Als DAUER kann eine Dauer von maximal 90 Tagen vorgegeben werden. Das Unterbinden einer Aktualisierung kann z.B. dann sinnvoll sein, wenn man gezielt mit einer bestimmten Version eines Programms arbeiten will (oder muss).

DAUER kann entweder in Stunden (z.B. 24h) oder Tagen (z.B. 30d) angegeben werden.

Je nach dem, ob bei snap refresh --hold ein oder mehrere Snaps angegeben wurden oder keine Namen angegeben wurden, verhält sich hold leicht unterschiedlich:

Möchte man das Unterbinden der Aktualisierung vor deren Ablauf wieder erlauben, dann kann man das mit dem folgenden Befehl machen:

sudo snap refresh --unhold [NAME_DES_SNAPS] 

Benachrichtigungen deaktivieren

Läuft eine Anwendung als Snap und eine Aktualisierung steht bereit, blendet die Desktopumgebung ein Hinweisbanner ein. Dieses weist darauf hin, dass man die Anwendung beendet sollte, damit die Aktualisierung durchgeführt werden kann. Benötigt man diesen Hinweis nicht, kann man diesen deaktivieren. Unter Ubuntu mit GNOME-Desktop geht man über "Einstellungen → Benachrichtigungen → snap User Session Agent" auf den Punkt "Benachrichtigungsbanner" und deaktiviert diesen.

von snapd erzwungene Aktualisierungen

Aktualisierungen von Programmen, welche als Snap installiert sind, können nur durchgeführt wenn das Programm nicht läuft. Mit der Aktualisierung wird dann so lange gewartet, bis das Programm beendet wurde. Wird das Programm 14 Tage nicht beendet, dann erzwingt snapd die Aktualisierung, indem das Programm geschlossen und die Aktualisierung durchgeführt wird. Dies passiert nicht für Snaps, die auf hold gesetzt sind.

Änderungsverlauf - snap changes

Verlauf der Änderungen ansehen

Man kann sich den Verlauf der Änderungen / Aktualisierungen der Snap wie folgt anzeigen lassen:

snap changes 

ID   Status  Spawn                 Bereit                Zusammenfassung
68   Done    gestern um 16:56 CET  gestern um 16:56 CET  Versuche "firefox" Snap von /home/jochen/squashfs-root
69   Done    gestern um 16:59 CET  gestern um 16:59 CET  Alle Snaps auffrischen: keine Aktualisierungen
70   Done    gestern um 17:00 CET  gestern um 17:01 CET  "firefox" Snap wiederherstellen
71   Done    gestern um 17:01 CET  gestern um 17:01 CET  Entferne "firefox" Snap
72   Done    gestern um 17:31 CET  gestern um 17:31 CET  Versuche "inkscape" Snap von /home/jochen/squashfs-root
73   Done    gestern um 17:44 CET  gestern um 17:44 CET  Entferne "inkscape" Snap
74   Done    gestern um 17:46 CET  gestern um 17:47 CET  Installiere "inkscape" Snap
75   Done    gestern um 20:37 CET  gestern um 20:37 CET  Entferne "inkscape" Snap
76   Done    gestern um 20:38 CET  gestern um 20:38 CET  Alle Snaps auffrischen: keine Aktualisierungen
77   Done    heute um 14:34 CET    heute um 14:34 CET    Forget of snapshot set #3
78   Done    heute um 14:34 CET    heute um 14:34 CET    Restore of snapshot set #4

Jede Änderung hat eine einmalige Nummer, zu sehen in der Spalte "ID", in der Spalte "Zusammenfassung" wird ein kurzer Text ausgegeben, was gemacht wurde.

Wie außerdem zu sehen ist, wird die Zeit relativ zur aktuellen Zeit angegeben. Man kann sich über die Option --abs-time aber auch die absolute Zeit ausgeben lassen.

Beispiel:

snap changes --abs-time 

...
69   Done    2022-12-09T16:59:57+01:00  2022-12-09T16:59:57+01:00  Alle Snaps auffrischen: keine Aktualisierungen
...

Details zu einer Änderung anzeigen

Man kann sich für jeder Änderung detailliert anzeigen lassen, was im Rahmen der Änderung passiert ist. Die allgemeine Syntax lautet:

snap tasks CHANGE-ID 

Beispiel:

snap tasks 70 
Status  Spawn                 Bereit                Zusammenfassung
Done    gestern um 17:00 CET  gestern um 17:00 CET  Sicherstellen, dass die Voraussetzungen für "firefox" verfügbar sind
Done    gestern um 17:00 CET  gestern um 17:00 CET  Snap "" (2154) vorbereiten
Done    gestern um 17:00 CET  gestern um 17:00 CET  Snap "firefox" Dienste anhalten
Done    gestern um 17:00 CET  gestern um 17:00 CET  Aliase für Snap "firefox" entfernen
Done    gestern um 17:00 CET  gestern um 17:00 CET  Aktuelle Revision für Snap "firefox" nicht verfügbar machen
Done    gestern um 17:00 CET  gestern um 17:00 CET  Sicherheitsprofile für Snap "firefox" (2154) einrichten
Done    gestern um 17:00 CET  gestern um 17:00 CET  Snap "firefox" (2154) für das System verfügbar machen
Done    gestern um 17:00 CET  gestern um 17:00 CET  Automatisches Verbinden von geeigneten Plugs und Slots von Snap "firefox"
Done    gestern um 17:00 CET  gestern um 17:00 CET  Automatisch Aliase für Snap "firefox" festlegen
Done    gestern um 17:00 CET  gestern um 17:00 CET  Aliase für Snap "firefox" einrichten
Done    gestern um 17:00 CET  gestern um 17:00 CET  Snap "firefox" (2154) Dienste starten
Done    gestern um 17:00 CET  gestern um 17:01 CET  Den Konfigurationshook von Snap "firefox" ausführen, falls vorhanden
Done    gestern um 17:00 CET  gestern um 17:01 CET  Run health check of "firefox" snap
Done    gestern um 17:00 CET  gestern um 17:00 CET  firefox:etc-firefox mit snapd:system-files verbinden
Done    gestern um 17:00 CET  gestern um 17:00 CET  firefox:host-hunspell mit snapd:mount-control verbinden
Done    gestern um 17:00 CET  gestern um 17:00 CET  Hook connect-plug-host-hunspell von Snap "firefox" ausführen
Done    gestern um 17:00 CET  gestern um 17:00 CET  Einrichten der Sicherheitsprofile für Autoverbindungen des Snaps "firefox"  (2154)

Man kann sich noch detaillierte Informationen zu jeder Änderung anzeigen lassen, nämlich wie lange jeder Schritt der Änderung gedauert hat. Dazu dient der Befehl

sudo snap debug timings CHANGE-ID 

Beispiel:

snap debug timings 183 

ID    Status        Doing      Undoing  Summary
4205  Done           38ms            -  Sicherstellen, dass die Voraussetzungen für "mosquitto" verfügbar sind
4206  Done          696ms            -  Snap "mosquitto" (831) von Kanal "stable" herunterladen
 ^                  662ms            -    download snap "mosquitto"
4207  Done          254ms            -  Zusicherungen für Snap "mosquitto" (831) abrufen und überprüfen
4208  Done          349ms            -  Snap "mosquitto" (831) einbinden
 ^                    9ms            -    check snap "mosquitto"
 ^                  281ms            -    setup snap "mosquitto"
4209  Done           29ms            -  Daten von Snap "mosquitto" kopieren
4210  Done          333ms            -  Sicherheitsprofile für Snap "mosquitto" (831) einrichten
 ^                   95ms            -    setup security backend "seccomp" for snap "mosquitto"
 ^                  200ms            -    setup security backend "apparmor" for 1 snaps
  ^                 123ms            -      load changed security profiles of 1 snaps
4211  Done          327ms            -  Snap "mosquitto" (831) für das System verfügbar machen
 ^                  220ms            -    generate wrappers for snap mosquitto
 ^                   32ms            -    update font config caches
4212  Done           49ms            -  Automatisches Verbinden von geeigneten Plugs und Slots von Snap "mosquitto"
4221  Done           43ms            -  mosquitto:network mit snapd:network verbinden
4222  Done           39ms            -  mosquitto:network-bind mit snapd:network-bind verbinden
4220  Done          345ms            -  Einrichten der Sicherheitsprofile für Autoverbindungen des Snaps "mosquitto"  (831)
 ^                   98ms            -    setup security backend "seccomp" for snap "mosquitto"
 ^                  207ms            -    setup security backend "apparmor" for 2 snaps
  ^                 149ms            -      load changed security profiles of 2 snaps
4213  Done           30ms            -  Automatisch Aliase für Snap "mosquitto" festlegen
4214  Done           29ms            -  Aliase für Snap "mosquitto" einrichten
4215  Done           17ms            -  Installationshook von Snap "mosquitto" ausführen, falls vorhanden
4216  Done           19ms            -  Run default-configure hook of "mosquitto" snap if present
4217  Done          307ms            -  Snap "mosquitto" (831) Dienste starten
 ^                  209ms            -    enable services ["snap.mosquitto.mosquitto.service"]
 ^                   45ms            -    start services
  ^                  45ms            -      start service "snap.mosquitto.mosquitto.service"
4218  Done           14ms            -  Den Konfigurationshook von Snap "mosquitto" ausführen, falls vorhanden
4219  Done           17ms            -  Run health check of "mosquitto" snap

= Links = 
 * [https://snapcraft.io/docs/keeping-snaps-up-to-date Dokumentation] {en} zu `snap refresh` und `snap changes`
 * [https://snapcraft.io/docs/timer-string-format Dokumentation] {en} zu Datums- und Zeitangaben

#tag: Ubuntu, Paketverwaltung, System, snap