Snap StoreEdit
Mit dem Snap Store können Entwickler ihre Anwendungen direkt für Benutzer veröffentlichen. Bei herkömmlichen Linux-Paketverwaltungsansätzen wie APT oder YUM werden die Anwendungen als Teil des Betriebssystems gepackt und verteilt. Dies führt zu einer Verzögerung zwischen der Anwendungsentwicklung und der Bereitstellung für Endbenutzer. Im Gegensatz dazu können Anwendungsentwickler ihre Anwendungen im Snap Store veröffentlichen und sie direkt an Benutzer weitergeben, ohne dass Distributionsbetreuer eingreifen müssen.
Alle in den Snap Store hochgeladenen Apps werden automatisch getestet, einschließlich eines Malware-Scans. Snap-Apps erhalten jedoch nicht den gleichen Überprüfungsgrad wie Software in den regulären Ubuntu-Archiven. In einem Fall im Mai 2018 wurde festgestellt, dass zwei Anwendungen desselben Entwicklers einen Kryptowährungs-Miner enthielten, der während der Anwendungsausführung im Hintergrund lief. Als dieses Problem gefunden wurde, entfernte Canonical die Anwendungen aus dem Snap Store und übertrug das Eigentum an den Snaps an einen vertrauenswürdigen Drittanbieter, der die Snaps ohne den vorhandenen Miner erneut veröffentlichte. Obwohl die Snap-Sandbox die Auswirkungen einer schädlichen App verringert, empfiehlt Canonical Benutzern, Snaps nur von Publishern zu installieren, denen der Benutzer vertraut.
Da Pakete im Snap Store von Entwicklern selbst verwaltet werden, können Distributionsbetreuer nicht sicherstellen, dass Pakete den Qualitätsstandards entsprechen und rechtzeitig aktualisiert werden. In einem Fall hat Microsoft über ein Jahr lang eine veraltete Version von Skype im Snapcraft Store gelassen.
Obwohl der Snap Store von Canonical derzeit der einzige existierende Store für Snaps ist, kann Snap selbst ohne Store verwendet werden. Snap-Pakete können von jeder Quelle bezogen werden, einschließlich der Website eines Entwicklers. Red Hat-Mitarbeiter Adam Williamson und Linux Mint-Projektleiter Clement Lefebre haben Canonical dafür kritisiert, dass einige serverseitige Teile des Snap Store geschlossen bleiben. Clement gibt an, dass dies zu einem Interessenkonflikt führt, der die Neutralität von Snap beeinträchtigt, da Canonical Ubuntu entwickelt.
Universal Linux packagesEdit
Snaps sind eigenständige Pakete, die in einer Reihe von Linux-Distributionen funktionieren. Dies unterscheidet sich von herkömmlichen Linux-Paketverwaltungsansätzen, die speziell angepasste Pakete für jede Linux-Distribution erfordern.
Das Snap-Dateiformat ist ein einzelnes komprimiertes Dateisystem im SquashFS-Format mit der Erweiterung .snap
. Dieses Dateisystem enthält die Anwendung, Bibliotheken, von denen es abhängt, und deklarative Metadaten. Diese Metadaten werden von snapd interpretiert, um eine entsprechend geformte sichere Sandbox für diese Anwendung einzurichten. Nach der Installation wird der Snap vom Host-Betriebssystem bereitgestellt und im laufenden Betrieb dekomprimiert, wenn die Dateien verwendet werden. Dies hat zwar den Vorteil, dass Snaps weniger Speicherplatz verbrauchen, bedeutet aber auch, dass einige große Anwendungen langsamer starten.Ein wesentlicher Unterschied zwischen Snap und anderen universellen Linux-Verpackungsformaten wie Flatpak besteht darin, dass Snap jede Klasse von Linux-Anwendungen wie Desktop-Anwendungen, Server-Tools, IoT-Apps und sogar Systemdienste wie den Druckertreiber-Stack unterstützt. Um dies sicherzustellen, stützt sich Snap auf systemd für Funktionen wie das Ausführen von Socket-aktivierten Systemdiensten in einem Snap. Dadurch funktioniert Snap nur auf Distributionen, die dieses Init-System verwenden.
Konfigurierbares sandboxEdit
Anwendungen werden im Handumdrehen in einem Container mit eingeschränktem Zugriff auf das Hostsystem ausgeführt. Über Schnittstellen können Benutzer einer Anwendung vermittelten Zugriff auf zusätzliche Funktionen des Hosts gewähren, z. B. Audioaufnahme, Zugriff auf USB-Geräte und Videoaufnahme. Diese Schnittstellen vermitteln reguläre Linux-APIs, sodass Anwendungen in der Sandbox funktionieren können, ohne neu geschrieben werden zu müssen. Desktop-Anwendungen können auch die XDG-Desktop-Portale verwenden, eine standardisierte API, die ursprünglich vom Flatpak-Projekt erstellt wurde, um Sandbox-Desktop-Anwendungen Zugriff auf Host-Ressourcen zu gewähren. Diese Portale bieten im Vergleich zu den nativen Linux-APIs häufig eine bessere Benutzererfahrung, da sie den Benutzer zum Zeitpunkt der Verwendung durch die Anwendung zur Berechtigung für Ressourcen wie eine Webcam auffordern. Der Nachteil ist, dass Anwendungen und Toolkits neu geschrieben werden müssen, um diese neueren APIs zu verwenden.
Die Snap-Sandbox unterstützt auch die gemeinsame Nutzung von Daten und Unix-Sockets zwischen Snaps. Dies wird häufig verwendet, um gemeinsame Bibliotheken und Anwendungsframeworks zwischen Snaps zu teilen, um die Größe von Snaps zu reduzieren, indem Duplikate vermieden werden.
Die Snap-Sandbox stützt sich stark auf das AppArmor Linux-Sicherheitsmodul des Upstream-Linux-Kernels. Da nur ein „Major“ Linux Security Module (LSM) gleichzeitig aktiv sein kann, ist die Snap-Sandbox viel weniger sicher, wenn ein anderes Major LSM aktiviert ist. Infolgedessen ist die Snap-Sandbox auf Distributionen wie Fedora, die SELinux standardmäßig aktivieren, stark beeinträchtigt. Obwohl Canonical mit vielen anderen Entwicklern und Unternehmen zusammenarbeitet, um die gleichzeitige Ausführung mehrerer LSMs zu ermöglichen, ist diese Lösung noch weit entfernt.
Die Snap-Sandbox verhindert, dass Snap-Desktop-Anwendungen auf die Designs des Host-Betriebssystems zugreifen, um Kompatibilitätsprobleme zu vermeiden. Damit Snaps ein Thema verwenden können, muss es auch in einem separaten Snap verpackt werden. Viele beliebte Themen werden von den Snap-Entwicklern gepackt, aber einige Themen werden noch nicht unterstützt und ungewöhnliche Themen müssen manuell installiert werden. Wenn ein Thema nicht als Snap-Paket verfügbar ist, müssen Benutzer das am besten passende verfügbare Thema auswählen. Es wird daran gearbeitet, es Dritten zu erleichtern, Themen im Handumdrehen zu verpacken und ungewöhnliche Systemthemen automatisch zu installieren.
Automatische und atomare updatesEdit
snapd sucht mehrmals täglich nach verfügbaren Updates aller Snaps und installiert sie im Hintergrund im atomaren Betrieb. Updates können rückgängig gemacht werden und Delta-Codierung verwenden, um ihre Download-Größe zu reduzieren.
Publisher können mehrere Versionen ihrer Software parallel über Kanäle veröffentlichen und aktualisieren. Jeder Kanal hat einen bestimmten Track und ein bestimmtes Risiko, die die Version und Stabilität der auf diesem Kanal veröffentlichten Software angeben. Bei der Installation einer Anwendung verwendet Snap standardmäßig den latest/stable
-Kanal, der automatisch auf neue Hauptversionen der Software aktualisiert wird, sobald diese verfügbar sind. Publisher können zusätzliche Kanäle erstellen, um Benutzern die Möglichkeit zu geben, sich an bestimmte Hauptversionen ihrer Software zu halten. Zum Beispiel würde ein 2.0/stable
-Kanal es Benutzern ermöglichen, sich an die 2.0-Version der Software zu halten und nur kleinere Updates zu erhalten, ohne das Risiko von abwärtskompatiblen Änderungen. Wenn der Herausgeber eine neue Hauptversion in einem neuen Kanal veröffentlicht, können Benutzer manuell auf die nächste Version aktualisieren, wenn sie dies wünschen.
Obwohl automatische Updates nicht deaktiviert werden können, gibt es viele Möglichkeiten, Updates für bestimmte Anforderungen zu konfigurieren. Benutzer können wählen, auf einer bestimmten Hauptversion der Software zu bleiben, indem Sie den Kanal angeben, können sie das Update-Intervall konfigurieren, um Zeit zu haben, manuell Updates zu überprüfen, und sie können Updates für bis zu 60 Tage halten. Darüber hinaus werden Updates bei gemessenen Verbindungen automatisch deaktiviert. Trotz dieser Steuerelemente haben einige Benutzer ihre Beschwerden über das Fehlen einer Option zum vollständigen Deaktivieren automatischer Updates geäußert.
SnapcraftEdit
Canonical Ltd.
29 October 2015; 5 years ago
https://github.com/snapcore/snapcraft
Python
Linux, macOS, Microsoft Windows
GPLv3
snapcraft.io
Snapcraft ist ein Werkzeug für Entwickler, um ihre Programme im Snap-Format zu verpacken. Es läuft auf jeder Linux-Distribution, die von Windows, macOS und Microsoft Windows unterstützt wird. Snapcraft erstellt die Pakete in einer virtuellen Maschine mit Multipass, um sicherzustellen, dass das Ergebnis eines Builds dasselbe ist, unabhängig davon, auf welcher Distribution oder welchem Betriebssystem es erstellt wird. Snapcraft unterstützt eine große Anzahl von Build-Tools und Programmiersprachen wie Go, Java, JavaScript, Python, C / C ++ und Rust. Es ermöglicht auch den Import von Anwendungsmetadaten aus mehreren Quellen wie AppStream, git, Shell-Skripten und setup.py
-Dateien.