Table des matières
Packages
Les packages managers : la solution historique sous linux
Dans un système linux, on installe habituellement ses applications depuis le package manager (apt
pour debian, ''pacman'' pour archlinux, yum
ou dnf
pour l'univers RedHat).
L'intérêt principal est de pouvoir installer automatiquement les dépendances, et mutualiser ces dépendances entre plusieurs applications. Un autre aspect intéressant est que les dépôts sont gérés par les responsables de la distribution linux, et qu'on peut souvent leur faire confiance, on parle de source fiable. Souvent, les paquets sont testés avant d'être livrés, on peut trouver des systèmes particulièrement cohérents, homogènes et stables comme debian.
L'inconvénient est qu'il faut attendre que les mainteneurs des dépôts intègrent la dernière version d'une application avant de pouvoir l'installer, et parfois cela peut prendre du temps, surtout sur des distributions versionnées, fixed-release, comme debian. Il est également possible que l'application, trop confidentielle, ne soit jamais publiée dans les dépôts. Dans certains cas, il peut y avoir des conflits entre les versions de dépendances de certaines applications.
Pour répondre à ces inconvénients, publier des applications selon le modèle windows est arrivé sur Linux : les dépendances sont intégrées dans l'application. C'est le modèle inverse, et les inconvénients deviennent des avantages, et vice et versa. Citons dans les avantages le fait d'être indépendant de la distribution Linux. Et parmi les inconvénients : la taille des applications qui enfle sérieusement.
Ce mode de déploiement facilite la vie des développeurs, qui n'ont pas à gérer les questions de dépendances particulières à chaque distribution Linux.
Plusieurs solutions logicielles d'empactage, chacune avec ses propres dépôts, sont arrivés, citons : Flatpak, Snap, AppImage.
Flatpak : La solution opensource made in RedHat
- Système décentralisé, plusieurs “store” existent
- Les applis s'executent de base dans un bac à sable, donc plus sécurisé
- Flatpak installé de base sur des distributions Linux modernes (par exemple, dispo dans les dépôts officiels d'Archlinux, ce qui n'est pas le cas de Snap)
- Peu embarquer toutes les dépendances, ou mise en commun de runtimes et de bibliothèques (dépendances) entre applications Flatpak et le système hôte
- Flatpak dédié à un linux avec interface graphique, pas utilisable sur serveur headless (à vérifier, 2 sources concordantes)
- à la base proposé par RedHat (?)
- root pour l'installation
- Peu d'application dispo (car le hub était limité au début aux applications opensource uniquement)
Snap : La solution Ubuntu
- Développé par Canonical, l'éditeur d'Ubuntu.
- Un package contient toutes les dépendances, il est donc sûr de fonctionner.
- Un Snap store centralise les paquets.
- On peut avoir plusieurs versions de la même application.
- Système adopté par plusieurs grandes distributions (liste à vérifier) : Ubuntu, Manjaro, Linux Mint, Debian, Kali, RHEL.
- Système de mise à jour automatique, sans intervention de l'utilisateur ??
- Fourni aussi un environnement bac à sable pour l'execution des applications (à vérifier)
- Fourni sous une licence dédiée, très liée au SnapStore et à Canonical…
- Root pour l'installation
- Quantité d'application dispo importante
AppImage : Le mono-fichier
- Un fichier par application.
- Pas d'installation au sens classique du terme, ne nécessite pas d'autorisations particulières type sudo/root.
- Le plus similaire à un .exe de windows.
- A la base, pas de store, les AppImages sont téléchargeables partout comme de simples fichiers.. Mais certains existent : AppHub centralise les pacakges
- Pas de sandbox au début, dispo maintenant
Comparaison
Il n'y a pas de meilleur, ça dépend des critères :
- App Number. The Snapcraft online store wins if the number of available apps is the most critical factor.
- App Speed. AppImage is the fastest one of the three regarding app startup, speed, and performance. It is the ideal solution for a performant experience.
- App Integration. Some package formats integrate better on specific distributions. For example, Snaps integrate better with Ubuntu, Arch Linux, and CentOS, while Flatpak integrates seamlessly with Fedora, Linux Mint, or Debian. AppImages work great on Arch Linux, CentOS, Debian, OpenSUSE, Red Hat Linux, and Fedora.
- App Control. Flatpaks offer more control to developers compared to AppImage or Snaps.
- Portability. AppImage packages are top-notch when it comes to portability. Snaps may have dependencies in other Snap apps, and Flatpaks can share libraries with another Flatpak. AppImages use only the resources from the package itself.
- App Updates. Snaps and Flatpaks use the repositories to update apps automatically, while AppImage uses the AppImageUpdate tool. Additionally, AppImage doesn't get as many updates as the other two package formats.
- Usability. Flatpak and AppImage packages are designed to install and update applications. While Snaps have the same purpose, their usability extends to installing anything. For example, developers are now working on putting the entire Linux printing stack in a single Snap.