AppImage, FlatPak et Snap – Systèmes de virtualisation d’Applications pour GNU/Linux

Ces dernières années, trois différents formats de paquetages indépendants des distributions GNU/Linux ont acquis une très grande popularité

Ces trois conteneurs sont des logiciels empaquetés avec tout ce qui est nécessaire pour les faire fonctionner (incluant toutes leurs dépendances) que l’on installe sous les distributions GNU/Linux pour avoir la toute dernière version de ses applications préférées et/ou des applications non (encore) disponibles dans les dépôts officiels de sa distribution chérie.

De plus, les logiciels installés de cette façon sont (normalement) exécutés dans une sandbox (sécurité par bac à sable). Par contre, le revers de la médaille, est que pour une application donnée, il faudra toujours x fois plus d’espace disque et jusqu’à dix fois plus pour les grosses applications (certaines dépassant allégrement les 2 Go ! !). Il vaut mieux y réfléchir à deux fois pour voir si le jeu en vaut vraiment la chandelle. Quand ce n’est pas vraiment nécessaire, il vaut mieux préférer les applications disponibles dans la Logithèque de sa distribution même si elles sont un peu moins récentes.

Un grand regret est que les 3 acteurs les plus importants ci-dessous n’ont pas réussi à – voulu trouver un accord gagnant-gagnant pour une solution commune et unique pour définir un nouveau standard. Les libristes devront donc gérer ces 3 solutions « Tout-en-Un » (All-in-One) au fil de leurs besoins et distribution(s). Et le choix sera cornélien quand une Application sera disponible aussi bien en AppImage qu’en Flatpak ou qu’en Snap !

♦ Fonctionnement des formats de paquetage indépendants des distributions GNU/Linux

Les formats de paquetage indépendants des distributions regroupent l’Application avec toutes ses dépendances requises pour exécuter le logiciel dans un seul paquet. Cela devrait permettre à un paquet d’être exécuté sur presque tous les systèmes prenant en charge la structure de ce format. Cela diffère des formats de paquets logiciels traditionnels tels que .DEB (Debian, Ubuntu et ses variantes – dérivées, Linux Mint, etc.) et .RPM (Red Hat et Fedora, SUSE et openSUSE, etc.) qui nécessitent l’installation des dépendances d’un paquet logiciel sur le système et sont conçus pour s’exécuter sur un système d’exploitation spécifique. Les développeurs peuvent ainsi créer leur logiciel dans un seul paquet pouvant être exécuté sur la plupart des distributions, au lieu de devoir reconditionner leur logiciel pour cibler des distributions spécifiques.

Comme un développeur va regrouper les paquets logiciels avec toutes ses dépendances incluses, il est également responsable de maintenir les dépendances incluses dans le paquet à jour avec les dernières mises à jour de sécurité. Si un progiciel n’est pas correctement géré par le développeur du logiciel, le progiciel indépendant de la distribution peut poser un risque pour la sécurité du système. Cela contraste également avec les progiciels traditionnels pour lesquels les dépendances sont gérées par les développeurs de la distribution GNU/Linux par l’intermédiaire des référentiels de la distribution.

Comme les paquets indépendants de la distribution incluent leurs dépendances, ils sont généralement beaucoup plus volumineux que leurs homologues traditionnels. La même dépendance peut être incluse dans un certain nombre de paquets indépendants de la distribution, tandis que les paquets traditionnels utilisent tous la même dépendance qui ne doit être installée qu’une seule fois sur le système. Cela peut par contre être un avantage si vous souhaitez pouvoir utiliser différentes versions de logiciels ou certaines bibliothèques, ce qui est plus difficile à obtenir lorsque tous vos logiciels utilisent la même version d’une bibliothèque ou d’un package.

SNAP(PY) / développé par Canonical pour Ubuntu / Magasin officiel SnapCraft

Snapd (le daemon gestionnaire) est installé par défaut sur au moins Ubuntu et ses variantes, et les distributions qui en sont dérivées, mais pas toujours.

