Ich liebe die Idee hinter Snap und habe damit auf einer Ubuntu-VM gespielt.
Snapcraft Übersicht
Snapcraft ist ein Build- und Packaging-Tool, mit dem Sie Ihre Software im Handumdrehen verpacken können. Es macht es einfach, Komponenten aus verschiedenen Quellen zu integrieren und Technologien oder Lösungen zu entwickeln. Schlüssel Konzepte
Ein .snap-Paket für das Ubuntu Core-System enthält alle seine Abhängigkeiten. Dies hat einige Vorteile gegenüber der herkömmlichen Deb- oder RPM-basierten Abhängigkeitsbehandlung. Das Wichtigste ist, dass ein Entwickler immer sicher sein kann, dass keine Regressionen durch Änderungen am System unter seiner App ausgelöst werden.
Mit Snapcraft können Sie diese Abhängigkeiten einfach bündeln, indem Sie sie als "Teile" in der Datei snapcraft.yaml angeben. Bissig
Snappy Ubuntu Core ist eine neue Version von Ubuntu mit Transaktionsupdates - ein minimales Server-Image mit denselben Bibliotheken wie das heutige Ubuntu, aber Anwendungen werden über einen einfacheren Mechanismus bereitgestellt.
Schnelle Apps und Ubuntu Core selbst können atomar aktualisiert und bei Bedarf zurückgesetzt werden. Apps sind außerdem streng beschränkt und in einer Sandbox gespeichert, um Ihre Daten und Ihr System zu schützen.
Auf welchen Technologien basiert Snap? Wie sehen die Architektur und die Toolkits aus? Hängt Snap von den Funktionen des Linux-Kernels ab?
Ich frage, weil ich mich frage, ob ich in Zukunft die gleichen Snap-Pakete auch unter macOS verwenden kann.
Klarstellung nach erstem Kommentar:
Ich weiß, dass macOS und Ubuntu nicht binär kompatibel sind. Eine Neukompilierung ist erforderlich. Es gibt bereits fast jedes Open Source für macOS mit Homebrew . Der Entwickler könnte unter macOS entwickeln und unter Ubuntu bereitstellen, wenn Snap (in Zukunft) für macOS verfügbar sein wird.
quelle
Antworten:
Ja, dank der Stabilität der Linux-Syscall-Schnittstelle ist dies möglich.
Eine der großen Verpflichtungen von Linus Torvalds gegenüber Linux-Benutzern besteht darin, dass die vom Kernel angebotenen Schnittstellen stabil sind. Viele Menschen schätzen den Wert davon nicht oder wie herausfordernd es als Leiter eines offenen Projekts ist, dieses Engagement zu erreichen. Stellen Sie sich zum Beispiel vor, wie unvorhersehbar Änderungen in den GNOME-APIs sind! Wenn Sie hören, dass Linus auf einer Mailingliste immer intensiver wird, liegt dies fast immer daran, dass ein Committer des Kernels beschlossen hat, eine solche Schnittstelle zu ändern, "weil er eine bessere Idee hatte". Linus sagt, dass Sie INNERHALB des Kernels wild innovieren können, aber bitte brechen Sie nicht die "Userspace" -Apps, die von vorhandenen Systemaufrufen abhängen.
Infolge dieser Stabilität können andere Kernel dieselben Systemaufrufe anbieten, sodass auf Linux basierende Apps auf diesen anderen Kerneln ausgeführt werden können.
Ein Beispiel dafür ist das Joyent Triton-Projekt, das Linux-kompatible Systemaufrufe in Containern unter SmartOS (ein Nachkomme von IllumOS, ein Nachkomme von Solaris) anbietet.
Ein bekannteres Beispiel ist das neue Linux-Subsystem in Windows .
Natürlich ist die eigentliche Frage, wie viele der Syscalls angeboten werden und wie Bug-für-Bug-kompatibel sie sind. Zumindest für den Moment gibt es keine andere Umgebung, in der alle erforderlichen Systemaufrufe vorhanden sind, da die verwendeten Snaps relativ neu und tief in der Art und Weise sind, wie der Kernel über die von ihm verwalteten Dinge denkt.
Aber sie werden mit Sicherheit mit der Zeit kommen, und ich denke, dass Schnappschüsse daher in einer Vielzahl von Kontexten verwendet werden können.
Welches ist sehr cool, Patches willkommen :)
quelle
Ich kann zwar keine Informationen zu macOS finden, aber dieses OMG! Der Ubuntu- Artikel enthält ein interessantes Zitat von Mark Shuttleworth:
Wenn es "plausibel" ist, es unter Windows zum Laufen zu bringen, würde ich dasselbe für macOS sagen, außer dass Microsoft anscheinend mit Canonical zusammenarbeitet, was ich nicht über Apple gehört habe.
Die Dokumentation zu Snap-Sicherheitsrichtlinien und Sandboxing sowie der Arch Wiki-Eintrag zu snapd sind informativ:
Aus dem Arch Wiki:
Aus der Richtlinie:
Während AppArmor und seccomp nur Linux sind, sieht es so aus, als ob die Beschränkung optional gemacht werden kann, sodass wir das ignorieren können. Dann werden devpts, cgroups und mount-Namespaces verwendet. Wenn es irgendwelche Blockierungen gibt, denke ich, wäre es für diese. Ich bin mit den BSDs nicht vertraut genug, um zu sagen, was die Äquivalente sind.
Die
snapd
Anwendung selbst ist in Go geschrieben, was sie einigermaßen plattformübergreifend machen sollte. In der Tat haben einige Dateien sehr interessante Build-Ziele :osutil/group_other.go
::osutil/group_linux.go
::Es sieht also so aus, als hätte jemand ein Interesse daran.
quelle