Pourquoi les packages snap existent-ils - y a-t-il un réel besoin?

11

Hypothèses

Honnêtement, je ne sais pas grand-chose sur les snap-packages - mais ce n'est pas pertinent pour cette question - voir ci-dessous. Je suppose que le système est sensiblement différent de celui existant.

Le changement est-il logique?

Existe-t-il un besoin réel, suffisamment fort? C'est - y a-t-il un nouveau cas d'utilisation, qui est suffisamment important pour développer un nouveau format - et l'infrastructure associée?

N'était-il pas possible de modifier la méthode actuelle pour couvrir également les nouveaux cas d'utilisation?

Ou est-ce que je manque le point?

Il est possible que ce que je vois soit principalement du marketing - de nouveaux noms et une présentation pour un changement technique minimal, pour avoir une chance que tout organisme le considère comme "nouveau et meilleur" et qu'il puisse être utilisé. En outre, il se peut que les nouveaux packages soient si étroitement basés sur le format existant qu'il s'agit principalement d'un changement de présentation à l'utilisateur. Bien sûr, cela pourrait être une bonne solution. Dans ce cas, cette question n'aurait pas beaucoup de pertinence.

Ensuite, j'espère que c'est encore assez utile pour répondre aux aspects secondaires. Faites-moi savoir si la question n'est pas utile ou déroutante pour les nouveaux utilisateurs, je suis heureuse de la supprimer.

Alors, pourquoi existent-ils?


Contexte

Ma première réaction a été "Cela n'a aucun sens!"

Cela ressemble à une situation où, sur le site de physique, quelqu'un a demandé, mécontent, pourquoi personne ne discutait de ses nouvelles idées brillantes dans les réponses. Cela ressemblait fortement à des idées de crackpot; Si loin des connaissances physiques réelles qu'il était difficile de trouver un point de départ. J'ai écrit une réponse qui n'a pas touché ses idées avec un seul mot, mais j'ai expliqué pourquoi on ne voulait tout simplement pas discuter de l'hypothèse d'idées de crackpot - pas le premier cas de cela. La réponse était en fait de frapper le point, je pense.

Si mes hypothèses étaient exactes, ce cas est similaire.

Mais alors, peut-être pas - voyons.

