26 votes

Quel est le rapport entre Snappy et Nix et Guix ?

J'ai cherché une comparaison mais je n'en ai pas trouvé et je ne suis pas assez bien informé pour le faire moi-même maintenant.

Ils fournissent tous des mises à jour transactionnelles, mais à des niveaux différents de confinement.

  • Snappy compile statiquement dans les bibliothèques pour fournir plusieurs versions des dépendances binaires. Il déclare les services fournis (et nécessaires ?) en tant que métadonnées. Le paquet est fourni sous la forme d'une image unique ?
  • Nix utilise la liaison dynamique pour fournir plusieurs versions de dépendances binaires ? Il déclare les services fournis et nécessaires en tant que métadonnées. Le paquet est fourni par le biais d'un référentiel traitant des dépendances.
  • Guix est comme Nix, mais présente une intégration GNU.

Une comparaison plus approfondie entre Nix et Guix est donnée par Sander van der Burg que je n'ai pas étudiée en détail. Je suppose que quelqu'un chez Canonical a fait une analyse des solutions existantes. Il existe d'autres systèmes de déploiement basés sur des images, comme CoreOS m'a-t-on dit.

Alors, quel est le rapport entre Snappy Ubuntu et Nix et Guix ? Quelles sont les principales différences ?

33voto

Sander van der Burg Points 346

Récemment, j'ai fait une évaluation moi-même. Je suis en fait un contributeur Nix/NixOS, et un ancien chercheur intéressé par les technologies de déploiement.

J'ai essayé de m'en tenir autant que possible aux faits, mais il est probablement impossible de rester totalement impartial. Pour résumer mes conclusions :

  • Les deux approches stockent les paquets dans isolement . Snappy stocke les applications et les frameworks dans des dossiers en utilisant la convention de nom suivante : /app/name/version.vendor alors que Nix utilise /nix/store/hash-name-version .

    La convention de nommage de Nix est plus puissante, parce qu'elle utilise des préfixes de hachage qui sont dérivés de tous les noms d'utilisateurs de dépendances de temps de construction . Avec Nix, vous pouvez facilement faire des distinctions entre toutes les variantes d'un paquet et les stocker les unes à côté des autres. Tout changement (par exemple, une procédure de construction différente, une mise à jour de la bibliothèque, une mise à jour du compilateur) génère un nouveau hachage, ce qui permet de stocker toutes les variantes possibles les unes à côté des autres.

  • Pour permettre à un paquet de trouver ses dépendances, Nix les lie statiquement à un exécutable (par exemple en modifiant le RPATH d'un binaire ELF) ou en les enveloppant dans des scripts qui définissent les variables d'environnement appropriées (par ex. CLASSPATH , PYTHONPATH , PERL5LIB etc.).

    Snappy compose conteneurs dans lequel les exécutables peuvent trouver leurs dépendances dans leurs emplacements FHS communs, tels que /lib y /bin

    Cependant, Nix supporte également l'approche conteneurisée de Snappy, mais celle-ci n'est utilisée que dans de très rares cas. Le paquet Nix le plus important utilisant une approche conteneurisée est Steam dans NixOS, car Steam est lui-même un outil de déploiement avec des propriétés conflictuelles.

  • Le noyau Snappy Ubuntu utilise un schéma de partitionnement dit "A/B" pour mettre à niveau (et revenir en arrière) le système de base. Il ne prend en charge qu'un nombre limité de versions (généralement deux) à la fois.

    En revanche, NixOS (la distro Linux basée sur Nix) compose le système de base à partir des paquets Nix dans le magasin Nix également et est beaucoup plus puissant. Vous pouvez revenir à n'importe quelle configuration précédente qui n'a pas encore été collectée. De plus, les paquets système similaires entre les générations peuvent être partagés.

  • Les deux outils prennent en charge installations d'utilisateurs non privilégiés . Cependant, Snappy stocke tous les fichiers dans le répertoire personnel de l'utilisateur. Si deux utilisateurs installent le même paquet, ils sont installés deux fois sur le système.

    En revanche, les paquets Nix permettent également aux utilisateurs ordinaires d'installer des paquets dans le magasin central Nix afin que des paquets identiques puissent être partagé entre les utilisateurs. En partie grâce à la convention d'appellation (qui utilise le hachage), cela peut être fait de manière sécurisée.

  • Snappy restreint le comportement des paquets au moment de l'exécution, alors que Nix ne le fait pas.

  • Snappy ne semble pas aider les utilisateurs à construire des paquets à partir du code source. Cependant, Nix dispose d'un DSL permettant de faire cela assez facilement et d'installer automatiquement toutes les dépendances de construction (compilateurs, outils de construction, bibliothèques, etc.

  • Snappy ne supporte guère la modularisation et réutiliser . Dans les exemples de paquets, toutes les dépendances des bibliothèques sont regroupées de manière statique, ce qui consomme beaucoup plus d'espace disque et de RAM. De plus, la documentation ne semble pas fournir d'autres facilités que les frameworks. Cependant, selon la documentation, les cadres ne sont pas destinés à être réutilisés.

    Avec Nix, la modularisation des paquets et la gestion sûre des dépendances sont quelques-unes de ses principales caractéristiques.

L'article complet du blog est disponible ici : http://sandervanderburg.blogspot.com/2015/04/an-evaluation-and-comparison-of-snappy.html

J'espère que vous le trouverez intéressant à lire et que vous y trouverez peut-être des éléments qui méritent réflexion.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X