Warum gibt es Snap-Pakete - besteht ein wirklicher Bedarf?

11

Annahmen

Ehrlich gesagt weiß ich nicht viel über Snap-Pakete - aber das ist für diese Frage irrelevant - siehe unten. Ich gehe davon aus, dass sich das System erheblich von dem bestehenden unterscheidet.

Ist die Änderung sinnvoll?

Gibt es einen tatsächlichen Bedarf, der stark genug ist? Das heißt - gibt es einen neuen Anwendungsfall, der wichtig genug ist, um ein neues Format zu entwickeln - und die damit verbundene Infrastruktur?

War es nicht möglich, die derzeitige Methode zu ändern, um auch die neuen Anwendungsfälle abzudecken?

Oder verpasse ich den Punkt?

Es ist möglich, dass das, was ich sehe, hauptsächlich Marketing ist - neue Namen und Präsentationen für minimale technische Änderungen, um die Chance zu bekommen, dass jeder Körper es als "neu und besser" annimmt und es tatsächlich verwendet werden kann. Es kann auch sein, dass die neuen Pakete so stark auf dem vorhandenen Format basieren, dass es sich meistens um eine Änderung der Präsentation für den Benutzer handelt. Das könnte natürlich eine gute Lösung sein. In diesem Fall hätte diese Frage nicht viel Relevanz.

Dann würde ich hoffen, dass dies immer noch nützlich genug ist, um auf Nebenaspekte zu antworten. Lassen Sie mich einfach wissen, wenn die Frage für neue Benutzer nicht hilfreich oder verwirrend ist. Ich lösche sie gerne.

Warum existieren sie also?


Hintergrund

Meine erste Reaktion war "Das macht keinen Sinn!"

Dies ähnelt einer Situation, in der jemand auf der Physik-Website unglücklich gefragt hat, warum niemand seine brillanten neuen Ideen in Antworten bespricht. Es sah stark nach verrückten Ideen aus; So weit vom tatsächlichen physischen Wissen entfernt, dass es schwierig war, einen Punkt zu finden, an dem man überhaupt anfangen konnte. Ich schrieb eine Antwort, die seine Ideen nicht mit einem einzigen Wort berührte, sondern erklärte, warum man einfach nicht darüber diskutieren würde, verrückte Ideen anzunehmen - nicht der erste Fall davon. Die Antwort traf tatsächlich den Punkt, denke ich.

Wenn meine Annahmen richtig waren, ist dieser Fall ähnlich.

Aber vielleicht auch nicht - mal sehen.

Volker Siegel
quelle
Es gibt eine enge Abstimmung mit der Aufschrift "hauptsächlich meinungsbasiert" - bedeutet dies, dass die Antworten voraussichtlich meinungsbasiert sein werden? Dies wäre im Grunde eine Antwort für sich, da es keinen etablierten Konsens darüber gibt, dass die Änderung erforderlich ist. Es würde also Pro und Contra Argumente geben; Das würde bedeuten, dass meine Frage tatsächlich sehr auf den Punkt kommt und nützlicher ist als ich erwartet hatte!
Volker Siegel
2
Ich habe dafür gestimmt, diese Frage erneut zu öffnen. Es wird wirklich gefragt, warum Snaps eingeführt wurden, als es bereits Paketmanager gab und Ubuntu (und andere Betriebssysteme) sie bereits hatten. Sie haben also Recht: Wenn dies tatsächlich eine in erster Linie auf Meinungen basierende Frage wäre, würde dies bedeuten, dass keine Antwort darauf gegeben werden könnte, die in erster Linie auf Fakten und Erfahrungen basiert. Wie Sie jedoch aus Murus hervorragender Antwort gesehen haben , ist dies nicht der Fall. Wann (oder sogar wenn) Schnappschüsse verwendet werden sollten, ist immer noch etwas, über das die Leute hauptsächlich meinungsbasierte Diskussionen führen können, aber das war es nicht.
Eliah Kagan

Antworten:

17

Ja, es besteht ein echtes Bedürfnis.

Seit dem ersten Mal, als eine Software von einer anderen abhängig war, bestand ein echtes Bedürfnis nach so etwas.

Lassen Sie uns dies klarstellen:

Das Verwalten von Abhängigkeiten ist schwierig .