Le magasin officiel SnapCraft contient plusieurs milliers de Snaps prêts à l’emploi pour 41 distributions GNU/Linux. À ce jour, c’est sûrement la magasin de système de virtualisation d’Applications le plus fourni et complet.

Les principaux avantages – inconvénients des Snaps sont les suivants :

  • Indépendance des dépendances – toutes les bibliothèques et dépendances sont incluses dans le paquet. Cela permet également d’avoir plusieurs versions du même programme installées dans sa distribution.
  • Sandboxing – les Snaps utilisent un AppArmor modifié pour mettre en bac à sable les applications.
  • Mises à jour par delta – les Snaps devraient également permettre les mises à jour différentielles.
  • L’inconvénient principal des Snaps est que le logiciel ne peut utiliser que les bibliothèques incluses dans son paquet. Cela constitue un risque potentiel pour la sécurité, car l’auteur du paquet doit maintenir toutes les bibliothèques corrigées et à jour.
  • Les Snaps peuvent actuellement s’exécuter au moins sous Ubuntu et ses variantes – dérivées comme Linux Mint, Arch Linux, Fedora, CentOS et Gentoo.
  • Ils sont conçus pour les ordinateurs de bureau, mais aussi les serveurs (cloud) et l’Internet of Things (Internet des objets).

Téléchargement du fichier Snap d’Audovia depuis le magasin SnapCraft puis installation automatique dans Linux MINT 19.1

Audovia (Database application for making Music using JFugue MusicStrings) n’est pas disponible dans la Logithèque de Linux Mint 19.1. J’ai donc installé Snapd v.2.37.4 depuis la Logithèque, puis la dernière version d’Audovia depuis SnapCraft avec la ligne de commande suivante dans un Terminal :

sudo snap install audovia

Tout s’est bien déroulé et Audovia v.3.7.1.2 tourne sans aucun souci dans ma distribution avec mes SoundFonts SF2.

FLATPAK / développé par Red Hat pour Fedora / Magasin officiel FlatHub

Flatpak (le daemon gestionnaire) est installé par défaut sur au moins Fedora et aussi Linux Mint (pourtant basée sur Ubuntu !).

Le magasin officiel FlatHub contient plus de cinq cents Flatpaks prêts à l’emploi pour plusieurs dizaines de distributions GNU/Linux. À ce jour, ce magasin de système de virtualisation d’Applications n’est pas aussi complet que SnapCraft.

Les Flatpaks présentent les mêmes avantages que les Snaps, cependant :

  • Ils utilisent Namespaces au lieu d’AppArmour pour le sandboxing.
  • La principale différence est que Flatpak peut utiliser à la fois les bibliothèques incluses dans le paquet et les bibliothèques partagées d’un autre Flatpak.
  • Le logiciel Flatpak est actuellement disponible au moins sur Arch Linux, Debian, Fedora, Linux Mint, Mageia, Solus et Ubuntu.
  • Il se concentre uniquement sur les ordinateurs de bureau (avec une interface graphique).

Téléchargement du fichier Flatpak de LibreOffice depuis la Logithèque (magasin FlatHub) de Linux MINT 19.1 puis installation automatique

LibreOffice (suite bureautique complète et multi-plateforme) n’est disponible qu’en version 6.0.7 dans la Logithèque de Linux Mint 19.1. Pour pleinement profiter des nouvelles et intéressantes fonctionnalités de ce programme, j’ai installé LibreOffice v.6.2.2.2 depuis la Logithèque mais en utilisant la Catégorie Flatpak.

Gestionnaire de logiciels de Linux MINT 19.1 listant les installations de LibreOffice (classiques + Flatpak)

Tout s’est bien déroulé et mon nouveau LibreOffice v.6.2 (947 Mo d’espace disque occupé) tourne sans aucun souci dans ma distribution Linux Mint 19.1 en parallèle de LibreOffice v.6.0 installée d’une manière classique. Comme nous pouvons le constater, dans le Menu principal de Linux Mint, il y a maintenant deux entrées pour chaque module de cette suite bureautique.

