
Ubuntu propose les paquets Snap, qui est une solution propriétaire, alors que l’équivalent open-source est Flatpak. L’idée de ces deux projets est de simplifier la distribution des applications (dépendances, virtualisation), c’est louable.
Par contre, les deux technologies étant très proches, le fait que Canonical ait choisi de développer sa propre solution paraît tout de même aller à l’encontre du bon sens, même si elle y a sans doute un intérêt économique pour ses entités ‘Server’ et ‘IoT’.
L’inconvénient de ces packages est qu’ils sont gourmands en ressources, puisqu’ils embarquent toutes leurs dépendances. Comme les machines sont souvent surdimensionnées par rapport à ce que l’on en fait, cela passe inaperçu. L’ancien système apt/deb (sous Debian/Ubuntu) reste quand même le plus efficace, mais implique un certain retard dans la disponibilité des applications, car plus complexe à gérer.
J’avais déjà pensé à supprimer le système des snaps sur mon Ubuntu 20.04, sans franchir le pas avec l’idée de garder un système “standard” et “propre”. Mais à l’usage, le catalogue Flatpak apparaît être plus vaste que celui de Snap, ce qui est somme toute logique (open source vs proprietary software).
Une application m’a fait basculer : il s’agit du client Nextcloud, une application tout de même assez standard, et largement utilisée. La version disponible sur Ubuntu est la 2.6 (qui plantait régulièrement). Et pas de package Snap de fourni, il faut se tourner vers un PPA pour avoir la version 3. Par contre un package Flatpak à jour était disponible : cela a achevé de me décider à faire la bascule.
Tant qu’à n’en garder qu’un, autant garder le meilleur… Et donc bye-bye Snap, welcome Flatpak.
Snaps, Flatpak et les autres
Après avoir lu quelques pages sur le sujet (notamment celle-là sur linux-fr), les discussions vont bon train sur les différents systèmes disponibles : deb et rpm (les “historiques”), et les Snap, Flatpak, ou AppImage (qui intègrent tout l’environnement nécessaire)… et encore d’autres comme pip ou nix ! Aucun n’est parfait, et l’une des problématiques principales qui revient le plus est la confiance : ces packages contenant tout ce qu’il faut pour tourner, que contiennent-ils vraiment ? d’où viennent-ils et qui les a fait ?
Un sondage montre que la bonne vieille méthode est quand même la préférée :

