Ubuntu 20.04 : passage de Snap à Flatpak

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 :

75 votes seulement, à prendre avec précautions !

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

Ou pour tout avoir taper simplement :

pascal$ flatpak list

Pour obtenir des infos sur une application :

pascal$ flatpak info com.nextcloud.desktopclient.nextcloud

Nextcloud desktop sync client - Nextcloud desktop synchronization client

          ID: com.nextcloud.desktopclient.nextcloud
         Ref: app/com.nextcloud.desktopclient.nextcloud/x86_64/stable
        Arch: x86_64
      Branch: stable
     Version: 3.2.0
     License: GPL-2.0+
      Origin: flathub
  Collection: org.flathub.Stable
Installation: system
   Installed: 165,4 MB
     Runtime: org.kde.Platform/x86_64/5.15
         Sdk: org.kde.Sdk/x86_64/5.15

      Commit: d0c12edc7730942ced6eb43727f6203273d30c161fe97ac4042e6706b9d516ff
      Parent: 76893524b0799423d203de19dceded7f775dde519d04869b084b6902e0c4eefb
     Subject: Update desktop.git to 3.2.0 (b07a228e)
        Date: 2021-04-13 10:39:01 +0000

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *