Comment les packages snap traitent-ils les dépendances partagées?

25

Le format d’emballage de composant logiciel enfichable nous libère enfin de l’enfer des dépendances en permettant à chaque paquet d’avoir sa propre copie des dépendances. Je suis intéressé par les détails techniques de la façon dont cela se passe. Comment ça marche:

  • s'enclenche en fonction de la version d'une bibliothèque déjà installée via les paquets deb pour la version actuelle? Ignore-t-il la bibliothèque installée?
  • différents snaps spécifiant la même version de la même bibliothèque? Fait-il de la déduplication en quelque sorte?
  • mises à jour de bibliothèques principales susceptibles d’être utilisées par de nombreux snaps? OpenSSL me vient à l’esprit comme un énorme problème.

xdg-app a quelque chose appelé un "runtime" :

  

Un concept fondamental de xdg-app est le fractionnement d’exécution / application.   Chaque application dépend d’un runtime, qui fournit les bibliothèques principales   l'application repose sur. Les runimes sont généralement partagés par de nombreuses applications,   mais un utilisateur peut avoir plusieurs temps d'exécution installés en même temps.

Il semble que dans le cas d’OpenSSL, cela ferait partie du runtime de xdg-apps, donc une mise à jour vers OpenSSL devrait affecter de manière transparente toutes les applications xdg utilisant la même exécution.

    
posée muru 15.06.2016 - 05:46
la source

3 réponses

7

Les deux premières situations sont traitées de manière intelligente.

  

Une des fonctionnalités intéressantes évoquées est la prise en charge de la déduplication   pour le contenu dans les packages Snap. Snaps serait automatiquement   dédupliqué des fichiers communs partagés entre les snaps basés sur leur   fichier hash. Il y aurait une déduplication sur la couche système de fichiers,   la déduplication sur les téléchargements instantanés (avec support serveur), et peut-être   déduplication des bibliothèques mappées à partir de l'éditeur de liens. La déduplication est un   grand élément de travail et prendra probablement un certain temps pour mettre en œuvre pleinement, mais   c'est néanmoins un objectif intéressant.

Source: lien

Quant à la troisième situation, ils ont quelque chose de similaire aux temps d'exécution que vous avez mentionnés:

  

Il y a trois couches qui composent une machine rapide: le système   couche, fournie par Canonical, une couche de cadres qui étendent le   système de base produit par les fournisseurs en collaboration avec Canonical, et un   ensemble d'applications snappy, fournies directement par les fournisseurs. Mise à jour de tout   pièce signifie simplement utiliser la nouvelle version d'une image en lecture seule. Revenant   à une version précédente est tout aussi facile.

Source: lien

Il n’existe pas encore de bonne documentation décrivant les frameworks, principalement parce qu’ils semblent toujours définir les limites de ce qu’est un framework. Voici un extrait de leur liste de diffusion qui pourrait aider à clarifier les choses.

  

J'expérimente Frameworks pour étendre essentiellement le Snappy   système de base par logiciel et services dont beaucoup de clichés exigent, mais   ne doit être inclus dans aucun composant logiciel enfichable en raison de problèmes de mise à jour et   Taille. Le meilleur exemple que j'ai pour cela est le binaire openssl. Beaucoup   Les snaps en ont besoin pour générer et valider des clés et des certificats.

     

L'autre problème que je dois résoudre avec un framework est l'accès à   les ressources à l'échelle du système, notamment les ports. Par exemple, une structure de serveur Web   fournirait des moyens pour d'autres snapps d'injecter leur api de service Web   et points de terminaison via proxy inverse dans le cadre exécutant le Web   serveur.

     

On m'a dit sur IRC que j'abusais un peu du concept de framework, mais   Cependant, ces deux problèmes surviennent souvent sur mon bureau.

Source: lien

    
réponse donnée cynicist 17.06.2016 - 07:09
la source
3

Je ne pense pas que les clichés vérifient quelles dépendances sont déjà installées. Il ne comprend que toutes ses dépendances et son runtime (ce qui explique en partie pourquoi le composant logiciel enfichable LibreOffice est de 287 Mo et le flatpak environ 200 Mo).

Les snaps incluent à peu près tout ce dont le logiciel a besoin pour fonctionner. Je ne pense pas que quelque chose soit partagé entre les clichés.

En cas d’instantané, il ne télécharge que les dépendances nouvelles, et non la totalité du composant logiciel enfichable.

    
réponse donnée smurfendrek123 15.06.2016 - 10:43
la source
1

Des précisions supplémentaires sont nécessaires sur la manière dont l’emballage instantané gère les dépendances partagées.

  

Les snaps incluent à peu près tout ce dont le logiciel a besoin pour fonctionner. Je ne pense pas que quelque chose soit partagé entre les clichés.

Cette déclaration dans l’une des réponses est partiellement vraie, mais tous les packages de composant logiciel enfichable installés, à l’exception du composant logiciel enfichable principal, dépendent de deux packages, l’un d’eux étant le composant logiciel enfichable principal.

  1. snapd - qui est installé par défaut au 16.04 et peut également être installé au 14.04.

  2. core - (le composant logiciel enfichable principal) qui est automatiquement téléchargé et installé lorsque le premier package de composant logiciel enfichable installé est installé

Tous les packages d’accrochage, à l’exception du core lui-même, dépendent du composant logiciel enfichable principal. S'il y a quelque chose de mal avec le composant logiciel enfichable, certains ou tous les autres composants ne fonctionneront pas. Un problème avec le composant logiciel enfichable peut être résolu des deux manières suivantes.

  1. Mettez à jour le composant logiciel enfichable principal. Même si cela ne fonctionne pas, les résultats de l'exécution de la commande suivante fourniront des informations supplémentaires qui aideront à résoudre le problème.

    sudo snap refresh core  
    
  2. Désinstallez le composant logiciel enfichable principal et tous les packages de composant logiciel enfichable, puis réinstallez-les.

    sudo snap remove core snap-package1 snap-package2  
    sudo snap install core snap-package1 snap-package2
    
réponse donnée karel 18.01.2017 - 12:14
la source

Lire d'autres questions sur les étiquettes