Voir cette page pour une comparaison entre Snaps, Flatpak et AppImage d’où ce sondage est extrait.
En ce qui me concerne, l’intégration au système est aussi primordiale : je garde en tête l’application Puddletag (éditeur de fichiers audio) qui avait disparu d’Ubuntu 20.04, et que j’ai installé au format AppImage dans un premier temps (voir cet article). Je n’avais plus la possibilité de le lancer avec un click droit sur un fichier audio… pas d’intégration au shell, et donc très embêtant.
Suppression des Snaps
Parmi les inconvénients de Snap pour un utilisateur lambda, le plus évident est le temps de chargement de Gnome Software, le magasin d’application. Il a été modifié par Ubuntu pour inclure les packages Snap, et se synchronise à chaque démarrage, ce qui prend du temps et se révèle assez désagréable à l’usage.
Pour supprimer l’ensemble du système Snap, j’ai suivi deux tutos, celui-ci et celui-là (ils se complètent).
On commence par afficher tous les snaps installés sur son système :
pascal$ snap list
Nom Version Révision Suivi Éditeur Notes
bpytop 1.0.50 186 latest/stable kz6fittycent -
canonical-livepatch 9.5.5 95 latest/stable canonical✓ -
chromium 87.0.4280.88 1421 latest/stable canonical✓ -
core 16-2.48 10444 latest/stable canonical✓ core
core18 20200929 1932 latest/stable canonical✓ base
core20 20 634 latest/stable canonical✓ base
discord 0.0.13 119 latest/stable snapcrafters -
gnome-3-28-1804 3.28.0-19-g98f9e67.98f9e67 145 latest/stable canonical✓ -
gnome-3-34-1804 0+git.3556cb3 60 latest/stable/… canonical✓ -
gtk-common-themes 0.1-50-gf7627e4 1514 latest/stable/… canonical✓ -
shotcut 20.11.28 123 latest/stable meltytech✓ classic
signal-desktop 1.38.2 339 latest/stable snapcrafters -
snap-store 3.38.0-55-geb45541 498 latest/stable/… canonical✓ -
snapd 2.48.1 10492 latest/stable canonical✓ snapd
Et on commence par supprimer toutes les applications :
sudo snap remove bpytop
sudo snap remove discord
sudo snap remove shotcut
sudo snap remove signal-desktop
sudo snap remove chromium
Ensuite on désinstalle le reste en respectant l’ordre (pas sûr que cela soit vraiment important) :
sudo apt remove canonicval-livepatch
sudo snap remove snap-store
sudo snap remove gtk-common-themes
sudo snap remove gnome-3-28-1804
sudo snap remove gnome-3-34-1804
sudo snap remove core18
sudo snap remove core20
sudo snap remove snapd
Pour supprimer le package “core”, j’avais un message d’erreur, il a fallu le démonter auparavant :
sudo umount /snap/core/10444
sudo snap remove core
Puis on procède au nettoyage, sans oublier le plugin de l’outil graphique d’installation de logiciels :
sudo apt autoremove --purge snapd gnome-software-plugin-snap
rm -rf ~/snap
sudo rm -rf /snap
sudo rm -rf /var/snap
sudo rm -rf /var/lib/snapd
Sans oublier de mettre le package en HOLD afin d’éviter une réinstallation au cours d’une mise à jour, on ne sait jamais :
sudo apt-mark hold snapd
À ce stade, j’ai quand même redémarré pour vérifier que tout se passait bien : ce fut le cas.
Ajout de Flatpak
Pour installer Flatpak, j’ai suivi ce tuto. On installe d’abord flatpak comme un programme, ainsi que le plugin pour l’interface graphique (gnome-software):
sudo apt install flatpak
sudo apt install gnome-software-plugin-flatpak
Puis on installe le Flathub repository, le magasin d’applications le plus complet :
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Voilà, il ne reste plus qu’à réinstaller les applications que j’avais déjà, plus Nextcloud client bien entendu ! On peut utiliser l’interface graphique de Gnome Software, ou chercher et installer en ligne de commande :
pascal$ flatpak search nextcloud
Name Description Application ID Version Branch Remotes
Nextcloud… Nextcloud desktop synchroni… com.nextcloud 3.0.2 stable flathub
QOwnNotes Plain-text file notepad wit… …nnotes.QOwnNotes 20.9.11 stable flathub
Kontact Gère vos courriels, calendr… org.kde.kontact 19.04.1 stable flathub
OpenTodoL… Todo list and note taking a… …dev.OpenTodoList 3.28.0 stable flathub
[~]
Que l’on installe ensuite par son nom ou son “Application ID” :
flatpak install com.nextcloud
Quelques commandes flatpak
On peut lister les applications flatpak installées :
pascal$ flatpak list --app
Name Application ID Version Branch Installation
Nextcloud desktop sync client com.nextcloud.desktopclient.nextcloud 3.0.2 stable system
Shotcut org.shotcut.Shotcut 20.11.28 stable system
Signal Desktop org.signal.Signal 1.38.2 stable system
Pour retirer ce qui n’est plus utilisé :
flatpak uninstall unused
Pour réparer des inconsistances avec l’installation locale :
flatpak repair
Pour remettre à zéro les permissions sur le portail d’une application :
flatpak permission-reset com.nextcloud.desktopclient.nextcloud
Enfin pour afficher l’historique des changements apportés à flatpak (voir les logs en fait) :
flatpak history
pip pour bpytop
Un autre système pour installer les applications mentionnéé plus haut est pip. D’une extrême simplicité, il a le problème du manque de contrôle. J’ai du l’utiliser pour bpytop (un top amélioré, sous python), car il n’y avait pas de flatpak disponible. J’ai donc procédé comme indiqué sur la page Github du logiciel (en lui faisant confiance) :
sudo apt install python3-pip
pip3 install bpytop --upgrade
Conclusion
Voilà, tout a l’air de fonctionner correctement, et je n’ai plus de snaps sur le système. À voir comment cela se passerait à la prochaine mise à jour, si je décidais d’installer le 20.10 par exemple…
Mais à moins d’une nouvelle fonctionnalité particulièrement intéressante (ce qui se fait rare, le système étant tout de même très complet et mature), je pense attendre la prochaine LTS, à savoir la 22.04, et faire dans ce cas une installation plutôt qu’une mise à jour. Et supprimer à nouveau les snaps si je suis satisfait de cette nouvelle situation.