AppImage, Flatpak, Snap : quel gestionnaire de paquet choisir ?
Classé dans : Ubuntu - Mots clés : paquet gestionnaireVous avez entendu parler des gestionnaires de paquets multi-distribtions AppImage, Flatpak et Snap ... mais vous ne savez pas lequel choisir : je vais vous donner un peu plus d'informations pour faire votre choix.
Qu'est-ce que c'est ?
Sur Linux, historiquement pour installer des logiciels, on utilise le gestionnaire de paquets de la distribution : apt
sur Debian et ses dérivés (dont Ubuntu), dnf
(anciennement yum
) sur Red Hat et ses dérivés, pacman
sur Arch et ses dérivés ... Les paquets pour ces gestionnaires sont construits pour fonctionner sur leurs distributions respectives en fonction de leurs caractéristiques (nom des paquets liés, répertoires ...).
Les gestionnaires de paquets multi-distributions eux installent un logiciel quelque soit la distribution sous-jacente. En règle générale, ils fonctionnent dans un environnement séparé et ne dépendent donc pas de la distribution installée, cela implique "d'embarquer" toutes les dépendances.
Ces gestionnaires de paquets résolvent 2 soucis :
- devoir créer un paquet pour chaque distribution sur laquelle on veut utiliser le logiciel que l'on déploie
- la version des librairies utilisées par le logiciel
Historique
AppImage
Le plus ancien : son précédecesseur (Klik) a été créé en 2004 par Simon Peter. En 2011, Simon a créé un nouveau projet PortableLinuxApps qui a été utilisé par des portails proposant des logiciels pour Linux. Puis il est devenu AppImage en 2013. Il est compatible avec la plupart des distributions : Ubuntu, Debian, openSUSE, CentOS, Fedora ...
Snap(py)
Les snaps ont été créé pour le défunt système Ubuntu Touch. Ils ont été ensuite repris pour Ubuntu, et sont disponibles depuis la 16.04. C'est devenu un moyen "standard" de déployer certains paquets (plutôt que apt) pour cette distribution. De nombreuses autres distributions supportent les snaps.
Flatpak
Après différents travaux initiaux de Lennart Poettering (dès 2004) et Alexander Larsson (en 2015) sur xdg-app, Flatpack est apparu en 2016 supporté par Red Hat, Endless Computers et Collabora.
Comportements
AppImage
Contrairement, aux 2 autres, aucun appstore ne lui est associé. Son principe est de fonctionner à partir d'un fichier unique. Cela permet de pouvoir exécuter plusieurs versions d'un même logiciel sur une même machine : il suffit d'avoir le fichier de chaque version.
Le "package" contient toutes les librairies nécessaires au fonctionnement du logiciel et que le développeur de l'application pensent qu'elles ne seront pas disponibles sur toutes les distributions (ou pas dans la bonne version). Il n'y a pas d'installation : on exécute le fichier AppImage directement, l'utilisation est très simple. Il n'y a pas besoin de droits d'accès root et l'application est donc portable.
Snap(py)
Le Snap Store permet d'accéder aux logiciels que vous désirez. Les snaps incluent toutes les librairies nécessaires au fonctionnement du logiciel. La mise à jour d'une version d'un snap, se fait par le delta nécessaire. Donc, on ne peut avoir qu'une seule version sur une machine donnée. Si on veut une autre version, il faut l'installer ou revenir en arrière. Les snaps sont sand-boxés : 3 niveaux sont proposés classic, strict et devmode.
Les snaps sont assez critiqués par les développeurs en premier lieu car il leur est demandé de signer un CLA, et par le fait que c'est un format principalement géré par Canonical (la société gérant Ubuntu). Mais aussi par la sandbox qui n'est pas complètement sécurisé et car les fichiers sont très gros (il peut être judicieux de purger les anciennes versions).
Flatpak
Flathub est le dépôt officiel des paquets Flatpak. L'intégration avec les environnements de bureau (Gnome et KDE) fonctionnent bien. Les logiciels installés par Flatpak sont conservés après mise à jour du système. La sandbox utilisée (Bubblewrap) est efficace et isole vraiment l'application du système sous-jacent. On peut utiliser plusieurs dépôts Flatpak. Flatpak également été abondament critiqué.
Mon choix
Parfois, il n'y a pas le choix : par exemple, l'excellent logiciel scrcpy n'a qu'une version en snap (en plus de la version packagée ... mais qui en 2020 est déjà 4 versions en retard).
Sinon, je préfère Appimage qui propose un seul fichier qui fonctionne et est (en règle générale) plus léger. Appimage a l'inconvénient de ne pas forcément proposer une installation finalisée (pas d'icône et pas d'ajout dans le menu) ... mais c'est possible pour des développeurs qui travaillent correctement (cf. Joplin). Flatpak a l'inconvénient de ne fonctionner qu'avec une interface graphique mais ce n'est pas vraiment un inconvénient pour moi, car ici je parle de gérer une station graphique. Pour gérer des serveurs, je vais éviter autant que ce peut d'utiliser ces systèmes et je vais rester sur les versions packagées (et testées) !
Pour aller plus loin, vous pouvez lire cet article (en Anglais).
Bonne installation !