Es gibt einen Grund, warum es Abhängigkeitshölle heißt . Verpackungssysteme wie RPM und Debian wurden mit der Absicht erstellt, die Abhängigkeitshölle zu vermeiden. Allerdings muss jemand die Kosten bezahlen:

  1. Unter Windows, wo Programme ihre Abhängigkeiten bündeln, muss sich der Benutzer um Upgrades kümmern (und um Sicherheitsprobleme, die sich daraus ergeben). Wenn ich als Entwickler Version X von etwas für meine App möchte, einfach: Ich stelle es mit meiner App zur Verfügung. Wie gehe ich nun mit Updates um?
  2. Auf den meisten Linux - Distributionen (nach Debian oder Red Hat), in dem ein Programm auf Software aus dem Repository abhängen kann, ein Programm aus dem Repository muss auf Software aus dem Repository ab. Wenn ich Version X von etwas für meine App haben möchte und die Distribution X bereitstellt, einfach: Ich bin darauf angewiesen. Und wenn die Distribution nicht? Dann: ???
    • Das Hinzufügen mehrerer Versionen zur Distribution erhöht die Belastung des Betreuers
    • Der Verlust der Fähigkeit, die Version der Auswahl von Abhängigkeiten zu verwenden, erhöht die Belastung des Entwicklers
    • Der Verlust der Fähigkeit, die Version der gewählten Anwendung zu verwenden, frustriert den Benutzer

Bei beiden Methoden geht ein erheblicher Freiheitsverlust einher.

Und hier kommen Snaps ins Spiel: Sie lassen den Entwickler Version X einbinden und das Verpackungssystem Updates verwalten. Wer bezahlt die Kosten? Der Benutzer:

  • durch mehr Platzbedarf.
  • indem Sie sie einem Risiko aussetzen, weil ein unvorsichtiger Entwickler ihre Snaps nicht neu erstellt, wenn eine Abhängigkeit gepatcht wird.

Welche Vorteile bekomme ich dafür?

  • Abgesehen von der Sicherheit durch Updates (die offen gesagt nicht genug Leute interessieren) muss ich mich als Benutzer nicht um Abhängigkeiten mit Snaps kümmern. Das Wort verliert meist an Bedeutung.
  • Abgesehen von Sicherheitsupdates muss sich der Softwareentwickler nicht darum kümmern, dass Benutzer die richtigen Abhängigkeiten installieren.
muru
quelle
3
Ja, ich denke, die Abhängigkeitshölle beschreibt es ziemlich gut.
Volker Siegel
Lass mich die Gegenstimme kreieren :), Warum benutzen sie nicht einfach /opt?
user.dz
@Sneetsher denken Sie so: Was hindert eine App in / opt daran, über eine andere App in / opt zu schreiben? Schlimmer noch, wie verhindern Sie, dass eine App die privaten Schlüssel einer anderen App liest?
Evan
@Evan, gut AppArmorist schon aufgeregt, um das abzudecken. Die Art des Schutzes kann jedoch unterschiedlich sein. Auf jeden Fall geht es darum, an Bord zu gehen.
user.dz
muru, danke, dass du das alles geschrieben hast. Dies war übrigens die erste Antwort bei Google, warum. Ich bin allerdings neugierig. Ich kann sehen, dass mein System Snaps für beispielsweise Chromium verwendet. Und jetzt möchte ich Skype installieren. Normalerweise würde ich sudo apt-get install skypeaber dann sehe ich, dass es als Schnappschuss verfügbar ist. Aber als ich Chromium installiert habe, habe ich nichts Besonderes getan, damit es Snap verwendet. Aber es tut es. Jetzt verstehe ich, WARUM Schnappschüsse existieren, und bin froh, dass sie es tun. Ich bin jetzt neugierig, ob ich mir Sorgen machen muss sudo snap install skype?
SDsolar
3

Ein besonderes Merkmal von Snaps, das nützlich sein kann, ist die Möglichkeit, einen Kanal für Entwickler auszuwählen, die mehr als einen Kanal bereitstellen, z. B. Release , Kandidat , Master usw.

Wenn Sie beispielsweise auf die Schaltfläche Kanal für klicken, nextcloudwird das Dialogfeld im folgenden Screenshot angezeigt.

Die anderen starken Verkaufsargumente sind Isolation, Unveränderlichkeit und Sandboxing, die von einem Sicherheitsrichtlinienkontext gesteuert werden , der das Definieren von Berechtigungen pro App ermöglicht, die auch als "Stecker" bezeichnet werden, z.

  • Lese- / Schreiborte
  • Zugriff auf Wechselspeicher
  • Länder, in denen der Snap auf die Whitelist / Blacklist gesetzt ist
  • Netzwerkzugang
  • Kamera, Drucker, Joystick, GPS-Standort
  • Systemeinstellungen
  • ... vollständige Liste der Snap-Schnittstellen

Der Ansatz ahmt bis zu einem gewissen Grad die MacOS-App-Bundles und das App-Sandboxing von Android mit Berechtigungen und Inhaltsanbietern / -empfängern nach.

Ubuntu Snap-Pakete Kanal auswählen

Stellen Sie sich vor, Sie müssen ein Dutzend Apps mit jeweils einer eigenen Version bestimmter Bibliotheken und einer eigenen Version der Python / Ruby / NodeJS-Laufzeit ausführen, und Sie möchten nicht in die Abhängigkeitshölle geraten und Ihre Systembibliotheken durcheinander bringen oder verschmutzen. Ihr System Python / Node / Perl / Ruby-Module usw.

ccpizza
quelle