Volker Siegel
la source
Il y a un vote serré disant "principalement basé sur l'opinion" - cela signifie-t-il que les réponses devraient être basées sur l'opinion? Ce serait essentiellement une réponse en soi, car cela signifie qu'il n'y a pas de consensus établi que le changement est nécessaire. Il y aurait donc des arguments pour et contre; Cela signifierait que ma question est en fait très pertinente et plus utile que ce à quoi je m'attendais!
Volker Siegel
2
J'ai voté pour rouvrir cette question. Cela demande vraiment pourquoi les snaps ont été introduits, alors que les gestionnaires de packages existaient déjà et qu'Ubuntu (et d'autres OS) les avaient déjà. Vous avez donc raison: s'il s'agissait en fait d'une question principalement fondée sur l'opinion, cela signifierait qu'aucune réponse à cette question ne pourrait être donnée sur la base principalement des faits et de l'expérience. Cependant, comme vous l'avez vu dans l'excellente réponse de muru , ce n'est pas le cas. Quand (ou même si) les clichés doivent être utilisés, les gens peuvent toujours avoir des discussions basées sur des opinions, mais ce n'est pas ce que c'était.
Eliah Kagan

Réponses:

17

Oui, il y a un réel besoin.

Il y avait un réel besoin pour quelque chose comme ça depuis la première fois qu'un logiciel dépendait d'un autre.

Soyons clairs:

La gestion des dépendances est difficile .

Il y a une raison pour laquelle cela s'appelle l' enfer de la dépendance . Des systèmes d'emballage comme RPM et Debian ont été créés dans le but d'éviter l'enfer des dépendances. Cependant, quelqu'un doit payer le coût:

  1. Sous Windows, où les programmes regroupent leurs dépendances, l'utilisateur doit prendre en charge les mises à niveau (et tout problème de sécurité dû à leur absence). Si je souhaite que le développeur veuille la version X de quelque chose pour mon application, c'est simple: je le fournis avec mon application. Maintenant, comment gérer les mises à jour?
  2. Sur la plupart des distributions Linux (après Debian ou Red Hat), où un programme peut dépendre du logiciel du référentiel, un programme du référentiel doit dépendre du logiciel du référentiel. Si je veux la version X de quelque chose pour mon application et que la distribution fournit X, simple: j'en dépend. Et si la distribution ne fonctionne pas? Alors: ???
    • L'ajout de plusieurs versions à la distribution augmente la charge du mainteneur
    • Perdre la possibilité d'utiliser la version de choix des dépendances augmente la charge du développeur
    • Perdre la possibilité d'utiliser la version de choix des applications frustrent l'utilisateur

Il y a une perte de liberté considérable dans l'une ou l'autre méthode.

Et c'est là que les snaps entrent en jeu: ils laissent le développeur inclure la version X et permettent au système de packaging de gérer les mises à jour. Qui paie le coût? L'utilisateur:

  • en exigeant plus d'espace.
  • en les mettant en danger car un développeur imprudent ne reconstruit pas ses snaps quand une dépendance est corrigée.

Quels avantages puis-je obtenir en échange?

  • Mis à part la sécurité via les mises à jour (qui, franchement, peu de gens se soucient), je l'utilisateur n'a pas à se soucier des dépendances avec des snaps. Le mot perd surtout du sens.
  • Mis à part les mises à jour de sécurité, le développeur du logiciel n'a pas besoin de s'inquiéter d'amener les utilisateurs à installer les bonnes dépendances.
muru
la source
3
Oui, je pense que l' enfer de la dépendance le décrit assez bien.
Volker Siegel
Permettez-moi de créer la voix opposée :), pourquoi ils n'utilisent pas seulement /opt?
user.dz
@Sneetsher pense de cette façon: qu'est-ce qui empêche une application dans / opt d'écrire sur une autre application dans / opt? Pire, comment empêchez-vous une application de lire les clés privées d'une autre application?
Evan
@Evan, bien AppArmorest déjà sorti pour couvrir cela. mais le mode de protection peut être différent. Quoi qu'il en soit, le sujet est à bord.
user.dz
muru, merci d'avoir écrit tout ça. Ce fut la première réponse sur Google, d'ailleurs, pourquoi. Je suis cependant curieux. Je peux voir que mon système utilise des boutons-pression pour, par exemple, Chrome. Et maintenant, je voudrais installer Skype. Habituellement, je le ferais, sudo apt-get install skypemais je vois qu'il est disponible en un clin d'œil. Mais quand j'ai installé Chromium, je n'ai rien fait de spécial pour le faire utiliser snap. Pourtant, c'est le cas. Alors maintenant, je comprends POURQUOI les snaps existent, et je suis content qu'ils le fassent. Je suis maintenant curieux de savoir si je dois m'inquiéter sudo snap install skype?
SDsolar
3

Une caractéristique particulière des snaps qui pourrait être utile est la possibilité de choisir un canal pour les développeurs qui fournissent plus d'un canal, comme la version , le candidat , le master , etc.

Par exemple, en cliquant sur le bouton Canal pour nextcloudafficher la boîte de dialogue dans la capture d'écran ci-dessous.

Les autres arguments de vente solides sont l'isolement, l'immuabilité et le sandboxing qui sont contrôlés par un contexte de politique de sécurité , qui permet de définir des autorisations par application, également appelées «plugs», par exemple:

  • lieux de lecture / écriture
  • accès au stockage amovible
  • pays où le snap est sur liste blanche / liste noire
  • l'accès au réseau
  • appareil photo, imprimante, joystick, localisation GPS
  • les paramètres du système
  • ... liste complète des interfaces snap

L'approche imite dans une certaine mesure les ensembles d'applications MacOS et le sandboxing d'applications Android avec des autorisations et des fournisseurs / récepteurs de contenu.

ubuntu snap packages select channel

Maintenant, imaginez que vous devez exécuter une douzaine d'applications chacune avec sa propre version de certaines bibliothèques, sa propre version du runtime Python / Ruby / NodeJS et que vous ne voulez pas courir dans l'enfer des dépendances et gâcher ou polluer vos bibliothèques système, vos modules système Python / Node / Perl / Ruby, etc.

ccpizza
la source