Éditeur de menu de Linux MINT 19.1 Cinnamon listant les deux installations de LibreOffice (classique + Flatpak)

APPIMAGE / développé indépendamment par Simon Peter / Pas de magasin officiel

AppImage est différent de Flatpak et de Snap. N’ayant pas besoin de cette couche logicielle (le daemon gestionnaire), les distributions GNU/Linux vont pouvoir gérer directement ce format d’empaquetage. Une AppImage est essentiellement une image disque à montage automatique qui contient une application et tout ce dont l’application a besoin pour s’exécuter sur les systèmes d’exploitation cibles.

AppImage n’a pas de magasin officiel. À ce jour, vous devez télécharger les AppImages directement depuis le site web de leurs développeurs pour les utiliser sur votre système GNU/Linux. De ce fait, il est difficile d’estimer le nombre réel d’Applications disponibles pour les utilisateurs finaux.
Il existe bien un magasin non-officiel AppImageHub qui monte en puissance avec plus de quatre cents AppImages prêtes à l’emploi, mais il faut l’utiliser avec une certaine prudence !

AppImage en quelques points-clés :

  • Le format AppImage est populaire parmi les utilisateurs en raison de sa simplicité : téléchargez une application, rendez-la exécutable et lancez-la, c’est tout. Il n’y a pas besoin de faire une installation ni d’utiliser un gestionnaire spécifique comme pour les Snaps ou les Flatpaks !
  • Et populaire aussi chez les développeurs : un fichier GNU/Linux qui s’exécute sur toutes les distributions (ou presque). Aucune bibliothèque ou préférence de votre système d’exploitation n’est affectée. Elle peut aussi tourner dans un bac à sable.
  • Comme dans les Snaps ou Flatpaks, le paquet AppImage inclut toutes les bibliothèques nécessaires pour exécuter le programme. Les programmes AppImage ne sont pas en bac à sable et ne nécessitent pas de droits « root » (administrateur) pour s’exécuter.
  • Selon le site web du projet, les AppImages devraient fonctionner au moins sous les distributions Arch Linux et dérivées, Centos, Debian et ses dérivées, Fedora, SUSE et openSUSE, Red Hat Linux, et Ubuntu et ses variantes – dérivées comme Linux Mint.

Téléchargement du fichier AppImage directement depuis le site de VMPK puis installation manuelle dans Linux MINT 19.1

VMPK (Virtual MIDI Piano Keyboard) n’est disponible qu’en version 0.4.0-3 dans la Logithèque de Linux Mint 19.1. Pour pleinement profiter des nouvelles et très intéressantes fonctionnalités de ce programme, j’ai téléchargé VMPK depuis le site de son développeur dans sa dernière version 0.7.1 au format AppImage, puis je l’ai « installé » en rendant le fichier exécutable et en créant un lanceur pour celui-ci dans le Menu principal de Linux Mint 19.1.
Tout s’est bien déroulé, VMPK v.0.7.1 tourne sans aucun souci dans ma distribution et s’interface correctement avec mes logiciels de MAO (musique assistée par ordinateur), eux installés d’une manière classique.

♦ Comparaison AppImage vs Snap vs Flatpak

Chacun des trois formats de paquet (package) que nous avons examinés dans cet article a ses avantages et ses inconvénients. À mon avis, chacun de ces formats de paquet doit encore être amélioré pour devenir réellement une option viable comme format de paquet principal pour les distributions GNU/Linux. L’avantage est que ces formats de package peuvent coexister, de sorte que l’utilisateur final n’est pas obligé de choisir un seul format de package, il peut utiliser sans conflit des logiciels provenant de ces différents formats.

Voici une très-très longue comparaison tabulaire (en anglais) des fonctionnalités entre AppImage, Snap et Flatpak (source : Wiki AppImage sur GitHub de mai 2018).

Comparaison entre les 3 solutions AppImage, Snap et Flatpak