Paquets AppImage, Snap et Flatpak : quels avantages, inconvénients et différences ?

Paquets AppImage, Snap et Flatpak : quels avantages, inconvénients et différences ?

Newer not always better

Avatar de l'auteur
Vincent Hermann

Publié dans

Logiciel

10/06/2020 15 minutes
67

Paquets AppImage, Snap et Flatpak : quels avantages, inconvénients et différences ?

Ces dernières années, les paquets multi-distributions ont gagné en attractivité sous Linux. Des solutions intéressantes à première vue, mais pas sans contraintes. Nous faisons le point sur les trois principales, de leur concept central à leurs avantages et inconvénients, en passant par leurs différences.

La diffusion de logiciels est depuis longtemps à l’avantage des distributions Linux face à macOS et Windows. Les différents systèmes de paquets sont exploitables aussi bien en ligne de commande que via des interfaces graphiques.

L’utilisateur reste maître de cette utilisation, notamment dans le choix d’inclure des logiciels aux sources fermées ou non, via les fameux dépôts. Ces derniers livrent aujourd’hui aussi bien les applications que les nouvelles versions de l'OS, le noyau Linux lui-même et ainsi de suite. Chacun peut d'ailleurs en créer pour son propre usage ou en les rendant disponibles à tous.

Depuis plusieurs années, un autre type de paquet envahit peu à peu l’espace Linux : le « tout-en-un », basé sur le concept d’image disque ou de conteneur selon les cas. Pour l’utilisateur, le changement se veut transparent, bien qu'il ne le soit pas toujours. Les développeurs, eux, sont encouragés à y passer, chacun vantant les avantages de sa solution.

Canonical est notablement très enthousiaste sur ses snaps... qui font grincer des dents.

Paquets contre paquets

Pour comprendre ce qui différencie ce nouveau type de paquets des anciens, il faut expliquer comment fonctionne la distribution traditionnelle d'applications sous Linux, reposant sur des applications visant une plateforme particulière.

Les paquets contiennent normalement les dépendances nécessaires, c’est-à-dire les ressources dont l’application a besoin pour fonctionner. On pourrait comparer (très) grossièrement aux DLL de Windows quand un logiciel est installé. Les distributions Linux savent depuis longtemps télécharger les dépendances quand celles-ci sont absentes.

Une action facilement visible en ligne de commande : quand on demande par exemple à APT d’installer un paquet, il avertit automatiquement des éléments manquants, précisant qu’ils seront installés au passage.

Cette faculté, ajoutée à l’aspect centralisé des commandes d’installation, a toujours rendu cet aspect nettement plus évident dans sa logique que sur les plateformes concurrentes comme macOS ou Windows. Certes, ces dernières disposent de leurs propres boutiques applicatives, mais il s’agit bien de vendre (idéalement) et de retenir une commission – même si de nombreuses applications sont gratuites – plutôt que de repenser la distribution et l'installation.

Fedora 32
Logiciels dans Fedora 32

Autre gros avantage de la manière de faire sous Linux, la mise à jour automatique gérée par un unique service. Là encore, sur les plateformes concurrentes, soit la boutique s’en occupe, soit le logiciel doit avoir un mécanisme intégré. Une situation qui n’évolue pour ainsi dire pas :  la proportion d’applications sur les boutiques d’Apple et Microsoft reste faible.

L'ère des paquets « tout-en-un »

Cela étant, la gestion des paquets sur les systèmes Linux répond aux spécificités de chaque distribution. Les deux formats les plus courants, deb et rpm, ont ainsi leurs particularités et visent des familles d'OS différentes. Le premier est le format adopté par Debian et donc par les dizaines de distributions qui en sont dérivées (dont Ubuntu), tandis que le second est depuis longtemps soutenu par Red Hat et se retrouve notamment dans Fedora et openSUSE.

En outre, cette solution peut rencontrer les mêmes problèmes que d’autres systèmes utilisant des composants communs accessibles aux applications. Il peut y avoir conflit, chaque mise à jour du système ou d’un seul composant devant être testée aussi bien par les développeurs d’un système que ceux d’une application.

C'est là qu'AppImage, Flatpak et Snap entrent en scène. Leur avantage ? Ils fournissent des paquets contenant tout le nécessaire à une application, sans avoir à gérer les particularités de chaque système. Il faut simplement que ces derniers gèrent ces approches, qui se veulent ainsi « agnostiques ».

Elles n’ont cependant pas toutes les mêmes caractéristiques. Elles permettent de régler nombre de soucis potentiels et de se simplifier la vie, mais pas sans coût. De plus, leur pluralité est autant une force qu’une faiblesse. Explications.

AppImage : le plus ancien

AppImage, dans sa forme actuelle, existe depuis 2013. Ce système de paquet est maintenu depuis dans son dépôt GitHub sous licence MIT. Son principal auteur, Simon Peter, n’était pas un novice dans le domaine, puisqu’il avait déjà créé Klik, que l’on peut qualifier d’ancêtre d’AppImage, dès 2004. Le projet fut abandonné en 2011 au profit de PortableLinuxApps, finalement renommé en AppImage en 2013. Son mantra est depuis : « une application = un fichier ».

Le nom résume à lui seul la philosophie du projet : l’image d’une application. Un fichier unique, qu’il suffit de monter puis de lancer, contenant le programme et toutes ses dépendances, même si le format est souple et laisse les développeurs libres d’intégrer ce qu’ils souhaitent. Une situation très comparable aux fichiers DMG que l’on trouve sur macOS.

Chez Apple, une fois l’image montée, on peut prendre l’application et la copier vers une destination, d’où on pourra la lancer. Traditionnellement, on la range dans Applications, mais ce n’est qu’une commodité. L’application se présente comme un fichier unique, en fait une archive contenant toutes les données nécessaires.

AppImage ne réclame aucun accès administrateur. D’ailleurs, il n’y a techniquement aucune installation, puisqu’on se contente de lancer un fichier exécutable. L’application se lance sans avoir à vérifier que les dépendances existent dans le système. Quoi qu’il lui faille pour s’afficher correctement, le développeur y a normalement pourvu. Sans installation, plusieurs versions différentes d’une application peuvent fonctionner côte à côte.

AppImage est très clairement pensé pour la distribution d’applications classiques vers les utilisateurs finaux. On reste sur l’idée d’un format portable, puisque l’image peut très bien être placée sur une clé USB et exécutée telle quelle sur une autre distribution. Pour ceux qui le souhaitent, AppImageKit permet même de fabriquer sa propre image à partir d’une application installée sur sa machine.

AppImaged, le service responsable du bon fonctionnement des paquets AppImage, est présent sur un très grand nombre de distributions, dont Debian, Ubuntu, Fedora, CentOS et openSUSE. Il n’y a pas de dépôt officiel centralisant les versions AppImage des applications, mais le site AppImageHub sert par exemple de concentrateur tiers.

Snap : le mastodonte promu par Canonical

Ubuntu intègre un autre format de fichier tout-en-un, mais conçu différemment et servant des objectifs plus larges. On retrouve l’idée d’une archive contenant une application, mais contrairement à AppImage qui offre une certaine souplesse, un snap contient forcément l’intégralité des dépendances, permettant au logiciel de fonctionner sans vérification.

On reste ainsi sur le principal avantage déjà mis en avant par AppImage : les développeurs n’ont pas à viser de plateforme particulière. Il suffit que le système embarque snapd, le service responsable de la gestion des snaps. Ubuntu et un nombre croissant de distributions l’intègrent. Mais il existe plusieurs différences techniques notables avec AppImage.

Les mises à jour sont ainsi transactionnelles : la nouvelle version peut s’installer pendant que l’ancienne fonctionne encore, les différences étant appliquées au lancement suivant. En outre, dans le cas où une mise à jour introduirait des problèmes, l’utilisateur peut revenir facilement à l’état antérieur.

Il y a donc maîtrise des versions et simplification de l’administration dans ce domaine. Un avantage entrainant un inconvénient : contrairement à AppImage, snapd ne permet pas l’exécution concurrentielle de plusieurs instances d’une même application, y compris de versions différentes. Une fonction expérimentale a été introduite l’année dernière pour permettre les installations parallèles, mais la documentation s’y rapportant n’a pas été mise à jour depuis neuf mois.

Les snaps savent cependant gérer les canaux de distribution. Une application disposant d’un canal bêta spécifique pourra ainsi être installée aux côtés de la version stable, sans que l’une empiète sur l’autre. Snapd permet en outre de prendre des instantanés (snapshots) des snaps en cours d’exécution, via la commande principale snap save.

L’opération peut être ponctuelle ou automatisée, par exemple pour définir une sauvegarde des états à intervalles réguliers, définis par l’utilisateur. Les instantanés permettent alors de restaurer une application dans un état spécifique.

Mais la plus grosse différence entre AppImage et Snap est sans conteste l’obligation, pour ce dernier, d’exécuter les applications de manière isolée, dans le cas présent une version modifiée d’AppArmor. Les droits de l’application contenue dépendent du niveau défini dans le snap : classic, strict ou devmode. Il y a donc un apport réel de sécurité, puisqu’un logiciel donné n’aura que des interactions très contrôlées avec le reste du système.

Contrairement à AppImage et Flatpak, les snaps sont conçus pour être installés dans toutes sortes d’environnements, notamment les serveurs et les objets connectés (IoT). Canonical a imaginé sa solution comme une technologie transversale permettant de vastes déploiements, quand les autres ont des approches beaucoup plus « desktop-centric ».

Les snaps ne sont pas étrangers à la critique, loin de là. L'isolation, tout d’abord, n'est pas aussi complète qu’on le souhaiterait, nécessitant l’accès à certains composants centraux du système pour fonctionner. En outre, les vieilles applications X11 sont incompatibles. Les snaps sont également très volumineux. La taille des fichiers est souvent multipliée par deux, trois ou quatre comparée à l’équivalent AppImage.

Ce n’est peut-être pas un problème pour nombre de machines, mais pour celles équipées de petits SSD ou les utilisateurs n’ayant pas un débit de téléchargement très élevé pourront se sentir pénalisés.

Snap

Le plus important reproche fait aux snaps est cependant lié à leur popularité. Il est vrai que propulsés par la très connue distribution Ubuntu, ils sont assurés d’une bonne visibilité. Depuis, l’intégration de snapd dans d’autres systèmes et l’utilisation de ce format par des acteurs majeurs comme KDE, Google, Microsoft, Mozilla ou encore Spotify l’ont presque transformé en standard de facto, au grand dam d’un nombre croissant de voix.

Deux problèmes majeurs ont été relevés. D’abord la présence, au sein de snapd – le service d’installation et de gestion des paquets snap – de code propriétaire de Canonical, donc source d’agacement dans la communauté du logiciel libre. Ensuite, une crainte de situation hégémonique sur la distribution des paquets, l’éditeur étant suivi de grands noms du secteur.

La situation trouve un parfait exemple de ces tensions dans l’annonce récente par l’équipe de Linux Mint d’une renonciation à installer snapd par défaut dans le système. Pourquoi ? Parce que Canonical n’a pas tenu sa promesse initiale : snapd ne devait jamais être rendu obligatoire pour installer une application. Or, la distribution de Chromium sur Ubuntu passe uniquement par un snap, donc requiert snapd.

Face à cette « trahison », les développeurs de Mint ont décidé de ne plus inclure snapd. Depuis Logiciels, l’interface GNOME servant à installer des applications, on peut toujours voir Chromium, mais il s’agira d’un paquet vide. Son installation affiche un résumé de la situation, l’utilisateur restant libre d’installer snapd s’il le souhaite.

Un changement qui sera effectif dans la version 20, dont la bêta est imminente, basée sur Ubuntu 20.04 LTS. Notez que toutes les applications encapsulées en snap sont disponibles dans le dépôt officiel de Snapcraft.io. Le code open source, sous GPL 3.0, est disponible sur le dépôt GitHub du projet

SnapSnap

Flatpak : un concurrent direct aux snaps

Le fonctionnement de Flatpak se rapproche davantage des snaps que d’AppImage, même si le concept central reste le même. On retrouve un paquet contenant l’application et toutes ses dépendances, le tout reposant sur un mécanisme d'isolation. Là encore, l’application ainsi lancée se passe de droits administrateur.

Le projet ayant abouti à Flatpak se nommait précédemment xdg-app. Il fut écrit en 2015 par Alexander Larsson – alors développeur chez Red Hat sur la base d’une idée formulée plus d’une décennie avant par Lennart Poettering. Larsson était déjà familier avec ce type de développement, puisqu’il avait suivi de près le projet Klik, ancêtre d’AppImage. Il préférait cependant l’idée d’une exécution isolée de l’application.

Les forces de Flatpak sont nombreuses et en partie similaires à snap (tout comme certaines de ses faiblesses). Les flatpaks se distinguent cependant par leur intégration visuelle, la technologie ayant été pensée dans une optique d'utilisation via une interface graphique (GUI) plutôt qu'en ligne de commande (CLI), tout particulièrement GNOME et KDE.

Tout comme les snaps, ils sont en théorie insensibles aux changements de versions du système. Mais les développeurs ont un peu plus de libertés dans les éléments qu’ils souhaitent intégrer dans le paquet, de même que le choix de le distribuer eux-mêmes, en dépit de l’existence d’un dépôt officiel : FlatHub. Une différence de taille avec les snaps centralisés.

FlatpakFlatpak

Par défaut, une application Flatpak n’a accès à presque rien : données personnelles, réseau, autres processus, etc. Pour débloquer ces capacités, les développeurs doivent prévoir des Portals, littéralement des portes vers des composants du système. Aucun Portal ne peut être ouvert sans accord explicite de l’utilisateur.

Souvent, les développeurs n’ont cependant rien à faire, car de nombreux frameworks intègrent déjà cette gestion, comme GTK3 ou Qt5. Contrairement à Snap, l’exécution de plusieurs versions d’une même application est possible. L'isolation prend appui sur Bubblewarp, mais la sécurité de Flatpak a été sévèrement critiquée, sur plusieurs aspects.

Les applications les plus populaires ont ainsi souvent de nombreuses autorisations actives par défaut. Ensuite, l’application des correctifs de sécurité dans le dépôt central serait trop lente. Est également critiqué le classement comme « mineure » d’une faille de sécurité qui permettait un accès root (local) complet, au sein même du framework de gestion.

On pourrait en outre critiquer la taille des paquets, comme pour les snaps. Selon les applications, l’une ou l’autre version sera la plus volumineuse. Il faut donc tenir compte là aussi d’un éventuel manque de place avec la multiplication des applications. Les sources du projet sont disponibles dans ce dépôt GitHub.

Le futur de la distribution ?

Chaque technologie a ses qualités et défauts. Chacune semble plus adaptée à certains scénarios que les autres. Aucune cependant ne peut prétendre à l’universalité. Il reste probable que les snaps, poussés par Canonical, resteront pendant un temps la solution la plus visible. Ne serait-ce que parce qu’elle permet à de nombreux éditeurs de proposer un seul paquet à destination de toutes les distributions Linux intégrant snapd.

Mais l'entreprise va devoir être vigilante. En prenant notamment soin de snapd, car elle est déjà revenue sur sa promesse de ne pas le rendre obligatoire pour l’installation d’applications sur Ubuntu, donc les distributions qui le reprennent. Linux Mint n’a beau être « qu’un » système dérivé, il est assez connu pour que le problème soit sous les feux des projecteurs. Canonical opérant dans le monde du logiciel libre, un passage en force pourrait provoquer une vive réaction générale.

Il n’est pas certain non plus que les utilisateurs soient directement témoins des avantages portés par ces solutions. Cela reste des applications lancées, la plupart du temps, depuis une grille. Ils pourraient cependant s’agacer de voir la consommation d’espace disque exploser avec l’installation d’applications.

D’un point de vue technique, ces types de paquets offrent de réels avantages dans la distribution, ne serait-ce justement que parce qu’ils la simplifient pour les éditeurs. Le concept d’exécution de type conteneur est là aussi – et dans l’absolu – très intéressant sur le plan de la sécurité, mais pas sans défaut.

Le projet le plus abouti semble toutefois toujours AppImage, sans doute parce qu’il est aussi le plus ancien. Les développeurs ont le choix d’intégrer ou non un mécanisme de sandbox, et tout ou partie des dépendances, sans modifier le concept central d’un fichier par application.

Dans la bataille, qui ne fait que commencer, l’utilisateur devra rester au centre des préoccupations. Dans ce contexte, certains risquent par exemple de ne pas comprendre la décision de Linux Mint, puisque l’expérience d’utilisation va directement en pâtir. Les décisions de Canonical seront à suivre de près.

Écrit par Vincent Hermann

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Paquets contre paquets

L'ère des paquets « tout-en-un »

AppImage : le plus ancien

Snap : le mastodonte promu par Canonical

Flatpak : un concurrent direct aux snaps

Le futur de la distribution ?

next n'a pas de brief le week-end

Le Brief ne travaille pas le week-end.
C'est dur, mais c'est comme ça.
Allez donc dans une forêt lointaine,
Éloignez-vous de ce clavier pour une fois !

Fermer

Commentaires (67)


Bon sinon, APT et YUM, c’est pas si mal, non ? N’y a t-il pas des pistes à explorer pour faciliter les soucis de dépendances, tant côté éditeur que côté user ?


Je préfère de loin apt et yum mais pour quelques applis un peu exotiques ce genre de mécanisme est sympa pour éviter d’avoir à pourrir son système. Mais je ne vois d’intérêt que pour les cas à la marge et pas pour un système généralisé.


