snap
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 24.04 Noble Numbat
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:
Snap ist ein Paketformat, das maßgeblich von Canonical entwickelt und konfliktfrei neben DEB-Paketen aus normalen Paketverwaltung installiert und genutzt werden kann; es ist für Ubuntu und auch für viele andere Linux-Distributionen 🇬🇧 verfügbar.
Eine in Form eines Snap-Pakets verteilte Applikation bezeichnet man ebenfalls kurz als "Snap".
Ursprünglich waren Snaps vor allem für den Einsatz im Server- bzw. Cloudumfeld und auch für das 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 Snap-Server bezogen werden, welcher von Canonical betrieben wird. Alternative Server gibt es zur Zeit nicht. Die Installation von lokal heruntergeladenen Snaps ist aber grundsätzlich auch möglich.
Dieser Artikel beschreibt nach den Grundlagen den praktischen Umgang mit Snaps unter Verwendung des dafür vorgesehenen Dienstprogramms snap
.
snapd, der Client-Dienst, der für Snap(s) zuständig ist, ist größtenteils in Go implementiert, quelloffen und steht unter GPL-3.0 Lizenz.
Technik und Sicherheit¶
Die Grundlage, auf der alle Snaps laufen, heißt einfach "core". Dies ist eine Laufzeitumgebung für Snaps, welche ebenfalls als Snap installiert ist. Die Laufzeitumgebung core
ist ein minimales Betriebssystem auf Basis von Ubuntu 16.04; es gibt aber inzwischen weitere Versionen core18
, core20
, core22
usw., welche aus neueren Versionen von Ubuntu LTS abgeleitet wurden. Bei der Installation eines Snaps wird automatisch auch die jeweilig benötigte Version der Laufzeitumgebung besorgt, wenn diese noch nicht installiert ist.
Um die Verwaltung etc. der Snaps kümmert sich der im Hintergrund laufende Dienst namens snapd
, welcher selbst auch als Snap installiert ist.
Ausserdem ist immer auch eine Applikation bare
installiert, die gar nichts macht, aber von anderen Snaps als Testobjekt verwendet werden kann.
Die Installation und Verwaltung von Snaps erfolgt über den Kommandozeilenbefehl snap
. Snaps können alternativ auch über Gnome-Software bzw. seit Ubuntu 20.04 über den Snapstore installiert werden.
Aufbau, Ausführung, Speicherbedarf¶
Technisch gesehen sind Snaps eine einzelne Datei, die ein SquashFS Dateisystem beinhaltet, welches wiederum das Programm, die benötigten Bibliotheken, Man-Pages etc. enthält. Beim Systemstart wird die jeweils aktuelle Version aller aktiven Snaps eingehängt, der Einhängepunkt ist das Verzeichnis /snap/ 🇬🇧 mit der Struktur /snap/NameDesSnaps/Versionsnummer.
Wird das im Snap enthaltene Programm aufgerufen, werden transparent zur Laufzeit die benötigten Dateien aus dem Snap entpackt, ins RAM geladen und ausgeführt. Dadurch könnte es vorkommen, dass manche Snaps langsamer starten als über die Paketverwaltung installierte Programme, welche unkomprimiert gespeichert sind. Dies hängt letztendlich maßgeblich von der Anzahl der zu entpackenden Dateien und der Geschwindigkeit des Prozessors ab.
Da alle Snaps auf der minimalen Laufzeitumgebung core laufen, bringen Snaps in der Regel alle Abhängigkeiten (Dateien, Bibliotheken etc.) mit, die sie benötigen. Eine Ausnahme sind Bibliotheken von Desktopumgebungen wie z.B. Gnome. Diese sind als separates Snap verfügbar, welches von anderen Snaps genutzt werden kann.
Snaps können, müssen aber nicht größer sein als entsprechende DEB-Pakete. Gespeichert sind alle Snaps unter /var/lib/snapd/snaps. Die Struktur für die Namen der jeweiligen Dateien ist NameDesSnaps_Versionsnummer.snap. Den belegten Platz auf dem Laufwerk eines oder mehrerer Snaps kann man mittels du mit den folgenden Befehlen ermitteln:
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
Im Gegensatz zu Programmen, die aus der normalen Paketverwaltung installiert werden, können bei Snaps mehrere Versionen desselben 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 🇬🇧 zur Verfügung stellen. Snaps aktualisieren sich im Hintergrund automatisch, dabei bleibt bei Ubuntu nach der Aktualisierung (mindestens) eine ältere Version erhalten.
Abschottung von Snaps: Confinements¶
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 andere (z.B. damit Snap A eine Bibliothek von Snap B nutzt) ist ebenfalls grundsätzlich unterbunden – kann aber bei Notwendigkeit gegebenenfalls 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 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 devmode (devmode: Kurzform für "developer mode", deutsch "Entwicklermodus") ist primär für Entwickler zum Testen und Debuggen von Snaps gedacht. Normale Snaps aus dem stable-Kanal lassen sich sowieso nicht im devmod installieren. Der Devmod ist nur für Snaps aus dem Beta- oder Developmentkanal möglich.
Das voreingestellte Confinement der Installation kann man über den Befehl[2]
snap debug confinement
im Terminal abfragen. Als Ausgabe sollte man normalerweise strict
erhalten.
Detailliertere Erklärungen findet man im Blogartikel Demystifying Snap Confinement 🇬🇧.
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 Verzeichnis /home) ausgestattet werden.
Es gibt eine ganze Reihe von Standardschnittstellen 🇬🇧, welche Snaps zur Verfügung stehen. Normalerweise legt der Ersteller eines Snaps fest, welche Schnittstellen benötigt und vom Snap genutzt werden. Die Berechtigungen können aber auch manuell abgefragt und geändert werden – was aber in der Regel nicht nötig ist.
⚓︎ Des Weiteren können Snaps ihrerseits Slots anbieten, an denen sich andere Snaps mit Plugs anschließen 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 Snap für das KDE-Framework, welches die Schnittstellen für KDE-basierte Programme bereit stellt.
Varianten von Snaps: Tracks und Channels¶
Snaps kennen weiterhin das Konzept von "Tracks" und "Channels. Ein Track ist dabei eine Variante des Programms für einen bestimmten Einsatzzweck. Die Standardvariante, welche immer existieren muss, ist dabei immer der Track "latest" (deutsch: neuste). Ob es noch weitere Varianten gibt, hängt vom Entwickler ab, der die Snaps packt. Beim Snap Firefox von Mozilla gibt es beispielsweise noch den Track "esr" des Browsers, mit dem der Extended Support Release 🇬🇧 statt der aktuellen Version installiert wird.
Innerhalb eines Tracks gibt es noch verschiedene Channels (auf deutsch: Kanäle) zur Unterscheidung des Entwicklungsstandes:
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 Kanal "stable" gibt es für jedes Snap. Ob in einem oder mehreren der anderen Kanäle eine anderer Stand des Programms bereit steht, hängt vom Entwickler bzw. dem Bereitstellenden des Snaps an.
Per Voreinstellung wird bei der Installation eines Snaps immer die Version aus "latest/stable" installiert, also die aktuelle stabile Version.
Bezugsquelle: 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 gleichnamigen Kommandozeilenwerkzeug 🇬🇧 hochladen und zur Verfügung stellen. Vor der Veröffentlichung eines Snaps wird es automatisiert geprüft; Details dazu sind jedoch nicht bekannt. D.h. wenn man ein Snap installiert, vertraut man auch darauf, dass der Bereitstellende 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. PyPi 🇬🇧, NPM 🇬🇧), 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 Confinement "strict" installiert werden.
Einige Snaps sind bei snapcraft.io als besonders vertrauenswürdig gekennzeichnet, nämlich solche, die direkt von einem verifizierten Upstreamentwickler bereit gestellt werden. Dazu gehören z.B. Mozilla mit dem Firefox, Snaps von Microsoft, die Snaps VLC und Inkscape sowie die von Canonical bereitgestellten wie z.B. Chromium. Verifizierte Upstreamentwickler erkennt man in der Ausgabe von "snap info NameDesSnaps
" am grünen Häkchen am Ende der Zeile "Publisher". Dieses grüne Häkchen sieht man auch rechts neben dem Entwicklernamen, wenn man die Seite des Snaps auf "https://snapcraft.io/NameDesSnaps
" aufruft.
Verbildlichung der drei möglichen Entwicklerprofile und deren Sicherheitsprüfung | |
Beispiel Logo | Identität |
Verified Accounts sind Instituten, Stiftungen oder Unternehmen vorbehalten. Laut snapcraft.io handelt es sich hierbei um verlässliche Autoren. Die Identität der Entwickler ist nur sichergestellt, sofern die jeweilige juristische Person die Identität ihrer Entwickler prüft und sicherstellt. Quelle 🇬🇧 | |
Star Developer sind Herausgeber/Autoren von snaps, die von snapcraft.io als qualitativ hochwertig beurteilt und deren Autoren laut snapcraft.io als verlässlich eingestuft wurden. Die Identität des/der Entwickler ist nicht sichergestellt. Quelle 🇬🇧 | |
Developer Account sind Herausgeber/Autoren von snaps, die sich über ein Web-Formular registriert haben. Snapcraft.io prüft lediglich, ob die Autoren eine gültige E-Mailadresse haben. Somit hat jeder die Möglichkeit snaps mit einem Developer Account auf snapcraft.io zu publizieren. Die Identität des/der Entwickler ist nicht sichergestellt. Quelle 🇬🇧 |
Achtung!
Besondere Vorsicht ist bei der Nutzung von Crypto Wallet (englisch Wallet ‚Brieftasche‘) Anwendungen aus dem Snap Store geboten.
Im Februar und März 2024 sind gefälschte Anwendungen aufgetaucht, deren Nutzung zum total Verlust der Einlagen führte. Der ehemalige Canonical Mitarbeiter Alan Pope hat darüber auf seinem Blog berichtet.
Installation¶
Seit Ubuntu 16.04 sind die für Snap benötigten Pakete bereits vorinstalliert. Ansonsten können diese aber auch nachträglich installiert werden[1]:
snapd
Befehl zum Installieren der Pakete:
sudo apt-get install snapd
Oder mit apturl installieren, Link: apt://snapd
In den Ubuntu Paketquellen wird immer die neusten, stabile Version bereitgestellt, und zwar für alle Ubuntu Versionen. Das heißt, dass auch neue Befehle, funktionelle Erweiterungen hinzu kommen könnten, wenn ein Update für das Paket installiert wird.
Dienstprogramm snap benutzen¶
Mit dem Dienstprogramm für die Kommandozeile[2] snap
kann man Snaps installieren, konfigurieren, aktualisieren und entfernen. Allgemeine Syntax:
snap BEFEHL [OPTIONEN]
Je nach Befehl werden zusätzlich Root-Rechte[3] benötigt (z.B. zur Installation und Deinstallation von Snaps).
Der Befehl help
listet alle Befehle auf:
snap help
Detaillierte Hilfe inkl. der jeweils möglichen Optionen zu einem BEFEHL zeigt dieser Befehl an:
snap help BEFEHL
Man kann auch die Manpage des Programms lesen:
man snap
Die wichtigsten aus den ca. 50 Befehlen werden anschließend vorgestellt.
Installierte Snaps anzeigen¶
Der Befehl
snap list
listet die installierten Snaps auf. Dabei werden standardmäßig Name, Version, Revision, Track/Channel, Entwickler, und Anmerkungen des Snaps angezeigt. Es werden jedoch nur die neueste (aktuell genutzte) Revision an, alle installierten Revisionen bekommt man durch Angabe der Option --all
:
snap list --all
Eine Beispielausgabe kann so aussehen:
snap list --all Name Version Rev Tracking Developer Notes bare 1.0 5 latest/stable canonical✓ base 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✓ - snapd 2.58.2 18357 latest/stable canonical✓ snapd
Hier sind zwei Revisionen von core
und zwei Revisionen des gnome-calculator
installiert.
Snaps suchen¶
Mit dem Befehl
snap find SUCHBEGRIFF(e)
werden alle auf snapcraft.io enthaltenen Snaps, auf die der Suchbegriff SUCHBEGRIFF
passt, angezeigt. Der Suchbegriff muss aus mindestens einem konkreten Zeichen bestehen, Suchen mit Wildchars wie z.B. *
oder mit regulären Ausdrücken ist nicht möglich. Man kann mehrere Suchbegriffe angeben, die dann alle gemeinsam zutreffen.
Mit diesem Befehl kann man sich leider nicht alle verfügbaren Snaps anzeigen lassen. Dies ist aber z.B. online über die Webseite snapcraft.io 🇬🇧 möglich.
Informationen zu einem Snap anzeigen¶
Mit dem Befehl
snap info NamesDesSnaps
werden detaillierte Information zum Snap NameDesSnaps
angezeigt. Hier ist auch auflistet, welche Varianten des Programms in den Tracks und Channels des Snaps verfügbar sind.
ein Snap herunterladen¶
Normalerweise ist der separate Download eines Snaps nicht erforderlich, da dies bei der Installation automatisch erfolgt. Wer jedoch dauerhaft mit einer bestimmten Version des Snaps arbeiten will, auch nachdem bereits eine neuere Version auf dem Snap-Server verfügbar ist, muss die alte Version selber als Datei aufbewahren und diese dafür zur rechten Zeit herunter laden. Beispiel scrcpy mit Ausgabe:
snap download scrcpy
Snap "scrcpy" holen Zusicherungen für "scrcpy" werden abgerufen Snap installieren mit: snap ack scrcpy_399.assert snap install scrcpy_399.snap
Man erhält zwei Dateien, aus denen man das Programm mit den genannten Befehlen mit Root-Rechten[3] installieren kann.
ein Snap installieren¶
Das Installieren eines Snaps erfolgt mit einem Befehl:
sudo snap install NamesDesSnaps
. Per Voreinstellung wird die Version aus latest/stable
ausgewählt.
Um eine andere Programmversion zu installieren – sofern der Entwickler diese als Snap zur Verfügung stellt – muss bei der Installation zusätzlich der Channel und ggf. der Track angegeben werden.
Allgemeine Syntax:
sudo snap install NameDesSnaps --TRACK/CHANNEL
. Erfolgt keine Angabe des Tracks, wird automatisch latest
benutzt.
Beispiele:
sudo snap install vlc --beta
installiert die Betaversion von VLC aus dem Track
latest
.sudo snap install firefox --channel=esr/candidate
installiert den Release Candidate der ESR-Version des Firefox.
Andere Installationsmethoden¶
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 des Snaps vertraut. Um ein manuell heruntergeladenes Snap zu installieren, führt man im Verzeichnis, in dem die Datei liegt diesen Befehl aus:
sudo snap install NAME_DER_SNAPDATEI.snap --dangerous
Der bessere Weg führt aber über vorherige Aktivierung der beim Download erhaltenen Signatur:
sudo snap ack NAME_DER_SNAPDATEI.assert sudo snap install NAME_DER_SNAPDATEI.snap
Wie man mehrere Versionen desselben Programms als Snaps parallel installieren kann ist im Howto/snaps parallel installieren und nutzen erklärt.
Snaps können auch nur testweise installiert werden. Information dazu sind im Howto/snap testen zu finden.
Anzahl der installierten Versionen begrenzen¶
Bei der Installation einer neueren Version eines Snaps werden nicht alle alten Versionen automatisch entfernt. Standardmäßig wird bei Ubuntu Desktops Servern 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 Ubuntu Core 🇬🇧 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
sudo snap get system refresh.retain
abgefragt werden. Gibt dieser Befehl einen Fehler aus, so wurde der Wert noch nicht angelegt und es gilt die Vorgabe 2 (d.h. die aktuelle und eine ältere Version).
Eine Änderung des Werts (hier beispielhaft auf 3) erfolgt über den 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, dann werden die zu alten Versionen nicht sofort, aber bei der nächsten automatischen Aktualisierung entfernt.
Snaps aktualisieren¶
Snaps werden unter Ubuntu automatisch aktualisiert. Dabei bleibt die bisher benutzte Version (und konfigurierbar ggf. weitere ältere Versionen) erhalten und kann reaktiviert werden.
Weitere Informationen zur (auch manuellen) Aktualisierung von Snaps, der Konfiguration der Aktualisierung, Zurückhalten von Aktualisierungen und Ausgabe einer Historie der Änderungen von Snaps findet man im Artikel snap/Updateverwaltung.
ein Snap deinstallieren¶
Hierfür gibt es die Befehle revert
und remove
.
Mit revert
kann man zu einer älteren Version zurückkehren, wenn z.B. die aktuelle Version eines Snaps nicht wie gewünscht funktioniert oder Fehler hat. Das funktioniert aber nur, wenn die ältere Version noch lokal installiert ist. Die Installation einer älteren Version von snapcraft.io ist nicht möglich, wohl aber aus einer lokal vorhanden Datei. Der Befehl
sudo snap revert NameDesSnaps
setzt das Snap NameDesSnaps
auf die vorherige Version zurück. Als Ausgabe erhält man dann z.B.
NameDesSnaps reverted to 1.9.4
Mit remove
entfernt man alle installierten Versionen eines Snaps:
sudo snap remove NameDesSnaps
Um gezielt ältere installierte Versionen eines Snaps zu deinstallieren, muss dessen Revision mit angegeben werden, welche man über die Liste der installierten Snaps erfährt. Die ältere gnome-calculator
Revision aus dem Beispiel entfernt man so:
snap remove --revision 154 gnome-calculator
Berechtigungen verwalten¶
Achtung!
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 bereits erwähnt, kennt Snap das Konzept von Slots und Plugs. Um sich alle verfügbaren Schnittstellen anzeigen zu lassen, nutzt man den Befehl:
snap interfaces
Um zu sehen, welche Plugs welches Snaps bereits mit welchem Slot verbunden sind, dient der 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:
sudo snap connect MAME_DES_SNAP slot:plug
Zu beachten ist, dass man nicht die Plugs beliebiger Snaps mit jedem Slot verbinden kann, sondern nur die in der Konfigurationsdatei des Snaps explizit erlaubten Kombinationen. 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:
sudo snap disconnect NAME_DES_SNAP slot:plug
Eine ausführlichere Einführung und Erklärung ist in der Dokumentation in der Sektion Interface Management 🇬🇧 zu finden.
Hinweis:
Eine einfache grafische Möglichkeit zum Ansehen und Ändern der Zugriffsrechte einer Snap-Anwendung gibt es seit Ubuntu 20.04 in Ubuntu Software (Ubuntu Software, also eigentlich snap-store): Dort die Anwendung suchen und auf "Berechtigungen" klicken. Es öffnet sich ein Fenster, in dem man die aktuellen Rechte sieht (ähnlich wie von sudo snap interfaces <snap-Anwendung>
) und ändern kann. Die Zuweisungen von Plugs zu Slots sind jedoch nicht änderbar.
Snap als Programm starten¶
Programme, die via snap
installiert wurden, lassen sich wie alle anderen Programme manuell oder automatisch starten. Unter Ubuntu wird für ein Anwendungsprogramm bei der Installation als Snap auch eine Desktop-Datei im Ordner /var/lib/snapd/desktop/applications/ angelegt; daher sind diese Snaps auch in der Anwendungsansicht enthalten. Außerdem können sie über die Umgebungsvariable PATH
gefunden werden, in der das Verzeichnis /snap/bin/ bereits enthalten ist.
Snap manuell starten¶
In der GUI startet man ein Snap durch Klick auf das Ikon in der Anwendungsübersicht oder aus dem Menü.
Auf der Kommandozeile startet man ein Snap über seinen Namen, so wie der von "snap list
" angezeigt wird.
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 konfiguriert hat. Der Start erfolgt über eine Systemd-Unit. Eine Übersicht über die laufenden Units von Snaps liefert der Befehl:
systemctl list-units snap.*
Den automatischen Start eines solchen Snaps deaktiviert der Befehl:
sudo snap disable NamesDesSnaps
Zum Aktivieren nutzt man den Befehl mit enable
.
Eigenes Snap erstellen¶
Es ist auch möglich, eigene Snaps zu erstellen. Dazu dient das Programm snapcraft 🇬🇧.
Probleme und Lösung¶
allgemeines Debugging¶
snap bietet einige Möglichkeiten zur Fehlersuche / zum Debugging von snaps, wenn die nur mit Fehler oder eventuell gar nicht laufen. Die Möglichkeiten sind in snap/Debugging aufgeführt.
Ich will gar keine Snaps benutzen¶
Meistens reicht es aus, den Dienst snapd
zu deaktivieren. Das komplette Entfernen von snapd
inklusive aller Snaps ist im Artikel snap/snapd deinstallieren erklärt.
snapd deaktivieren¶
Möchte man den Dienst snapd
nicht beim Hochlauf automatisch starten, müssen folgende systemd/Units mit dem Werkzeug systemctl deaktiviert werden:
sudo systemctl disable snapd.service sudo systemctl disable snapd.socket
Optional können noch weitere sonst beim Hochlauf automatisch startende, aber ohne snapd
nutzlose Systemd-Units deaktiviert werden. Man erhält dann u.U. ein etwas schneller startendes System und spart Ressourcen. Beispiele:
sudo systemctl disable snapd.seeded.service sudo systemctl disable snapd.apparmor.service
Systematisch erkundet man die verzichtbaren System-Units mit dieser Prozedur:
Nach dem Start lässt man sich den zeitkritschen Pfad anzeigen:
systemd-analyze critical-chain
Wenn eine Systemd-Unit von
snapd
angezeigt vwird, deaktiviert man diese und startet den Rechner neu.Dies wiederholt man solange zeitfressende Systemd-Units von
snapd
angezeigt werden.
Außerdem kann man optional auch noch die Systemd-mount-Units für die Snaps deaktivieren. Diese liegen aber in der Regel nicht im zeitkritischen Pfad.
Nach einem Neustart werden die Änderungen übernommen und bei Bedarf kann man den Dienst dann immer noch manuell starten:
sudo systemctl start snapd.service
Dies gilt, wenn man die oben als optional deaktivierbar genannten Systemd-Units nicht deaktiviert hat, anderenfalls muss man diese vorher wieder starten.
Um das Deaktivieren rückgängig zu machen, muss in den oben genannten Befehlen das disable
durch enable
ersetzt werden.
Ich will die interne Konfiguration eines Snaps anpassen¶
Das ist im Grunde nicht vorgesehen. Es erfordert die Erstellung eines eigenen Snaps:
Das vorhandene Snap muss als Dateisystem SquashFS eingebunden werden: SquashFS (Abschnitt „unsquashfs-Dateisystem-entpacken“)
Alle Dateien aus diesem Dateisystem unter Erhaltung der Hierarchie in einen beschreibbaren temporären Ordner kopieren.
Im temporären Ordner ändern, was man ändern möchte.
Aus dem temporären Ordner wieder ein Snap bauen: Eigenes Snap erstellen
Wenn man alles richtig gemacht hat, kann man sein eigenes Snap installieren: Snap als Datei installieren
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 ~/snap, die via Paketverwaltung installierter Programme unterhalb von ~/.config oder in ~/.PROGRAMMNAME.
Links¶
intern¶
snap/Updateverwaltung - weiterführende Informationen zur Updateverwaltung von snaps
snap/Debugging - Hinweise zur Fehlersuche in snaps
Howto/snap testen - ein snap testweise installieren
SquashFS - Wikiartikel zum SquashFS-Dateisystem, was snap auch nutzt
snap/snapd deinstallieren - alles Snaps und die Laufzeitumgebung für Snaps vollständig aus dem System entfernen
extern¶
umfangreiche, offizielle Dokumentation 🇬🇧 zu Snaps
Projektseite bei Github
snapd bei Launchpad
snap-Seite in der englischen Wikipedia