[[Vorlage(Getestet, jammy, focal)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis()]] [:snap:Snaps] werden automatisch zeitgesteuert oder manuell über den Befehl [#Aktualisierungen-snap-refresh 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 [#nderungsverlauf-snap-changes snap changes] den Verlauf von Updates und Änderungen von Snaps anzeigen lassen. = Aktualisierungen - snap refresh = Die von [https://snapcraft.io/ snapcraft.io] {en} 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. * alle aktualisieren: [[Vorlage(Befehl, "sudo snap refresh" ) ]] * gezielt einzelnes Snap aktualisieren: [[Vorlage(Befehl, "sudo snap refresh NameDesSnaps" ) ]] == 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]: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl sudo snap set system refresh.timer=ZEITEN }}} `ZEITEN` können Uhrzeiten, Tage oder eine Kombination aus beiden sein. {{{#!vorlage Tabelle 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 [https://snapcraft.io/docs/timer-string-format offizielle Dokumentation für Snaps] {en}. == Updates temporär unterbinden == Ab snapd Version 2.58 kann man die Aktualisierung eines, mehrerer oder aller Snaps temporär unterbinden. {{{#!vorlage Befehl snap refresh --hold=DAUER [NAME_DES_SNAPS] }}} Der Parameter `DAUER` kann entweder in Stunden (z.B. `24h`) oder Tagen (z.B. `30d`) angegeben werden. Als `DAUER` kann eine Dauer von maximal 90 Tagen vorgegeben werden. Möchte man jedoch für eines, mehrerer oder aller Snaps dauerhaft die Aktualisierung unterbinden, so erfolgt dies durch den Parameter `forever`: {{{#!vorlage Befehl snap refresh --hold=forever [NAME_DES_SNAPS] }}} Das Unterbinden einer Aktualisierung kann z.B. dann sinnvoll sein, wenn man gezielt mit einer bestimmten Version eines Programms arbeiten will (oder muss). Es ist jedoch zu bedenken, dass Aktualisierungen nicht zwingend optional sind! Von daher ist das Unterbinden von Aktualisierungen stets eine Risikoabwägung zwischen Kosten und Nutzen. 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: * Name eines Snaps angegeben: Das Snap wird nicht bei automatischen Aktualisierungen oder dem manuellen Aufruf von `snap refresh` aktualisiert. Der gezielte Aufruf von `snap refresh NAME_DES_SNAPS` würde das entsprechende Snap trotzdem aktualisieren. * kein Name eines Snaps angegeben: Es wird kein Snap automatisch aktualisiert. Der manuelle Aufruf von `snap refresh` oder `snap refresh NAME_DES_SNAPS` würde aber alle Snaps bzw. das angegebene Snap aktualisieren. Möchte man das Unterbinden der Aktualisierung vor deren Ablauf wieder erlauben, dann kann man das mit dem folgenden Befehl machen: {{{#!vorlage Befehl 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 [#Updates-temporaer-unterbinden hold] gesetzt sind. = Änderungsverlauf - snap changes = == Verlauf der Änderungen ansehen == Man kann sich den Verlauf der Änderungen / Aktualisierungen der Snap wie folgt anzeigen lassen: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl snap tasks CHANGE-ID }}} Beispiel: {{{#!vorlage Befehl 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 {{{#!vorlage Befehl sudo snap debug timings CHANGE-ID }}} Beispiel: {{{#!vorlage Befehl 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 - Administrieren von Snap-Aktualisierungen] {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