Bonjour plusieurs choses non évoqués dans l’articles et importantes à mon sens:



* Flatpak au contraire de snap permet la mutualisation des lib.

En gros si j’installe firefox + thunderbird sous flatpak, les libs en commun ne sont installées qu’une seule fois.

Au contraire sous snap, firefox aura ses libs ET flatpak aura ses libs, donc ça prend encore plus de place.

Mais même sans ça pour avoir une idée de la place prise, un émulateur gba en flatpack peut prendre plusieurs go… Oui oui!!!





* Autre soucis, les paquets snap (je ne sais pas pour flapak?) entrainent plein de points de montages qui polluent. il suffit de faire un fdisk -l après avoir installé des snap pour comprendre…

Une foule de /dev/loop….





* Et un point non négligeable qui n’est pas vraiment évoqué et qui est pourtant LE GROS point noir de toutes ces solutions: Le temps de lancement.

Un paquet snap c’est plus du double de temps temps de démarrage d’un paquet natif deb/rpm…

Il suffit de comparer le temps de démarrage de firefox/chromium pour que ça saute aux yeux… Et ce même sur une machine correcte à base de ryzen + SSD NVME…

C’est totalement rédhibitoire pour moi!

Flatpack fait légèrement mieux (oui oui même que snap sur ubuntu…), mais ça reste perceptible.

Sans compter que les deamon snap/flatpak impliquent une charge mémoire de 100mo en plus. Donc sur une config limite ça peut poser problème…



Pour moi ces deux solutions ne doivent être utilisées que pour éviter des PPA, c’est là toute leur force, mais pour une application qu’on utilise tous les jours comme un navigateur, c’est affreux…








ColinMaudry a écrit :



Bon sinon, APT et YUM, c’est pas si mal, non ? N’y a t-il pas des pistes à explorer pour faciliter les soucis de dépendances, tant côté éditeur que côté user ?





Unifier APT et Yum, et les autres ? Bonne chance <img data-src=" />



L’isolation imposée par snapd peut paraître bien mais est devient problématique quand on ne la souhaite pas. Les applications n’ont plus accès à certaines ressources, vivent seules dans leur coin et deviennent difficiles à intégrer dans l’environnement. Je me suis fait échauder 2 ou 3 fois. Maintenant je privilégie plutôt AppImage qui est certes plus basique, mais plus efficace en pratique.



Et, dans tous les cas, je n’utilise ce type de solution qu’en dernier recours, quand il n’est pas possible de faire autrement.


Merci pour l’article, j’ai appris beaucoup de choses.



Je vois l’avantage côté dev et admin sys mais côté utilisateur je vois beaucoup de point rebutant et très peu d’avantage.



Et de manière générale, on sacrifie l’optimisation au nom de la simplicité et de la sécurité.



&nbsp;


Je plussoie Burn2, les snaps ont un temps de chargement beaucoup plus longs qu’en natif gestion de paquet genre apt, ça peut aller de x2 à x5 pour certaines applis avec beaucoup de dépendances.


PC-BSD à son époque avait aussi le même type d’approche avec les fichiers PBI.


Evoquer aussi les images de containers (type Docker), intégrant eux aussi toutes les dépendances nécessaires à une application, aurait-il été hors sujet ?


Snap, c’est 1015 secondes pour lancer la calculatrice (sur un SSD). Contre 1 pour le deb.

Donc <img data-src=" /> snap








Jarodd a écrit :



Snap, c’est 1015 secondes pour lancer la calculatrice (sur un SSD). Contre 1 pour le deb.

Donc <img data-src=" /> snap





<img data-src=" /> Mais comment un truc pareil peut-il être massivement adopté ?



Parce que du point de vue dev, c’est tout bénef.

On fait un seul paquet et ça marche sur toutes les distribs qui supportent snap.

C’est la facilité virsus les performances. :/





Mais pour l’utilisateur en dehors du cas évoqué d’éviter les ppa, c’est une perte de perf vraiment énorme en plus de la place prise. :/


On ne peut pas avoir le meilleur des deux mondes en même temps, il faut faire un choix.



Soit tu fournis tout en un pour que cela soit simple et universel, soit tu découpes tout en petit morceau très modulaires (les paquets) mais avec la gestion des dépendance qui est complexe derrière.



D’autant que tout n’est pas qu’une question de format. Même si par exemple Fedora et Debian utilisaient tous les deux des RPM, un RPM ne serait pas compatible pour les deux car il y a d’autres éléments :



* Convention de nommage (le paquet “kernel” chez Fedora c’est le noyau Linux, alors que Debian a le paquet “linux” pour cela) ;

* Le découpage des paquets retenus, certaines distributions ont un découpage plus fin des paquets (plus ou moins de modules activés et installés par défaut)

* Le choix des options de compilation retenues qui peuvent impacter l’ABI d’un paquet ;

* Le choix des versions des paquets, essayer de faire tourner un logiciel à sa dernière version avec une bibliothèque de base pas à jour depuis longtemps, cela pose des soucis de compatibilité.



Et ces problématiques sont globalement insolubles avec un gestionnaire de paquet classique.



L’article est pas mal, mais il oublie de mentionner un point fort de Flatpak : les runtimes.

En gros les bibliothèques assez communs (libc, Qt, GTK, KDE, GNOME, OpenSSL, etc.) sont dans des runtimes versionnés. Donc plutôt que Firefox embarque dans son Flatpak les bibliothèques communes à de nombreuses applications, il va dépendre d’un runtime.



L’avantage est d’améliorer la sécurité et d’optimiser les ressources en partageant les bibliothèques très communes. L’inconvénient est qu’un runtime c’est lourd (en général 100 Mio à plusieurs Gio). Donc si on n’a qu’un Flatpak qui utilise Qt, on va via ce runtime installer de nombreuses bibliothèques en trop. Mais si on installe beaucoup d’applications comme ça (par exemple els applciations KDE) on se rapproche de la taille qu’on avait avec un gestionnaire de paquet classique.



La compatibilité est conservée grâce au versionnement, on peut avoir un runtime en plusieurs versions en même temps si nécessaire. Tout en mutualisant un maximum les ressources communes.








Burn2 a écrit :





C’est justement à cause de ce runtime à télécharger et à installer que cela prend autant de place, sinon c’est plutôt de l’ordre de 10 Mio d’après le gestionnaire.



Si tu réutilises ces bibliothèques avec d’autres Flatpak, ils ne seront plus à télécharger et à installer à nouveau. ;)





stratic a écrit :



L’isolation imposée par snapd peut paraître bien mais est devient problématique quand on ne la souhaite pas. Les applications n’ont plus accès à certaines ressources, vivent seules dans leur coin et deviennent difficiles à intégrer dans l’environnement.&nbsp;



&nbsp;

C’est pourquoi Flatpak intègre la notion de portails. Outre la configuration des permissions à la Android ou iOS pour gérer les droits, tu peux avoir des droits dynamiques.



Par exemple, tu veux ouvrir un fichier local avec LibreOffice. Via le menu “ouvrir” l’utilisateur peut choisir le fichier qu’il veut malgré l’isolation. Et Libreoffice ne pourra ouvrir que ce fichier car l’utilisateur l’aura choisi en connaissance de cause. Cela reste donc utilisable tout en évitant que le logiciel puisse (par bogue ou faille exploitée) accéder aux autres fichiers le reste du temps.



Même mécanisme pour les captures d’écran globaux par exemple, tu prends une capture et tu autorises ou non l’application à la volée d’accéder au contenu. Pareil pour le micro, la webcam, etc.



Le gain de sécurité n’est pas négligeable, on voit plus facilement ce que font les applications, on en a in fine un meilleur contrôle sans devoir lire le code source pour l’auditer. Le système devient plus robuste. Et cela reste utilisable.



Je n’ai jamais utilisé ce mode d’installation de logiciel, donc je vais peut-être dire une connerie. De ce que je comprends, cela ressemble au .exe sous Windows. Avec ces systèmes (snap, flatpak, appimage), les bibliothèques sont incluses dans le paquet. Mais du coup, si une faille de sécurité est découverte dans l’une des bibliothèques empaquetée, il faut installé un nouveau snap/flatpak/appimage qui contient une version à jour de la bibliothèque. A moins qu’il y ait un système de mise à jour intégrée dans ces technologies.



Avec le système traditionnel (deb/rpm), vu qu’une bibliothèque est utilisée par tous les logiciels empaquetés par la distribution, si une faille existe dans une bibliothèque, il suffit de mettre à jour le paquet de la bibliothèque et toutes les logiciels qui utilisent cette bibliothèque seront automatiquement protégés.


En tout cas les Flatpak et Snap ont le concept de dépôt pour mettre à jour les logiciels.



