[[Vorlage(Getestet, bionic, focal)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] [:Editor: Einen Editor verwenden] }}} [[Inhaltsverzeichnis(3)]] Snap ist ein Paketformat, das maßgeblich von Canonical entwickelt und konfliktfrei neben DEB-Paketen aus "normalen" [:Paketverwaltung:] installiert und genutzt werden kann. Snap ist auch für viele [https://snapcraft.io/docs/installing-snapd andere Linux-Distributionen] {en} verfügbar. Ursprünglich waren Snaps vor allem für den Einsatz im Server- bzw. Cloudumfeld und auch für das [wikipedia:Internet_der_Dinge:Internet of Things] gedacht. Inzwischen ist es aber auch in den Desktopversionen zu finden, und über Snaps lassen sich auch Programme mit grafischer Benutzeroberfläche, Anwendungen für die Kommandozeile, Umgebungen für Programmiersprachen etc. installieren. Der Vorteil von Snaps ist, dass aktuelle Versionen von Anwendungssoftware installierbar sind, auch wenn die Linuxdistribution -- wie Ubuntu und dessen offizielle Derivate -- eine "fixed release distribution" ist, d.h. bei Paketen aus den offiziellen Paketquellen gibt es normalerweise keine Versionssprünge. Snaps können aus dem zentralen [https://snapcraft.io Snapserver] {en} bezogen werden, welcher von Canonical betrieben wird. Alternative Server gibt es zur Zeit nicht. Die Installation von lokal heruntergeladenen Snaps ist aber auch möglich. = Technik und Sicherheit = Die Grundlage, auf der alle Snaps laufen, heißt einfach "core". Dies ist die Laufzeitumgebung für Snaps, welche ebenfalls als Snap installiert ist. Dadurch ist die Laufzeitumgebung für alle Ubuntuversionen gleich, da sie unabhängig vom darunter liegenden System und den Paketquellen ist. Um die Verwaltung etc. der Snaps kümmert sich der im Hintergrund laufende Dienst namens `snapd`. Die Installation und Verwaltung von Snaps erfolgt über den Kommandozeilenbefehl [#Benutzung snap]. Snaps können alternativ auch über [:Gnome-Software:] bzw. ab Ubuntu 20.04 über den Snapstore installiert werden. == Aufbau, Ausführung, Speicherbedarf == Technisch gesehen sind Snaps ein Image auf Basis des Dateisystems [wikipedia:SquashFS:]. Gespeichert sind alle Snaps unter '''/var/lib/snapd/snaps/NameDesSnaps_Versionsnummer.snap'''. Beim Systemstart wird die jeweils aktuelle Version des Snaps [:mount:eingehängt], der Einhängepunkt ist das [https://forum.snapcraft.io/t/the-system-snap-directory/2817 Snapverzeichnis] {en} mit der Struktur '''/snap/NameDesSnaps/Versionsnummer'''. Wird das im Snappaket enthaltene Programm aufgerufen, werden transparent zur Laufzeit die Daten aus dem Snap entpackt und ausgeführt. Dadurch kann es vorkommen, dass manche Snaps langsamer starten als über die Paketverwaltung installierte Programme, welche unkomprimiert gespeichert sind. Da alle Snaps auf der minimalen Laufzeitumgebung core laufen, bringen Snappakete alle Abhängigkeiten (Dateien, Bibliotheken etc.), die sie benötigen, innerhalb des Snap-Pakets mit. Eine Ausnahme sind Bibliotheken von [#Desktop-snap Desktopumgebungen] wie z.B. Gnome. Diese sind als separates Snap verfügbar, welches von anderen Snaps genutzt werden kann. Snappakete können, müssen aber nicht größer sein als entsprechende DEB-Pakete. Hat man viele verschiedene Snaps installiert oder von einem Snap mehrere Versionen, so kann es vorkommen, dass mehrere Gigabyte Daten im Verzeichnis '''/var/lib/snapd/snaps''' zusammenkommen. Snaps sind immer komprimiert und werden nie dekomprimiert auf die Festplatte geschrieben oder entpackt im Speicher gehalten. Der Befehl {{{#!vorlage Befehl du -hs /snap/NameDesSnaps #für ein bestimmtes Snap #bzw. du -hs /snap/* #für alle Snaps }}} ist von daher irreführend, da so angezeigt wird, wie viel Speicherplatz das Snap `NameDesSnaps` unkomprimiert belegen würde - aber die Daten liegen nirgends unkomprimiert. Den tatsächlichen Platz, der auf der Festplatte pro Snap belegt ist, kann man mittels {{{#!vorlage Befehl du -h /var/lib/snapd/snaps/NameDesSnaps_Versionsnummer.snap # für ein bestimmtes Snap # bzw. du -hc /var/lib/snapd/snaps/NameDesSnaps_*.snap # für alle Versionen eines bestimmten Snaps # bzw. du -hc /var/lib/snapd/snaps/*.snap # für alle Snaps }}} anzeigen lassen. Im Gegensatz zu Programmen, die aus der normalen Paketverwaltung installiert werden, können bei Snaps mehrere Versionen des selben Programms installiert sein. So ist es auch möglich, ältere Versionen eines Programms oder auch Beta- oder Entwicklerversionen zu nutzen. Letztere aber nur, wenn die Entwickler die Beta- oder Entwicklerversion auf [https://snapcraft.io] {en} zur Verfügung stellen. Snaps aktualisieren sich im Hintergrund automatisch, dabei wird bei Ubuntu Desktop und Server die ältere Version nach der Aktualisierung behalten. == Confinements: Abschottung von Snaps == Snaps sind untereinander und gegen das System grundsätzlich abgeschottet. Die Snaps laufen in einem "Confinement" (deutsch: Einsperrung, Haft; sinngemäß übersetzt: eingeschränkter Raum). Zur Abschottung der Snaps wird primär auf [:AppArmor:] gesetzt. Der Zugriff von einem Snap auf das andere (z.B. damit Snap A eine Bibliothek von Snap B nutzt) ist ebenfalls grundsätzlich unterbunden - kann aber bei Notwendigkeit gegebenenfalls [#Schnittstellen-Slots-und-Plugs manuell hergestellt] werden. Snaps kennen drei verschiedene Confinements: * ''strict'': Der strikte Modus ist die Voreinstellung für alle Snaps. Es gelten alle oben genannten Einschränkungen. Dem Snap können aber über die vorhandenen [#Schnittstellen-Interfaces-Slots-und-Plugs Schnittstellen] gezielt Rechte eingeräumt werden. * ''classic'': Im klassischen Modus verhält sich das Snap wie ein aus den Paketquellen installiertes Programm, d.h. das via Snap ausgeführte Programm darf alles, was die Rechte des Nutzers, der das Snap ausführt, zulassen. Wenn ein Snap im classic-Modus installiert werden muss, muss der Entwickler dies explizit deklarieren, wenn er das Snap nach snapcraft.io hochlädt. Snaps, die den classic-Modus benötigten, bekommen einen zusätzlich, manuellen Review-Prozess, bevor diese bei snapcraft.io veröffentlicht werden. * ''devmode'': Der devmod (devmod: Kurzform für "developer mode", deutsch "Entwicklermodus") ist primär für Entwickler zum Testen und Debuggen von Snaps gedacht. Normale Snaps aus dem [#snap-Tracks-und-Channels stable-Kanal] lassen sich sowieso nicht im devmod installieren. Der Devmod ist nur für Snaps aus dem Beta- oder Developmentkanal möglich. Detailliertere Erklärungen findet man im Blogartikel [https://snapcraft.io/blog/demystifying-snap-confinement Demystifying snap Confinement] {en}. == Schnittstellen: Interfaces, Slots und Plugs == Snaps können über "Interfaces" (auf Deutsch: Schnittstellen) mit Hilfe von "slots" (auf Deutsch: Steckplätze) und "plugs" (deutsch: Stecker) gezielt mit Rechten (wie z.B. dem Zugriff auf das '''/home'''-Verzeichnis) ausgestattet werden. Es gibt eine ganze Reihe von [https://snapcraft.io/docs/supported-interfaces Standardschnittstellen] {en}, welche Snaps zur Verfügung stehen. Normalerweise legt der Ersteller eines Snappakets fest, welche Schnittstellen benötigt und vom Snap genutzt werden. Die Berechtigungen können aber auch [#Berechtigungen-verwalten manuell abgefragt und geändert] werden -- was aber in der Regel nicht nötig ist. ##der Anker wird weiter oben im Artikel benötigt! [[Anker(desktop-snap)]] Des Weiteren können Snaps ihrerseits Slots bereit stellen, mit denen sich Plugs anderer Snaps verbinden können. Beispiele dafür sind z.B. das Snap '''gnome-3-28-1804''' oder auch '''gtk-3-themes'''. Diese Snaps stellen Schnittstellen bereit, die Programmen für den Gnomedesktop Zugriff auf die notwendigen Bibliotheken und Themes geben, so dass nicht jedes Snap die komplette Desktopumgebung mitbringen muss. Es gibt auch ein KDE-Frameworkssnap, welches die Schnittstellen für KDE-basierte Programme bereit stellt. == Snap Tracks und Channels == Snaps kennen weiterhin das Konzept von "Tracks" und "Channels. Ein Track ist dabei eine Art Zweig des Programms. Der Standardtrack ist dabei immer "latest" (deutsch: neuste), diesen gibt es für jedes Snap. Ob es noch weitere Tracks gibt, hängt vom Entwickler ab, der die Snaps packt. Beim [:Firefox:]snap von Mozilla gibt es beispielsweise noch den "esr"-Track des Browsers, mit dem der [https://support.mozilla.org/de/kb/versionszyklus-von-firefox-esr Extended Support Release] {en} statt der aktuellen Version installiert wird. Innerhalb eines Tracks gibt es noch verschiedene Channels (auf deutsch: Kanäle). Diese sind: * ''stable'': enthält die aktuelle, stabile Version des Programms * ''candidate'': enthält den Release Candidate, der die nächste, stabile Version des Programms werden soll * ''beta'': enthält die Betaversion des Programms * ''edge'': enthält die neueste, ggf. instabile Entwicklungsversion des Programms. Den stable-Channel gibt es für jedes Snap. Ob in einem oder mehreren der anderen Kanäle eine andere Version des Programms bereit steht, hängt vom Entwickler bzw. dem Bereitsteller des Snaps an. Per Voreinstellung wird bei der Installation eines Snaps immer die "latest/stable" Version eines Snaps installiert, also die aktuelle, stabile Version. == snapcraft.io == Snapcraft.io ist der zentrale, von Canonical betriebene Server, von dem Snaps installiert werden. Grundsätzlich kann jeder Snaps bauen und, nach einer Registrierung bei snapcraft.io, dort mit dem [https://snapcraft.io/snapcraft gleichnamigen Kommandozeilenwerkzeug] hochladen und zur Verfügung stellen. Vor der Veröffentlichung eines Snaps erfolgt eine automatisierte Prüfung des Snaps, Details dazu sind jedoch nicht bekannt. D.h. wenn man ein Snap installiert, vertraut man auch darauf, dass der Bereitsteller des Snaps keine Schadsoftware u.ä. eingebaut hat. Vom Prinzip her ist es also dasselbe Vertrauen, dass man auch beim Installieren von Fremdpaketen, Fremdsoftware in Form von Binaries, Installation von Software aus anderen Quelle (wie z.B. [https://pypi.org/ PyPi] {en}, [https://www.npmjs.com/ NPM] {en}), Einbinden von Fremdquellen etc. hat. Durch die Sicherheitsmechanismen von Snaps ist es allerdings schwieriger bis unmöglich, dass Snaps das System korrumpieren oder unbrauchbar machen -- zumindest dann, wenn sie im strict-Confinement installiert werden. Bei snapcraft.io sind einige Snaps als besonders vertrauenswürdig gekennzeichnet. Nämlich dann, wenn die Snaps direkt von einem verifizierten Upstreamentwickler selber bereitgestellt werden. Dazu gehören z.B. Mozilla mit dem Firefox, Snaps von Microsoft, das VLC-Snap, das Inkscape-Snap, und die von Canonical bereitgestellt werden (wie z.B. Chromium). Verifizierte Upstreamentwickler erkennt man daran, dass bei der Ausgabe von `snap info NameDesSnaps` in der Zeile "Publisher" ein grünes Häkchen am Ende der Zeile ist. Dieses grüne Häkchen ist auch rechts neben dem Entwicklernamen zu sehen, wenn man die Seite des Snaps auf `https://snapcraft.io/NameDesSnaps` aufruft. = Installation = Ab Ubuntu 16.04 sind die für Snap benötigten Pakete bereits vorinstalliert. Ansonsten können diese aber auch nachträglich installiert werden[1]: {{{#!vorlage Paketinstallation snapd }}} = Benutzung = Der zentrale Kommandozeilenbefehl[2] ist `snap`, die allgemeine Syntax lautet[3]: {{{#!vorlage Befehl snap BEFEHL [OPTIONEN] }}} Je nach Befehl werden zusätzlich Root-Rechte[3] benötigt (z.B. zur Installation und Deinstallation von Snaps). == Snaps suchen == Mit dem Befehl {{{#!vorlage Befehl snap find SUCHBEGRIFF }}} werden alle auf snapcraft.io enthaltenen Snaps, auf die der Suchbegriff `SUCHBEGRIFF` passt, angezeigt. Der Suchbegriff muss aus mindestens einem Buchstaben bestehen, dass Suchen z.B. mit nur `*` ist nicht möglich. Mit dem Befehl `snap find` ist es leider nicht möglich, sich alle verfügbaren Snaps anzeigen zu lassen. Dies ist aber z.B. online über die Webseite [https://snapcraft.io/store snapcraft.io] {en} möglich. == Informationen zu einem Snap anzeigen == Mit dem Befehl {{{#!vorlage Befehl snap info NamesDesSnaps }}} werden detaillierte Information zum Snap `NameDesSnaps` angezeigt. Hier ist auch auflistet, welche Versionen des Programms in den Tracks und Channels des Snaps verfügbar sind. == Snaps installieren == Das Installieren von Snaps erfolgt mit einem Befehl: {{{#!vorlage Befehl sudo snap install NamesDesSnaps }}} So würde `NameDesSnaps` installiert, per Voreinstellung die Version aus `latest/stable` === Snaps aus anderen Tracks und Channels installieren === Um eine andere Programmversion zu installieren -- sofern der Entwickler diese per snap zur Verfügung stellt -- muss bei der Installation zusätzlich der Channel und ggf. der Track angegeben werden. Die allgemeine Syntax lautet: {{{#!vorlage Befehl sudo snap install NameDesSnaps --track/channel }}} Erfolgt keine Angabe des Tracks, wird automatisch `latest` benutzt. Beispiele: {{{#!vorlage Befehl sudo snap install vlc --beta }}} würde die Betaversion von [:VLC:] aus dem latest-Track installieren. Der Befehl {{{#!vorlage Befehl sudo snap install firefox --channel=esr/candidate }}} würde den Release Candidate der ESR-Version des Firefox installieren. === Snaps manuell installieren === Die Installation von lokal heruntergeladenen Snaps funktioniert genauso, allerdings ist hier zwingend die Option `--dangerous` erforderlich, sofern vorher keine passende Signatur installiert wurde. Selbstverständlich sollte man dies nur tun, wenn man dem Ursprung der '''.snap'''datei vertraut. Um ein manuell heruntergeladenes Snap zu installieren, wechselt man ins Verzeichnis, in dem die Datei liegt, und führt den Befehl {{{#!vorlage Befehl sudo snap install NAME_DER_SNAPDATEI.snap --dangerous }}} aus. == Snaps aktualisieren == Der Befehl `refresh` aktualisiert alle Snaps: {{{#!vorlage Befehl sudo snap refresh }}} Man kann auch gezielt einzelne Snaps aktualisieren. So würde {{{#!vorlage Befehl sudo snap refresh NameDesSnaps }}} nur den Snap `NameDesSnaps` aktualisieren. Dies funktioniert allerdings nur mit Snaps, die von snapcraft.io installiert wurden. Eine regelmäßige Prüfung auf Aktualisierungen erfolgt auch regelmäßig im Hintergrund. Der Aufruf von {{{#!vorlage Befehl snap refresh --time }}} gibt aus, wann zuletzt automatisch nach Aktualisierungen gesucht wurde und für wann die nächste Suche terminiert ist. Zeitpunkt und Häufigkeit für die Suche können eingestellt werden, siehe [https://snapcraft.io/docs/keeping-snaps-up-to-date offizielle Dokumentation] {en}. == Installierte Snaps anzeigen == Der Befehl {{{#!vorlage Befehl snap list }}} listet die installierten Snaps auf. Dabei werden standardmäßig Name, Version, Revision, Track/Channel, Entwickler, und Notizen des Snaps angezeigt. == Anzahl der installierten Versionen begrenzen == Bei der Installation einer neueren Version eines Snap-Pakets werden, wie oben erwähnt, nicht alle alten Versionen automatisch entfernt. Standardmäßig wird bei den Desktop Versionen von Ubuntu und Ubuntu Server die vorherige aktuelle Version behalten. Dies lässt sich auch nicht reduzieren, d.h. es ist nicht möglich, nur die aktuelle Version des Snaps zu haben. Bei [https://ubuntu.com/core Ubuntu Core] {en} werden drei Versionen des Snaps behalten. Man kann aber die Anzahl der älteren Versionen, die behalten werden sollen, aber erhöhen. Die aktuelle Einstellung kann über den Befehl {{{#!vorlage Befehl sudo snap get system refresh.retain }}} abgefragt werden. Gibt dieser Befehl einen Fehler aus, so wurde der Wert noch nicht angelegt und der Default von 2 (eine nicht verwendete Version) wird verwendet. Eine Änderung des Werts erfolgt über folgenden Befehl {{{#!vorlage Befehl sudo snap set system refresh.retain=3 }}} Damit würde die Anzahl der Versionen auf 3 geändert (aktuelle und zwei nicht verwendete). Ändert man den Wert von einem höheren auf einen niedrigeren, also z.B. wieder von 3 auf 2, wird dann die beiden ältesten Version nicht direkt automatisch entfernt. Dies geschieht erst bei der nächsten automatischen Aktualisierung. == Snaps deinstallieren == Zur Deinstallation dient der Befehl `remove`. Mit {{{#!vorlage Befehl sudo snap remove NameDesSnaps }}} würde der Snap `NameDesSnaps` entfernt. Um gezielt ältere installierte Versionen eines Snaps zu deinstallieren, muss dessen Revision mit angegeben werden. Der Befehl `snap list` zeigt nur die neueste (aktuell genutzte) Revision an, alle installierten Revisionen bekommt man über den Befehl: {{{#!vorlage Befehl snap list --all }}} Eine Beispielausgabe kann so aussehen: {{{ snap list --all Name Version Rev Tracking Developer Notes core 16-2.32.5 4486 stable canonical core,disabled core 16-2.32.8 4650 stable canonical core gnome-calculator 3.26.0 154 stable/… canonical disabled gnome-calculator 3.28.1 167 stable/… canonical - }}} Hier sind zwei Revisionen von `core` und zwei Revisionen des `gnome-calculator` installiert. Die ältere `gnome-calculator` Revision würde über den Befehl {{{#!vorlage Befehl snap remove --revision 154 gnome-calculator }}} entfernt. == Zu älterer Version zurückkehren == Funktioniert eine neuere Version eines Snaps nicht wie gewünscht oder hat Fehler, kann man zu einer älteren Version zurückkehren. Das funktioniert aber nur, wenn diese noch lokal installiert ist. Es ist nicht möglich, eine ältere Version von snapcraft.io zu installieren. Der Befehl {{{#!vorlage Befehl snap revert NameDesSnaps }}} würde das Snap `SNAPNAME` auf die vorherige Version zurücksetzen. Als Ausgabe erhält man dann z.B. {{{ NameDesSnaps reverted to 1.9.4 }}} == Verlauf anzeigen == Der Befehl {{{#!vorlage Befehl snap changes }}} zeigt den Verlauf der Installationen, Deinstallationen etc. von Snaps ein. Im Folgenden ist eine Beispielausgabe gezeigt: {{{ ID Status Spawn Ready Summary 103 Done 2018-03-17T17:53:47Z 2018-03-17T17:53:47Z Refresh all snaps: no updates 104 Done 2018-03-18T09:49:58Z 2018-03-18T09:49:58Z Refresh all snaps: no updates 105 Done 2018-03-18T10:35:08Z 2018-03-18T10:35:08Z Revert "go" snap 106 Done 2018-03-18T10:36:29Z 2018-03-18T10:36:29Z Revert "go" snap 107 Done 2018-03-18T10:37:01Z 2018-03-18T10:37:02Z Refresh "go" snap 108 Done 2018-03-18T10:56:17Z 2018-03-18T10:56:18Z Remove "go" snap 109 Done 2018-03-18T10:57:46Z 2018-03-18T10:57:47Z Remove "core" snap 110 Done 2018-03-18T11:01:07Z 2018-03-18T11:01:07Z Refresh all snaps: no updates }}} == Automatisches Starten von Snaps verhindern / aktivieren == Hat man via snap eine Serveranwendung installiert (wie z.B. einen Datenbankserver), dann startet dieser beim Systemstart automatisch, sofern der Entwickler des Snaps dies so konfiguiert hat. Der Start erfolgt über eine [:systemd:]unit. Eine Übersicht über die laufenden Units von Snaps liefert der Befehl {{{#!vorlage Befehl systemctl list-units snap.* }}} Den automatischen Start eines solchen Snaps kann man mit dem Befehl {{{#!vorlage Befehl sudo snap disable NamesDesSnaps }}} deaktivieren. Zum Aktivieren nutzt man den Befehl mit `enable`. == Berechtigungen verwalten == {{{#!vorlage Warnung Fehlende Berechtigungen können die Funktionsweise eines Snaps einschränken oder es gänzlich unbrauchbar machen. Bei der Installation erteilte Rechte sollten deshalb nicht entzogen werden. }}} Wie im Abschnitt [#Technik-und-Sicherheit Technik und Sicherheit] bereits erwähnt, kennt Snap das Konzept von Slots und Plugs. Um sich alle verfügbaren Schnittstellen anzeigen zu lassen, nutzt man den Befehl: {{{#!vorlage Befehl snap interfaces }}} Um zu sehen, welche Plugs welches Snaps bereits mit welchem Slot verbunden sind, dient der Befehl {{{#!vorlage Befehl sudo snap connections }}} Ist dem Namen des Slots ein Doppelpunkt `:` vorangestellt, ist dies ein Slot, der von core, also der Laufzeitumgebung für Snaps, bereitgestellt wird. Ansonsten ist die Namensstruktur `NameDesSnaps:NameDesSlots`, also z.B. `gtk-common-themes:icon-themes`. Normalerweise werden die notwendigen Verbindungen von Slots und Plugs automatisch hergestellt. Sollte dies nicht der Fall sein, kann man dies manuell erledigen: {{{#!vorlage Befehl sudo snap connect MAME_DES_SNAP slot:plug }}} Zu beachten ist, dass man nicht die Plugs beliebiger Snaps mit jedem Slot verbinden kann, diese muss in der Konfigurationsdatei des Snaps explizit erlaubt sein. Die Konfigurationsdatei findet man unter '''/snap/NAME_DES_SNAPS/current/meta/snap.yaml''', die erlaubten Plugs findet man im Abschnitt `apps:plugs:` Um die Verbindung wieder zu lösen, dient der Befehl: {{{#!vorlage Befehl sudo snap disconnect NAME_DES_SNAP slot:plug }}} Eine ausführlichere Einführung und Erklärung ist in der Dokumentation in der Sektion [https://docs.snapcraft.io/interface-management/6154 Interface Management] {en} zu finden. == Weitere Befehle == `snap` kennt eine ganze Reihe weiterer Befehle. Eine Übersicht über alle Befehl bekommt man mit {{{#!vorlage Befehl snap --help }}} Hilfe zu einem Befehl bekommt man mit {{{#!vorlage Befehl snap BEFEHL --help }}} = Programme starten = Programme, die via `snap` installiert wurden, lassen sich normalerweise wie alle anderen Programme auch starten. Unter Ubuntu sind Anwendungsprogramme auch in der Anwendungsansicht enthalten. Sollte dies nicht der Fall sein -- was z.B. bei Snaps passieren kann, die manuell lokal und nicht über den zentralen Snapstore installiert wurden -- dann kann man auch ins Verzeichnis '''/snap/bin'''/ wechseln und das Programm dann von dort manuell starten. = Eigene Snaps erstellen = Es ist auch möglich, eigene Snaps zu erstellen. Dazu dient das Programm [https://snapcraft.io/create/ snapcraft] {en}. = snapd deaktivieren = Möchte man den snapd-Dienst nicht ganz deinstallieren sondern nur deaktivieren, müssen folgende [:systemd/Units:] mit dem Werkzeug [:systemd/systemctl:systemctl] abgestellt werden: {{{#!vorlage befehl sudo systemctl disable snapd.service sudo systemctl disable snapd.socket sudo systemctl disable snapd.seeded.service }}} Nach einem Neustart werden die Änderungen übernommen und bei Bedarf kann man den Dienst dann immer noch manuell starten: {{{#!vorlage befehl sudo systemctl start snapd.service }}} Um das Deaktivieren rückgängig zu machen, muss in den oben genannten drei Befehlen das `disable` durch `enable` ersetzt werden. = snapd deinstallieren inklusive aller installierten Snaps = Möchte man snap inkl. aller installierten Snaps deinstallieren, nutzt man den Befehl: {{{#!vorlage Befehl sudo apt purge snapd }}} Im Gegensatz zu `sudo apt remove snapd` werden mit obigem Befehl auch alle installierten Snaps inkl. aller Revisionen deinstalliert. Zusätzlich muss man noch die Dateien löschen, die im Homeverzeichnis gespeichert sind. Dazu muss man im eigenen Homeverzeichnis den Ordner '''snap''' inkl. aller darin befindlichen Unterverzeichnisse löschen. Ggf. sollte man noch in [:Gnome-Software:] die Erweiterung ''"Unterstützung von Snap"'' deaktivieren, damit man sich bei einer späteren Installation von Paketen aus Gnome-Software nicht unabsichtlich ein Snappaket installiert. Als Ergänzung dazu kann man im [:Konfigurationsverzeichnisse: Konfigurationsverzeichnis] '''/etc/apt/preferences.d/''' noch eine Datei ''sprechender_name'''''.pref''' anlegen [4][3], die die Installation von snapd über eines der wenigen Übergangspakete (transitional package) verhindert, die ihren beabsichtigten Inhalt als Snap installieren würden. {{{ # Verhindert die Installation von snapd # und somit auch von Übergangspaketen, # die snapd als Abhängigkeit benötigen # Bsp. chomium-browser (ab 19.10), firefox (ab 22.04) Package: snapd Pin: release o=* Pin-Priority: -1 }}} Um dann aber tatsächlich Firefox per [:APT:] aus einer anderen Quelle installieren zu können, z.B. [launchpad:~mozillateam/+archive/ubuntu/ppa:Mozilla Team PPA], muss auch noch die Originalquelle gesperrt werden. Dazu '''/etc/apt/preferences.d/firefox.pref''' anlegen mit: {{{ # Verhindert die Vorherrschaft der Snapversion von firefox zur Installation Package: firefox* Pin: release o=ubuntu Pin-Priority: -1 }}} = Probleme und Lösung = == Konfigurationsdaten zwischen Programmen aus den Quellen und Snaps übernehmen == Hat man ein Programm zuerst aus den Paketquellen installiert und wechselt dann auf eine Version des Programms als Snap (oder umgekehrt), dann werden Konfigurationseinstellungen des Programms (wie z.B. Profile von Firefox oder Thunderbird) nicht übernommen. Dies liegt daran, dass Snaps und Paketverwaltung und darüber installierte Dateien unabhängig voneinander sind. Die benutzerspezifischen Konfigurationsdateien von Snaps liegen unterhalb des Verzeichnisses '''/home/BENUTZERNAME/snap''', die via Paketverwaltung installierter Programme unterhalb von '''/home/BENUTZERNAME/.config''' oder in '''/home/BENUTZERNAME/.PROGRAMMNAME'''. = Links = * [https://snapcraft.io/docs umfangreiche, offizielle Dokumentation] {en} zu Snaps * [wikipedia_en:Snap_(package_manager):snap-Seite] in der englischen Wikipedia * [launchpad:snapd:] bei Launchpad # tag: Ubuntu, System, Paketverwaltung