Généralités système Linux

snap : les commandes essentielles

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

Introduction



Snap est un système de gestion de paquets et de déploiement d'applications développé par Canonical, la société derrière Ubuntu. Il permet de créer, distribuer et gérer des applications conteneurisées sur divers systèmes d'exploitation Linux. Les snaps, incluent toutes les dépendances nécessaires pour fonctionner.

Le logiciel Kdenlive sera utilisé dans cet article car il est simple et est représentatif de la plupart des applications disponibles (Dépend de Qt et KDE, Possède des traductions)


Concepts de base



Un Snap est un paquet applicatif autonome contenant l'application elle-même ainsi que toutes ses dépendances, rendant l'application portable et facile à installer sur n'importe quel système compatible Snap. Les snaps sont isolés des autres paquets du système, ce qui réduit les conflits de dépendances.

Snapd est le démon qui gère les snaps sur un système. Il est responsable de l'installation, de la mise à jour et de la suppression des snaps, ainsi que de la gestion des permissions et des connexions entre les snaps et le système hôte.

Le Snap Store est le dépôt centralisé où les snaps sont publiés et disponibles pour les utilisateurs. Il permet aux développeurs de distribuer facilement leurs applications et de gérer les versions et les mises à jour.


Utiliser snap



Les dépôts



Par défaut, Snap utilise le Snap Store comme dépôt principal. Actuellement, Snap ne supporte pas directement l'ajout de dépôts tiers comme le font d'autres gestionnaires de paquets (APT, DNF, FLATPAK, etc.). Cependant, les développeurs peuvent créer leurs propres stores privés pour la distribution interne de snaps.

Pour les entreprises ou les organisations souhaitant utiliser des dépôts privés, Canonical offre des solutions professionnelles permettant de configurer et de gérer des Snap Stores privés. Cela nécessite une configuration avancée et des services supplémentaires fournis par Canonical. Ce n'est pas traité ici.

Il n'y a donc rien de particulier à faire contrairement aux flatpak.


Chercher en ligne des snap



Pour rechercher un snap, en fonction de son nom ou de son résumé :
Code BASH :
snap find mot_clé


Exemple avec Kdenlive :
Code BASH :
snap find kdenlive


Code TEXT :
Nom       Version  Auteur  Notes  Résumé
kdenlive  23.08.4  kde✓    -      Video Editor



Des infos sur les snap



Il est possible d'avoir des informations détaillées sur un paquet snap, qu'il soit installé ou non. Pour cela :

Code BASH :
snap info mot_clé


Exemple avec Kdenlive :
Code BASH :
snap info kdenlive


Code TEXT :
name:      kdenlive
summary:   Video Editor
publisher: KDE✓
store-url: https://snapcraft.io/kdenlive
contact:   https://bugs.kde.org/enter_bug.cgi?product=neon&component=Snaps
license:   unset
description: |
  Kdenlive is a non linear video editor. It is based on the MLT framework and accepts many audio and
  video formats, allows you to add effects, transitions and render into the format of your choice.
 
  Features:
 
  - Intuitive multitrack interface.
  - Many effects and transitions.
  - Color scopes
commands:
  - kdenlive
  - kdenlive.pip
snap-id:      VJV60ZSgXvOHQRwhT4RLdnKgp1C0qg6f
tracking:     latest/stable
refresh-date: aujourd'hui à 16h31, heure des Rocheuses
channels:
  latest/stable:    23.08.4 2023-12-10 (105) 459MB -
  latest/candidate: 23.08.5 2024-02-17 (107) 474MB -
  latest/beta:      ↑                              
  latest/edge:      ↑                              
installed:          23.08.4            (105) 459MB -



Installer des snap



Pour installer un snap, on le fera avec son nom (droits root nécessaires) :
Code BASH :
snap install le_paquet


Exemple avec kdenlive :
Code BASH :
snap install kdenlive



Lancer des snap



Il est possible de lancer des snaps une fois installés depuis l'interface graphique. Les applications s'affichent dans les menus classiques.
Cependant, on pourra lancer des applications snap depuis le terminal moyennant la commande suivante :
Code BASH :
snap run le_paquet


Exemple avec kdenlive :
Code BASH :
snap run kdenlive


Il est possible de lancer une application en ligne de commande avec le nom de l'exécutable.
Cependant, attention à la confusion si le logiciel est installé "classiquement" et sous forme de snap !
Code :
adrien@ubuntu2204:~$ snap run htop --version
htop 3.3.0
adrien@ubuntu2204:~$ /usr/bin/htop --version
htop 3.0.5
adrien@ubuntu2204:~$ htop --version
htop 3.3.0



Mettre à jour les snap



Pour mettre à jour l'ensemble des snap installés sur le système, on le fera simplement avec la commande (droits root nécessaires) :
Code BASH :
snap refresh


Pour mettre un snap spécifique à jour, on indiquera le nom du paquet concerné (droits root nécessaires) :
Code BASH :
sudo snap refresh le_paquet


Exemple avec kdenlive :
Code BASH :
sudo snap refresh kdenlive



Lister les snap installés



Pour lister les snap installés sur le système, on le fera simplement avec la commande :
Code BASH :
snap list