Et les Flatpak avec les runtime peuvent partager des bibliothèques entre elles pour limiter le besoin en maintenance de ce genre bien qu’elle soit plus importante.



Ne pas oublier aussi le revers des paquets, en théorie avoir une bibliothèque commune permet de mettre à jour une fois pour tout le monde. Mais produire et tester cette mise à jour n’est pas triviale car on doit s’assurer que tous les logiciels qui en ont besoin ne seront pas cassés par cette MaJ. Elles ont rarement été testée en amont avec la version choisie par la distribution et il n’est pas rare de devoir faire des correctifs manuels pour essayer de résoudre ces régressions.



&nbsp;








Beuark a écrit :



Evoquer aussi les images de containers (type Docker), intégrant eux aussi toutes les dépendances nécessaires à une application, aurait-il été hors sujet ?





Sans parler du fait que tout ces systèmes “à la mode” (snap, docker…) ont donc des composants en plusieurs exemplaire à mettre à jour lors de failles.









David_L a écrit :



Unifier APT et Yum, et les autres ? Bonne chance <img data-src=" />





Un peut inutile vue que yum n’est plus développé.

Vive DNF ;)



dnf n’est que sur Fedora non ? sur CentOS c’est toujours yum il me semble (ou alors c’est moi qui utilise toujours yum <img data-src=" />)


Sur les dernières version c’est DNF.

Mais il reste la commande yum qui permet de conservé une compatibilité.


Sur la V7 c’est toujours yum.

Sur la V8 il me semble que c’est bien passé à DNF. <img data-src=" />


snap, flatpack, & co, c’est une façon d’émuler l’édition de lien statique avec des bibliothèques dynamiques… retour de 30 ans en arrière.


&gt; D’un point de vue technique, ces types de paquets offrent de réels

avantages dans la distribution, ne serait-ce justement que parce qu’ils

la simplifient pour les éditeurs





Je ne suis pas sur que cela simplifie beaucoup les choses. On embarque tout, les mises à jour de sécurité sont toutes à refaire à chaque fois sur toutes les lib embarquées. Comme on ne distribue qu’avec un choix sur les versions pour que les tests unitaires passent, on fait bien moins les mises à jour. Le code est au final bien moins portable car ne tourne qu’avec certaines versions. Cela ne pousse pas à la rétrocompatibilité des bibliothèques (monde js dans lequel plonge aussi pas mal Python ces derniers temps).



Au final, on gagne du temps ici mais code moins robuste, on en perds là.



Faire un paquet .deb pas hyper clean est SUPER simple, en gros on tar.gz son arborescence, un fichier de control et hop c’est finit. Automatiser cela est complètement trivial !


Ce n’est présent que sur Ubuntu. Flatpak est bien plus avancé et abouti que Snap.


A noter que les sources du serveur snap ne sont pas libre et donc pas de possibilité d’y héberger son propre dépôt. C’est complètement centralisé. On a là un équivalent aux stores mobiles.

Là où Flatpak, il est tout à fait possible d’avoir plusieurs dépôts configurés sur sa machine (comme les dépôts apt/rpm actuels) et donc d’héberger sa propre instance.








Renault a écrit :



En tout cas les Flatpak et Snap ont le concept de dépôt pour mettre à jour les logiciels.



Et les Flatpak avec les runtime peuvent partager des bibliothèques entre elles pour limiter le besoin en maintenance de ce genre bien qu’elle soit plus importante.



Ne pas oublier aussi le revers des paquets, en théorie avoir une bibliothèque commune permet de mettre à jour une fois pour tout le monde. Mais produire et tester cette mise à jour n’est pas triviale car on doit s’assurer que tous les logiciels qui en ont besoin ne seront pas cassés par cette MaJ. Elles ont rarement été testée en amont avec la version choisie par la distribution et il n’est pas rare de devoir faire des correctifs manuels pour essayer de résoudre ces régressions.



&nbsp;





En théorie un des avantages de Flatpak et Snap c’est de limiter la nécessité/difficulté d’avoir des mainteneurs et des packagers.

En pratique il reste encore pas mal de trou dans la raquette, un paquet embarquant une vulnérabilité peux toujours faire beaucoup de dégâts (même sans parler des faiblesse de l’isolation) et ils ne sont pas forcément corrigé rapidement.

Avec des solutions de scan automatique des dépôts, de bot de mise à jour automatique… le problème peux être limité mais au final on en revient a la problématique initial car avec des process d’automatisation et de test bien conçus une distribution peux aussi être maintenu avec des équipes limités.









ben51 a écrit :



Un peut inutile vue que yum n’est plus développé.

Vive DNF ;)





Tiens d’ailleurs, enfin sait gérer les paquets « auto installé » &nbsp;(comme dépendance) et plus nécessaire ?

c’est vraiment le truc qui manque à rpm comparé à deb je trouve



Entre Snap et Flatpak d’un côté, Nix et Guix de l’autre, je pense qu’on progresse dans le bon sens vers des applications containérisées et une meilleure gestion des dépendances sans conflit. Le prochain travail est sur la déduplication des dépendances des distributions de logiciels, qui sera facilitée si on intègre ça avec Nix ou Guix (par exemple avec des dépendances signées et des builds reproductibles, pouvant être installées depuis plusieurs sources).








ColinMaudry a écrit :



Bon sinon, APT et YUM, c’est pas si mal, non ? N’y a t-il pas des pistes à explorer pour faciliter les soucis de dépendances, tant côté éditeur que côté user ?





En fait, il y a déjà eu des tentatives d’uniformisation des distrib Linux (avec la LSB, Linux Standard Base).

Yum (ou plutôt le format rpm) avait alors gagné, mais Debian a fait de la résistance.









alex.d. a écrit :



snap, flatpack, & co, c’est une façon d’émuler l’édition de lien statique avec des bibliothèques dynamiques… retour de 30 ans en arrière.







Rien à voir. Puis limiter les Flatpak à cette seule histoire de dépendances, c’est passer à côté d’autres fonctionnalités intéressantes :







  • pouvoir installer les dernières versions de toutes tes applications, y compris sur les distributions qui ont un cycle long (Debian, CentOS, Ubuntu LTS…) et qui ne possèdent pas forcément les bonnes dépendances

  • une meilleure sécurité, puisque les applications sont exécutées dans une sandbox

  • une gestion plus fine des droits. Avec le modèle traditionnel, c’est tout ou rien. Là, tu peux accorder ou non, à chaque application, un accès à certains périphériques (micro, webcam…), à ta localisation…

  • la possibilité d’installer facilement plusieurs versions d’une même application en parallèle (par exemple, la version stable et la version de développement)

  • les développeurs peuvent fournir eux-mêmes leur application telle qu’ils l’ont voulu (certaines distributions désactivant certaines fonctionnalités pour ne pas enfreindre des brevets logiciels, par exemple)

  • les applications seront exécutées à l’identique chez les développeurs et chez les utilisateurs, facilitant la reproductibilité de bugs et donc leur correction







    (mais je suis d’accord pour dire que snap, ça pue du cul) <img data-src=" />







    sytoka a écrit :



    Je ne suis pas sur que cela simplifie beaucoup les choses. On embarque tout, les mises à jour de sécurité sont toutes à refaire à chaque fois sur toutes les lib embarquées.











    cyp a écrit :



    En pratique il reste encore pas mal de trou dans la raquette, un paquet embarquant une vulnérabilité peux toujours faire beaucoup de dégâts (même sans parler des faiblesse de l’isolation) et ils ne sont pas forcément corrigé rapidement.







    Dans le cas de Flatpak, l’article est erroné quand il indique « qu’on retrouve un paquet contenant l’application et toutes ses dépendances », ce qui est faux. La grande majorité des Flatpak ne contiendront qu’une application sans aucune dépendance, en se basant sur les runtimes GNOME, KDE, Freedesktop… qui eux, contiennent bien les dépendances nécessaires à la majorité des applications, tout en étant bien maintenus. Les développeurs ont juste à gérer leur application, les runtimes étant gérés par des équipes. C’est donc comme pour les distributions, sauf que là, les équipes GNOME et KDE ont la main sur leur runtime respectif, ce qui n’est pas plus mal.



    Après oui, certaines applications peuvent avoir besoin d’inclure certaines bibliothèques un peu moins communes. Mais ce n’est donc pas la norme, et d’inclure potentiellement une ou deux bibliothèques, ce n’est pas non plus la même chose qu’un paquet qui inclurait absolument toutes ses dépendances.



Nope, Flatpak ne monte aucun image


Sinon, point de vue temps de lancement, avec Flatpak je ne vois pas vraiment de différence (testé avec GIMP installé par flathub et par le dépôt Fedora). Mais peut-être que c’est dû au fait que mon PC est relativement puissant.


Pour expliquer le concept, je fais souvent le parallèle avec les applications mobiles qui demandent telles ou telles permission à l’utilisation (appareil photo, fichiers, contacts, etc)