On aura une liste comme dans cet exemple sur mon système :
Code :
Nom                          Version           Révision  Suivi            Éditeur     Notes
bare                         1.0               5         latest/stable    canonical✓  base
core20                       20240416          2318      latest/stable    canonical✓  base
core22                       20240408          1380      latest/stable    canonical✓  base
firefox                      127.0.2-1         4483      latest/stable/…  mozilla✓    -
gnome-3-38-2004              0+git.efb213a     143       latest/stable/…  canonical✓  -
gnome-42-2204                0+git.510a601     176       latest/stable    canonical✓  -
gtk-common-themes            0.1-81-g442e511   1535      latest/stable/…  canonical✓  -
kdenlive                     23.08.4           105       latest/stable    kde✓        -
kf5-5-111-qt-5-15-11-core22  5.111             7         latest/stable    kde✓        -
snap-store                   41.3-77-g7dc86c8  1113      latest/stable/…  canonical✓  -
snapd                        2.63              21759     latest/stable    canonical✓  snapd
snapd-desktop-integration    0.9               157       latest/stable/…  canonical✓  -



Désinstaller des snap



Pour désinstaller un snap, on le fera avec la commande suivante (droit root nécessaires) :
Code BASH :
sudo snap remove le_paquet


Exemple avec kdenlive :
Code BASH :
sudo snap remove kdenlive



Gestion des Branches



A propos des canaux et branches



Snap utilise des canaux pour gérer les versions des snaps.

Pour être très précis, un canal est subdivisé en 3 niveaux : tracks, risk-levels et branches :
- Les tracks permettent aux développeurs de snap de publier plusieurs versions prises en charge de leur application sous le même nom de snap.
- Les risk-levels représentent un compromis potentiel progressif entre la stabilité et les nouvelles fonctionnalités.
- Les branches sont facultatives et contiennent des versions temporaires destinées à faciliter la correction des bogues.
Il n'y a pas de doc en français de snap, je ne me risque pas à traduire le terme "tracks".


Les risk-level disponibles sont :
- stable : La version stable recommandée pour la majorité des utilisateurs. (C'est le risk-level par défaut)
- candidate : Version prête pour la promotion vers stable, destinée aux tests finaux.
- beta : Version en développement avec des fonctionnalités en cours de test.
- edge : Version la plus récente, contenant les modifications les plus récentes et les moins testées.

Voici un exemple pour VLC :
Code :
channels:
  latest/stable:    3.0.20-1-g2617de71b6        2024-03-26 (3777) 336MB -
  latest/candidate: 3.0.20-1-g2617de71b6        2024-03-26 (3777) 336MB -
  latest/beta:      3.0.20-138-g6ceb56b830      2024-05-29 (4130) 336MB -
  latest/edge:      4.0.0-dev-28288-g586bf64e5f 2024-03-28 (4070) 703MB -



Certains logiciels peuvent avoir plusieurs tracks. Par défaut, les snap ont la track latest.

Par exemple, Firefox possède la track par défaut "latest", mais aussi la track "esr".
Voici la représentation au moment de la rédaction de cet article :
Code :
channels:
  latest/stable:    127.0.2-1     2024-06-26 (4483) 281MB -
  latest/candidate: 128.0-2       2024-07-04 (4539) 280MB -
  latest/beta:      128.0b9-1     2024-06-28 (4502) 280MB -
  latest/edge:      129.0a1       2024-07-05 (4542) 300MB -
  esr/stable:       115.12.0esr-1 2024-06-11 (4373) 256MB -
  esr/candidate:    115.13.0esr-3 2024-07-04 (4532) 256MB -
  esr/beta:         ↑                                     
  esr/edge:         ↑                                     
installed:          127.0.2-1                (4483) 281MB -


Installation sur un canal spécifique



Pour installer un snap sur un canal spécifique (stable par défaut), on utilisera la commande suivante (droit root nécessaires) :
Code BASH :
snap install le_paquet --channel=le_canal


Exemple avec VLC sur le canal edge :
Code BASH :
snap install vlc --channel=edge



Migrer un snap installé sur un autre canal



Pour changer un snap existant vers un autre canal on utilisera la commande suivante (droit root nécessaires) :
Code BASH :
snap refresh le_paquet --channel=le_canal


Exemple avec VLC qu'on va migrer sur le canal beta :
Code BASH :
snap refresh vlc --channel=beta


Si on revient à une version plus ancienne d'un logiciel fourni sous forme de snap, la configuration du logiciel installé peut ne pas supporter correctement cette rétrogradation !

Cas de migration de track et risk-level



Dans le cas de Firefox, si on souhaite passer de :
- latest à esr
- de stable à beta

On pourra le faire en 1 commande avec (droit root nécessaires) :
Code BASH :
snap refresh firefox --channel=esr/stable


Cela fonctionne pour l'installation et la migration d'un snap déjà installé.

Informations complémentaires



Si on installe un snap sur le canal beta et qu'on le désinstalle, le réinstaller "sans aucune option" réinstallera la version latest/stable.
Après la désinstallation, l'état des canaux n'est pas conservé dans le système.

Il existe également des raccourcis pour :
Code :
--stable pour --channel=stable
--candidate pour --channel=candidate
--beta pour --channel=beta
--edge pour --channel=edge