Okki a écrit :



Dans le cas de Flatpak, l’article est erroné quand il indique « qu’on retrouve un paquet contenant l’application et toutes ses dépendances », ce qui est faux.&nbsp;





Comme on le dit dans l’article, les développeurs ont effectivement “un peu plus de libertés dans les éléments qu’ils souhaitent intégrer dans le paquet” <img data-src=" />



Pour docker, pas sûr que ça soit super adapté à des applis graphiques locales. Si quelqu’un connaît bien docker ici, à part pour déployer des services via le réseau, est-ce qu’on peut lancer une appli graphique depuis un container docker (genre, j’ai un programme Qt/OpenGL, je peux le dockeriser et en sortir quelque chose) ?


Oui, c’est tout l’objet d’ailleurs de Fedora Toolbox de configurer des images podman (compatible avec Docker) pour rendre cela possible.



Mais ce n’est pas trivial de le faire proprement (configurer DBus, l’accès au /home, configurer la session graphique, etc.). D’où l’existence d’un tel outil.








Okki a écrit :



Rien à voir. Puis limiter les Flatpak à cette seule histoire de dépendances, c’est passer à côté d’autres fonctionnalités intéressantes :



pouvoir installer les dernières versions de toutes tes applications, y compris sur les distributions qui ont un cycle long (Debian, CentOS, Ubuntu LTS…) et qui ne possèdent pas forcément les bonnes dépendances

une meilleure sécurité, puisque les applications sont exécutées dans une sandbox

une gestion plus fine des droits. Avec le modèle traditionnel, c’est tout ou rien. Là, tu peux accorder ou non, à chaque application, un accès à certains périphériques (micro, webcam…), à ta localisation…

la possibilité d’installer facilement plusieurs versions d’une même application en parallèle (par exemple, la version stable et la version de développement)

les développeurs peuvent fournir eux-mêmes leur application telle qu’ils l’ont voulu (certaines distributions désactivant certaines fonctionnalités pour ne pas enfreindre des brevets logiciels, par exemple)

les applications seront exécutées à l’identique chez les développeurs et chez les utilisateurs, facilitant la reproductibilité de bugs et donc leur correction



Avec un link statique, tu peux :

– installer la dernière version du binaire, y compris sur une distrib qui n’a pas les bonnes dépendances

– installer plusieurs versions d’une même appli

– le développeur peut fournir le binaire lui-même

– et donc l’appli sera exécutée pareil chez le développeur et l’utilisateur.

C’est quelque chose qui s’est fait pendant au moins 20 ans sous Linux, et qui se faisait déjà sous Solaris et sous IRIX encore avant. Les applis propriétaires n’ont pas attendu snap ou flatpack pour être distribuées précompilées, en dehors du système de packaging de la distrib.

Puis c’est tombé en désuétude, parce que quand même, quand tu as un binaire qui fait plusieurs centaines de mégas, les gens prennent peur. Et quand une faille critique est trouvée dans la libopenssl ou dans la libc (au hasard) et qu’il faut que les développeurs suivent toutes les failles de toutes leurs dépendances pour mettre à jour tous leurs binaires chez tous leurs clients, ce n’est pas vivable.



Bon, ok, en link statique tu n’as pas la sandbox ni la gestion des droits. Mais il n’y a pas de raison qu’une exécution sandboxée soit liée au packaging, sans compter que t’as l’air fin avec ton sandboxing qui encapsule des applis dont tu ne peut pas mettre à jour les dépendances en cas de faille de sécurité…



La juxtaposition de versions d’une appli, c’est un peu gadget aussi. Rares sont les applis à avoir une compatibilité ascendante dans leur format de fichier. Une fois que tu as modifié un document avec la nouvelle version d’une appli, c’est compliqué de retourner avec l’ancienne version.

&nbsp;









alex.d. a écrit :



Bon, ok, en link statique tu n’as pas la sandbox ni la gestion des droits. Mais il n’y a pas de raison qu’une exécution sandboxée soit liée au packaging, sans compter que t’as l’air fin avec ton sandboxing qui encapsule des applis dont tu ne peut pas mettre à jour les dépendances en cas de faille de sécurité…



&nbsp;

Tu oublies trois choses.



Flatpak a la notion de runtimes, donc peut partager des bibliothèques entre des applications Flatpak ce qui réduit la portée de ta remarque et est donc un progrès par rapport au binaire statique d’antan.



Ensuite, je trouve toujours amusant les gens qui vantent l’avantage des dépôts avec une bibliothèque à une version unique pour tous les paquets et qu’il suffit de mettre à jour pour que tout le monde corrige la faille. Car oui, c’est une réalité pour l’utilisateur, mais vous avez vraiment géré une distribution dans votre vie ? Cette problématique est très complexe, les distros doivent patcher à tout va pour s’assurer que la dite mise à jour unique n’entraînera pas de régressions dans les paquets qui dépendent d’elle. Car il est rare que le développeur principal teste son logiciel avec la version retenue des distributions pour chaque bibliothèque. Cela entraîne souvent des retards pour proposer des mises à jour, à cause de cela. Ou introduit des bogues.



Ce n’est pas magique et sans faille comme procédé, cela a un coût de maintenance non nulle.



Enfin, faire un sandboxing cela ne s’improvise pas non plus. Si le sandboxing n’est pas liée au format de paquet, elle est liée à quoi alors ? Chacun doit créer son bac à sable ? Ce n’est pas tenable.



Si Flatpak a suivi cette voie comme Android ou iOS, ce n’est pas parce qu’ils sont incompétents (cela commencerait à faire pas mal de monde) mais parce qu’il y a des aspects intéressants à faire ainsi :



* Tu peux facilement dire à l’installation les droits ou nouveaux droits requis et donc refuser de le faire si cela ne te convient pas ;

* Le sandboxing ne vient pas de nul part et la politique de sandboxing est un travail d’intégration donc en gros le travail que mène en général une distribution… via le packaging ;

* Il faut donc quelqu’un s’assure d’une config par défaut du bac à sable qui concilie bonne intégration, fonctionnalité et sécurité. Ce n’est pas à l’utilisateur de le faire lui même, ni forcément au développeur de l’application. Le mainteneur du paquet est donc tout indiqué dans cette tâche.



Techniquement les paquets traditionnels définissent les droits UNIX associés aux binaires, créent des utilisateurs spéciaux pour certains services, etc. Pourquoi ces tâches là seraient normales dans ce contexte mais pas le bac à sable ?









alex.d. a écrit :



Puis c’est tombé en désuétude, parce que quand même, quand tu as un binaire qui fait plusieurs centaines de mégas, les gens prennent peur. Et quand une faille critique est trouvée dans la libopenssl ou dans la libc (au hasard) et qu’il faut que les développeurs suivent toutes les failles de toutes leurs dépendances pour mettre à jour tous leurs binaires chez tous leurs clients, ce n’est pas vivable.







Tu listes toi même de nombreux problèmes, qui n’ont pas lieu avec Flatpak :







  • les bibliothèques ne sont pas liées statiquement (une grosse partie des dépendances sont dans des runtimes (Freedesktop, GNOME, KDE…)

  • les runtimes sont régulièrement mis à jour pour corriger d’éventuelles failles de sécurité (tu peux voir les changements pour celui de Freedesktop)

  • les runtimes étant gérés par des équipes dédiées, les développeurs d’applications peuvent se concentrer sur la sécurité de leur propre projet

  • les bibliothèques présentes dans un runtime n’ayant pas besoin d’être incluses dans chaque Flatpak qui en dépend, ça évite de gaspiller de l’espace disque en dupliquant cinquante fois la même chose. Puis les mises à jour gérant les deltas, il n’y a besoin de télécharger que les différences depuis la dernière mise à jour, et non les runtimes dans leur intégralité, ce qui économise également la bande passante (et les quotas pour ceux qui en ont)







    Pour tes autres points, comme le fait de pouvoir « installer la dernière version du binaire, y compris sur une distrib qui n’a pas les bonnes dépendances » ou « installer plusieurs versions d’une même appli », le développeur peut effectivement bricoler un truc dans son coin, mais tu perds en facilité.



    Par exemple, une fois Flatpak installé (il est présent par défaut sur de plus en plus de distributions), on peut ajouter le dépôt Flathub en deux clics. Une fois fait, depuis sa logithèque, l’utilisateur pourra rechercher, installer ou mettre à jour, de façon transparente, aussi bien depuis les dépôts de sa distribution que depuis Flathub. Facilité que tu n’as pas si tu dois aller chercher toi-même un gros binaire sur le site officiel de chacune de tes applications.









Renault a écrit :



Ensuite, je trouve toujours amusant les gens qui vantent l’avantage des dépôts avec une bibliothèque à une version unique pour tous les paquets et qu’il suffit de mettre à jour pour que tout le monde corrige la faille.&nbsp;







Okki a écrit :



Tu listes toi même de nombreux problèmes, qui n’ont pas lieu avec Flatpak :



les bibliothèques ne sont pas liées statiquement (une grosse partie des dépendances sont dans des runtimes (Freedesktop, GNOME, KDE…)

les runtimes sont régulièrement mis à jour pour corriger d’éventuelles failles de sécurité (tu peux voir les changements pour celui de Freedesktop)



Mettez-vous d’accord : soit on juxtapose différentes versions des runtimes (et on n’a pas les mises à jour), soit les runtimes sont mis à jour séparément, mais du coup on retombe sur le problème de la mise à jour d’un morceau seulement qui peut être problématique.



Bref, il semble que Flatpack ne soit qu’un format de paquets en plus, qui se juxtapose en faisant doublon avec ceux de la distrib, avec des paquets, des dépendances, et des mises à jour. Bientôt une distrib Linux intégralement Flatpack ?

&nbsp;









alex.d. a écrit :



Mettez-vous d’accord : soit on juxtapose différentes versions des runtimes (et on n’a pas les mises à jour), soit les runtimes sont mis à jour séparément, mais du coup on retombe sur le problème de la mise à jour d’un morceau seulement qui peut être problématique.



Bref, il semble que Flatpack ne soit qu’un format de paquets en plus, qui se juxtapose en faisant doublon avec ceux de la distrib, avec des paquets, des dépendances, et des mises à jour. Bientôt une distrib Linux intégralement Flatpack ?

&nbsp;



J’avoue que tu as un peu raison mais le mieux est d’installer flatpak sur ta distro pour voir concrètement. Il y a beaucoup moins de bibliothèques en commun et donc c’est beaucoup plus facile à maintenir

mais il y a bien un transfert de responsabilité de la distro vers le mainteneur de l’application et on ne sait pas qui maintient le socle commun. On peut imaginer qu’une distro réponde à un but précis (par exemple donner des outils aux développeurs concernant le cloud, la programmation, l’IA et j’en passe) et de conseiller de prendre des applications flatpak pour tout le reste.



On peut aussi imaginer un noyau très restreint de la distro (par exemple Fedora Silverblue ) qui répond à un objectif bien précis et des flatpak tout autour. Un des avantages est de retrouver le logiciel du flatpak disponible pour toutes les distros au lieu que chaque distro adapte le logiciel à son environnement (dépendances).



Par contre, il y a toujours le PB du bac à sable et de ses autorisations. Personnellement, à l’installation d’une appli, je n’ai le choix que d’accepter les autorisations ou de refuser l’installation du logiciel. Et si le créateur du flatpak a oublié une autorisation ou si elle n’est pas prévue, je n’ai pas toutes les fonctionnalités de l’application.



C’est par exemple le cas de LibreOffice qui m’empêche de sauvegarder un fichier directement dans le drive de Google (compte en ligne Google). J’en ai d’autres mais qui ne me viennent pas à l’esprit.

Par contre sur mon NUC Celeron N3050, je ne vois pas de différence entre un flatpak ou non point de vue chargement.









Renault a écrit :



&nbsp;



Tu oublies trois choses.      






Flatpak a la notion de runtimes, donc peut partager des bibliothèques entre des applications Flatpak ce qui réduit la portée de ta remarque et est donc un progrès par rapport au binaire statique d'antan.      






Ensuite, je trouve toujours amusant les gens qui vantent l'avantage des dépôts avec une bibliothèque à une version unique pour tous les paquets et qu'il suffit de mettre à jour pour que tout le monde corrige la faille. Car oui, c'est une réalité pour l'utilisateur, mais vous avez vraiment géré une distribution dans votre vie ? Cette problématique est très complexe, les distros doivent patcher à tout va pour s'assurer que la dite mise à jour unique n'entraînera pas de régressions dans les paquets qui dépendent d'elle. Car il est rare que le développeur principal teste son logiciel avec la version retenue des distributions pour chaque bibliothèque. Cela entraîne souvent des retards pour proposer des mises à jour, à cause de cela. Ou introduit des bogues.      






Ce n'est pas magique et sans faille comme procédé, cela a un coût de maintenance non nulle.      






Enfin, faire un sandboxing cela ne s'improvise pas non plus. Si le sandboxing n'est pas liée au format de paquet, elle est liée à quoi alors ? Chacun doit créer son bac à sable ? Ce n'est pas tenable.      






Si Flatpak a suivi cette voie comme Android ou iOS, ce n'est pas parce qu'ils sont incompétents (cela commencerait à faire pas mal de monde) mais parce qu'il y a des aspects intéressants à faire ainsi :      






* Tu peux facilement dire à l'installation les droits ou nouveaux droits requis et donc refuser de le faire si cela ne te convient pas ;      

* Le sandboxing ne vient pas de nul part et la politique de sandboxing est un travail d'intégration donc en gros le travail que mène en général une distribution... via le packaging ;

* Il faut donc quelqu'un s'assure d'une config par défaut du bac à sable qui concilie bonne intégration, fonctionnalité et sécurité. Ce n'est pas à l'utilisateur de le faire lui même, ni forcément au développeur de l'application. Le mainteneur du paquet est donc tout indiqué dans cette tâche.






Techniquement les paquets traditionnels définissent les droits UNIX associés aux binaires, créent des utilisateurs spéciaux pour certains services, etc. Pourquoi ces tâches là seraient normales dans ce contexte mais pas le bac à sable ?





Je vois là une contradiction.

La maintenance des&nbsp; bibliothèques à travers les dépôts traditionnels est très complexe pouvant entraîner des retards de mise à jour ou introduire des bogues,.

Et dans le cas de Flatpak,&nbsp; la notion de runtimes permet de partager des bibliothèques. On se retrouve alors dans la même problématique avec des retards & bogues ?

Une solution serait alors que chaque application utilise sa version de ou des bibliothèques ce qui me semblent envisageable ,dans le cas des dépôts traditionnels, via notamment des solutions comme qu’alternatives.

Du coup, je ne vois pas trop comment les flatpak apportent une solution à la maintenance des bibliothèques partagées ?

<img data-src=" />



Oui bien sur. Suffit de “binder” la socket X11 dans le container. J’ai mon eclipse qui tourne dans un docker par exemple.








zempa a écrit :



Du coup, je ne vois pas trop comment les flatpak apportent une solution à la maintenance des bibliothèques partagées ?





Les gros runtime type GNOME, KDE ou Freedesktop sont communs à tout le monde. Que tu sois Debian, Ubuntu ou Fedora c’est le même runtime. Cela apporte plusieurs bénéfices pour faciliter le travail.



Déjà cela mutualise le travail, aujourd’hui comme chaque distro peut avoir sa version propre d’une bibliothèque, la maintenance associée est à refaire.



Ensuite, comme Flatpak est plus uniforme, on peut espérer que le développeur dise “mon application est compatible avec le runtime GNOME 3.36, j’ai testé”. Ou que plus d’utilisateurs l’aient fait. Il est très improbable qu’un développeur ait testé toutes les distributions avec les variantes de version que cela impose.



Enfin, et c’est là que c’est intéressant, tu peux avoir deux runtimes à des versions différentes.



Donc admettons que OpenSSL et qu’elle soit dans le runtime Freedesktop 19.04 doit passer à une version majeure suivante qui comporte de nombreuses corrections de sécu à la volée dans le runtime Freedesktop 20.04.



Pas de bol, l’application X n’est pas prêt pour passer au runtime Freedesktop 20.04, le résultat n’est pas fiable. Pas grave, les applications prêtes passent à la version 20.04 et ton système gardera la version antérieure tant que cette application n’aura pas migré elle aussi. Donc les applications qui peuvent déjà bénéficier du correctif le peuvent rapidement, les applications moins maintenues ou plus complexes auront la MaJ en temps voulu.



Donc finalement d’un point de vue sécurité c’est mieux, et toutes les applications continuent de tourner sans interruption de service. Pour l’utilisateur c’est transparent. Par contre cela a un surcoût en espace disque et mémoire, rien n’est gratuit en ce monde on doit faire des compromis.



Super, merci de la réponse, ça peut m’aider sur des cas problématiques (des projets C++ avec plein de dépendances ch… à installer <img data-src=" /> )








zempa a écrit :



Et dans le cas de Flatpak,&nbsp; la notion de runtimes permet de partager des bibliothèques. On se retrouve alors dans la même problématique avec des retards & bogues ?&nbsp;



&nbsp;Je n’ai pas de notion de flatpack, ou même de comment Linux gère les libs (pas eu à y toucher depuis … quelque part avant 2010…)

Par contre sous PC-BSD avec les PBI, je peux dire comment on pouvait s’y retrouver:



Imaginons 2 softs A et B, dépendants de la lib LIB1.0 sous le nom “LIB”. On se retrouve à l’install avec 2 répertoires:





  • /lib: contient LIB1.0

  • A: contient un lien vers LIB -&gt; /lib/LIB1.0

  • B: contient un lien vers LIB -&gt; /lib/LIB1.0



    Lors d’un mise à jour, B pointe vers la version LIB1.1:



  • /lib: contient LIB1.0 et LIB1.1

  • A: contient un lien vers LIB -&gt; /lib/LIB1.0

  • B: contient un lien vers LIB -&gt; /lib/LIB1.1



    &nbsp;Un peu comme si sous Windows toutes les DLL étaient partagées si même version et dupliquées sinon.



    A l’époque j’avais fait un script pour faire cela avec les 1ère versions, car quand on a 128Mo de RAM, on fait en sorte que les librairies soient lues une seule fois et partagées dès qu’on peut…









Okki a écrit :



les bibliothèques ne sont pas liées statiquement (une grosse partie des dépendances sont dans des runtimes (Freedesktop, GNOME, KDE…)

les runtimes sont régulièrement mis à jour pour corriger d’éventuelles failles de sécurité (tu peux voir les changements pour celui de Freedesktop)

les runtimes étant gérés par des équipes dédiées, les développeurs d’applications peuvent se concentrer sur la sécurité de leur propre projet

les bibliothèques présentes dans un runtime n’ayant pas besoin d’être incluses dans chaque Flatpak qui en dépend, ça évite de gaspiller de l’espace disque en dupliquant cinquante fois la même chose. Puis les mises à jour gérant les deltas, il n’y a besoin de télécharger que les différences depuis la dernière mise à jour, et non les runtimes dans leur intégralité, ce qui économise également la bande passante (et les quotas pour ceux qui en ont)





Théoriquement toujours…. en pratique j’ai constaté que pas mal de Flatpak force des versions précise des runtimes et après quelques temps on se retrouve avec une belle collection de runtime obsolète.

Et une fois de plus on retombe sur le problème initial, le packager de l’application avait besoin de la version X d’une lib et a bloqué la dépendance.

Dans ce type de situation les flatpak offre plus de souplesse mais c’est à double tranchant car c’est aussi une invitation a limiter les efforts de maintenance de son package, ça marche avec la version X, le gestionnaire m’en fournit une version, problème résolu on s’occupera du reste plus tard…









Renault a écrit :



Donc admettons que OpenSSL et qu’elle soit dans le runtime Freedesktop 19.04 doit passer à une version majeure suivante qui comporte de nombreuses corrections de sécu à la volée dans le runtime Freedesktop 20.04.



Pas de bol, l’application X n’est pas prêt pour passer au runtime Freedesktop 20.04, le résultat n’est pas fiable. Pas grave, les applications prêtes passent à la version 20.04 et ton système gardera la version antérieure tant que cette application n’aura pas migré elle aussi. Donc les applications qui peuvent déjà bénéficier du correctif le peuvent rapidement, les applications moins maintenues ou plus complexes auront la MaJ en temps voulu.&nbsp;





Alors que sous Debian, le paquet openssl est patché avec la correction de sécurité idoine, et dès le lendemain toutes tes applications profitent d’un openssl corrigé sans avoir besoin de mettre à jour tout freedesktop, sans laisser en arrière les applis qui ne sont pas encore passées à une version plus récentes de freedesktop.



Ça ressemble juste à un énième système de packaging, mais à grain plus grossier, et sans personne pour s’assurer de la cohérence de l’ensemble.









alex.d. a écrit :



Alors que sous Debian, le paquet openssl est patché avec la correction de sécurité idoine, et dès le lendemain toutes tes applications profitent d’un openssl corrigé sans avoir besoin de mettre à jour tout freedesktop, sans laisser en arrière les applis qui ne sont pas encore passées à une version plus récentes de freedesktop.



Ça ressemble juste à un énième système de packaging, mais à grain plus grossier, et sans personne pour s’assurer de la cohérence de l’ensemble.







Par contre, si ton application a besoin des nouvelles fonctionnalités proposées par la dernière version de telle ou telle bibliothèque, tu l’as dans l’os, Debian ne proposant pas de montées en version lors de ses mises à jour (obligé d’attendre la version suivante de Debian).



Puis comme dit dans un précédent post, Flatpak gère les deltas pour ses mises à jour (c’est le même principe que git). Donc, si OpenSSL est mis à jour dans le runtime Freedesktop, il y aura juste ce petit composant qui aura besoin d’être mis à jour et non pas l’intégralité du runtime. Et comme pour les paquets traditionnels, tous les Flatpak dépendant du runtime bénéficieront de la mise à jour.



Et si, il y a bien des équipes pour s’assurer de la cohérence. Les équipes GNOME, KDE, Freedesktop… collaborent à la maintenance de leur runtime. Ce n’est pas chacun dans son coin et on ne discute jamais entre nous.



IL y a quand même une légère différence, je n’ai testé “que” sur un 6200U avec un ssd, mais sur un logiciel comme firefox c’est quand même légèrement plus long que le deb officiel.








cyp a écrit :



Théoriquement toujours…. en pratique j’ai constaté que pas mal de Flatpak force des versions précise des runtimes et après quelques temps on se retrouve avec une belle collection de runtime obsolète.







Je ne dirai pas vraiment qu’ils forcent une version précise. Disons plutôt qu’en tant que développeur, t’as envie que ton application tourne chez le plus de monde possible. Avec les paquets traditionnels, tu auras donc tendance à ne pas développer ton application en t’appuyant sur des dépendances trop récentes, qui te feraient prendre le risque qu’elle ne puisse pas être packagée dans les distributions populaires, qui peuvent être un peu à la traîne.



J’ai par exemple vu Clément Lefèbvre, le chef de projet de Linux Mint, demander au développeur de Drawing s’il ne pouvait pas diminuer certains pré-requis pour qu’il puisse proposer l’application par défaut dans Mint à la place de Gimp.



Avec Flatpak, ces problèmes n’ont plus lieu d’être. Tu peux t’appuyer sur les dernières versions de tel ou tel runtime, histoire de bénéficier des dernières technologies. Sauf que tous les projets sont loin d’avoir le même rythme de développement. Donc même s’ils s’appuient tous sur la dernière version de leur runtime au moment de leur sortie, il se peut que la version suivante de l’application ne sorte que de nombreux mois, voir années plus tard. Et d’ici là, l’application continuera de s’appuyer sur un runtime qui ne sera plus la dernière version.



C’est comme ça qu’effectivement, au fil du temps, plusieurs runtimes peuvent être installés. Maintenant, il est vrai que de lui-même, flatpak ne fait pas le ménage parmi les runtimes qui ne seraient plus utilisés. Ce qui est logique. À tout instant, tu peux très bien avoir besoin d’installer une vieille application non mise à jour depuis longtemps, qui aurait justement besoin de ce vieux runtime. S’il est déjà présent, il n’y a pas besoin de le re-télécharger :)



Mais si jamais t’as besoin de libérer de la place, tu peux toujours utiliser la commande flatpak uninstall –unused ou une application comme BleachBit.



Il semblerait que ce soit enfin le cas, j’ai remarqué à plusieurs reprises qu’un “dnf rm ” proposait de supprimer également les dépendances inutilisées.








Okki a écrit :



Par contre, si ton application a besoin des nouvelles fonctionnalités proposées par la dernière version de telle ou telle bibliothèque, tu l’as dans l’os, Debian ne proposant pas de montées en version lors de ses mises à jour (obligé d’attendre la version suivante de Debian).





Bah oui, on ne peut pas toujours avoir le beurre et l’argent du beurre. Et debian laisse le choix :





  • Tu veux un système stable, tu utilises (par exemple) debian stable (voir testing), mais les applications seront pas dans leur toute dernière version.

  • Tu veux des applications les plus à jour, tu utilises debian unstable (en rolling-release), mais bonjour les bugs et les plantages…





Flatpak permet d’avoir les deux, justement. ;)

Mais avec son coût propre.


On verra bien dans quelques années, lorsqu’il commencera à avoir des logiciels à l’abandon ou autre <img data-src=" />.


Clairement en dehors des cas exotiques risquant de foutre le dawa dans mon système, je ne trouve aucun intérêt à ces paquets en tant qu’utilisateur.



Pour les devs d’accord, mais est-ce que ça ne va pas aggraver le problème de la fragmentation des dépendances sous couvert de le résoudre (les multiples versions de python par exemple) ?








Mihashi a écrit :



On verra bien dans quelques années, lorsqu’il commencera à avoir des logiciels à l’abandon ou autre <img data-src=" />.







Même dans Debian, t’as plein de logiciels « abandonnés » upstream, qui sont encore packagés par les distributions. Comme parchive, qui n’est plus développé depuis 2003.



Alors oui, c’est libre. Si une faille est découverte et que le packageur en a les compétences (petit rappel, un packageur n’est pas forcément développeur), peut être que le problème sera corrigé par la distribution. Sinon, comme tout un plein d’autres applications qui ne sont plus maintenues upstream, arrivera un jour où plus personne n’aura l’envie ou les compétences de continuer à la packager dans la distribution.



Certains diront que ce n’est pas plus mal.



Mais peut être que même non maintenue et avec une faille, cette application est la seule à répondre à tes besoins. Au moins avec Flatpak, tu seras heureux de pouvoir continuer à l’utiliser, quoi qu’il arrive.



Un des points forts de Windows, il faut le reconnaître, c’est sa capacité à pouvoir continuer à faire tourner des applications qui ont plusieurs dizaines d’années. Parfois, il n’y a pas le choix.



Si tu as lu le manuel, tu peux même mélanger les versions. Dans la pratique, je ne sais pas si c’est très utilisé. Personnellement je ne l’ai pas fait depuis des années. Quand (rarement) je veux un truc bleeding edge sur Debian stable, je compile moi même pour virer un max de dépendances inutiles, je trouve ça plus simple.


Uhm, il y a une phrase sous windows “IE, pour installer Firefox, ça marche”

Sous Gnu/Debian & Ubuntu c’est “FireFox à jour sans te prendre la tête, Snap ça fonctionne(mal)”








Okki a écrit :



Un des points forts de Windows, il faut le reconnaître, c’est sa capacité à pouvoir continuer à faire tourner des applications qui ont plusieurs dizaines d’années. Parfois, il n’y a pas le choix.







Je trouve cette affirmation plutôt fausse, et dans le cas ou l’affirmation est vrai, j’appel pas ça un “point fort” mais une faiblesse.



J’ai du mal a voir Win32 comme une avancé mais plus comme une containte au niveau de la sécurité, des performances etc …









benbart34 a écrit :



J’ai du mal a voir Win32 comme une avancé mais plus comme une containte au niveau de la sécurité, des performances etc …







Je ne prends pas Win32 comme exemple à suivre. On doit pouvoir, nous aussi, garantir une compatibilité dans le temps, mais de façon plus propre, plus sûre et mieux pensée.



Dans un monde idéal, il y aurait des logiciels libres, bien maintenus, pour couvrir absolument tous les besoins possibles et imaginables. Malheureusement, ça n’arrivera jamais.



Un logiciel, ça vie, ça meurt. Quand c’est libre, parfois c’est repris, parfois non.



Du temps de What.cd (autrefois le plus grand tracker P2P musical), j’avais un pote linuxien qui rippai des CD audio pour les partager. La plateforme avait des règles particulièrement strictes. Il fallait que les rips soient parfaits. Et pour pouvoir le prouver, il fallait l’accompagner d’un fichier log fourni par l’application.



Alors oui, des applications de rip de CD audio, on en trouve plein. Mais avec contrôle fin de la correction d’erreur et création d’un journal final qui indiquait si oui ou non le rip contenait des échantillons erronés, s’il y avait eu correction d’erreurs… sous Linux, on avait trouvé que RubyRipper, dont le développeur arrêta son développement début 2014, après s’être pris un abonnement Spotify et ne plus voir d’intérêt au rip de CD.



Assez rapidement, il y a eu des problèmes de dépendances non mises à jour, et je vois que l’application a disparu de la plupart des distributions (Debian, Ubuntu, Fedora…)



Je vois que par la suite elle a eu droit à un fork, mais qui ne semble plus maintenu depuis deux ans. À voir si ça tourne mieux. De son côté, le pote est reparti sur une application Windows…



Et des petits logiciels comme ça, qui ne visent qu’un marché de niche, il doit y en avoir une tétra-chiée. Sur GitHub, on en trouve à la pelle, qui ne sont pas disponibles dans les distributions Linux (à l’exception peut être de AUR, côté Arch Linux).



Avec un paquet Flatpak, ça pourrait tourner sur toutes les distributions, tout en garantissant son fonctionnement sur la durée.



La dessus, je te rejoins. Il est naïf de penser que les logiciels sont maintenus ad vitam aeternam.

Le nombre de logiciels qui ne sont plus du tout développé est énorme.

Malheureusement, un peu comme pour l’évolution des espèces, on à une vue sur les succès, pas sur les échecs.



Bien souvent, des petits logiciels, comme tu le dit de niche, sont développé par 1 gars sur son temps libre. Le jour où ils décident d’arrêter, le nombre d’utilisateur qui sont prêt et capable d’assumer le flambeau pour reprendre le développement est vite réduit. Si le mec a arrêté, c’est qu’il y a peut être une raison, et entre reprendre un truc, et le garder sur les rails à bout de bras, ça peut être très vite rédhibitoire. On se retrouve du coup avec parfois des fork, et souvent ses fork sont aussi très vite abandonné.



J’ai souvenir d’un projet “moyen” de lecteur audio basé sur le moteur de firefox : songbird. Le logiciel n’a pas autant décollé que prévu, même si Philips l’avait ajouté dans ses baladeurs MP3, le projet a été totalement abandonné en 2013, et le fork (Nightingale) lui s’est arrêté en 2014. Même la doc Ubuntu dit que c’est mort pour l’installer.


Merci pour la qualité de ta réponse.



Je pense que t’as plutôt bien résumé la situation.

Et oui, en effet, l’exemple Win32, c’est touchy de ma part.

&nbsp;

J’ai pas vraiment grand choses à ajouté au sujet.

En effet le libre a ses limites,

D’ailleurs c’est la gestion des dépendances qui pose problèmes généralement.



Dans la pratique j’avoue que ce genre de paquet est plutôt interessent.

D’ailleurs, j’utilise Snapd ( malheureusement )

Cependant mon ethique, m’irrite le CLUFF.

L’aspet Linux Monilithique m’irrite le systemd, snapd et autres

L’aspet JeSaisPasConf’ m’irrite la compréhension de se que je fait.

&nbsp;

Sans compter que la configuration de ce genre de paquet est largement complexifié et exotique je trouve. ( ou que pour snapd peut-être. )



En effet, je comprend la volonté de pouvoir facilement lancer une application depuis le maximum de distrib’,

Mais ça se fait non sans mal, et au prix d’une “Oppression” du Snapd omnipresent, forcent dans la pratique, le maximum de developpeurs à migrer vers ce genre d’outils.

MAIS, dans ton cas de RIP CD, ça aurait vraiment aidé !

&nbsp;

C’est jamais facile ce genre de question, et l’ethique, c’est personnel, donc j’irai pas plus loin sur le sujet,

sachant que sur le coups, j’ai fait le choix de virer le maximum de logiciel proprietaire.

Je pense pas qu’on est les même motivations ( sans “jugement” ) sur le sujet, c’est plutôt cohérent

que nos avis sois un peu divergent..

&nbsp;


Si snapd et la politique de Canonical te donnent des boutons, c’est peut être le moment de tester d’autres distributions (Fedora, Manjaro…) <img data-src=" />


hé hé, un collègue me motive à passer sur NixOS, la distib’ la moins overkill ! <img data-src=" />

Actuellement sous GNU/debian, mais j’ai bien aimé Fedora.


Perso je ne suis pas friand de cette approche pour les programmes du quotidien… Quand je vois que désormais le moindre logiciel fait 15 tonnes parce qu’il est développé en langage Web, utilise le moteur de Chromium, et que chacun se sent obligé d’installer SON runtime pour la quinzième fois, j’ai l’impression qu’il y a un échec quelque part.



(le RPM de Visualcode Studio fait 89Mo, sérieusement ! Le setup Windows de Notepad++ fait 4Mo !!)



En fait j’ai l’impression qu’il y a une forte divergence d’opinion entre le hardware dont on mutualise et rationalise le plus possible les ressources pour ne pas avoir de puissance inexploitée. Et derrière le software qui a pris du bide pour des mauvaises raisons.



Perso j’adore la containerisation et son orchestration qui va avec (et l’approche aussi des packages présentés dans l’article).

J’adore les briques de déploiement qui permettent de monter from scratch tout un environnement en quelques minutes (c’est mon métier en même temps de les concevoir… <img data-src=" /> ). Mais j’aime pas lorsque les technos qui le permettent sont utilisées à mauvais escient, par paresse, ou parce que le décideur ne voit pas plus loin que le bout de son projet.



J’ai encore en tête une boîte de dev qui livre son appli avec une image Docker de Tomcat et le WAR à côté parce que le client a demandé que ce soit du Docker. Pour faire du Docker. Parce qu’ils ont demandé à faire du Docker.

Docker avait zéro intérêt dans l’histoire car sous exploité, l’image Tomcat n’était jamais mise à jour, et le Linux qui l’hébergeait ne faisait que ça. Mais ils ont fait du Docker, GG.