Les paquets Snap

Fonctionnement des paquets Snap

Fonctionnement des paquets Snap

Les paquets Snap sont un format de packaging logiciel développé par Canonical (la société derrière Ubuntu) qui offre une nouvelle approche pour la distribution et l’exécution de logiciels sur Linux.

Principes fondamentaux

  1. Autonomie : Chaque paquet Snap est autonome et contient l’application ainsi que toutes ses dépendances nécessaires à son fonctionnement.
  2. Isolation : Les applications Snap s’exécutent dans un environnement isolé (sandbox) avec un accès limité au système pour améliorer la sécurité.
  3. Mise à jour automatique : Les Snaps se mettent à jour automatiquement en arrière-plan, garantissant l’exécution des dernières versions.
  4. Universal : Un même Snap fonctionne sur différentes distributions Linux, simplifiiant le déploiement pour les développeurs.

Architecture technique

Structure d’un Snap

  • Application : Le logiciel principal lui-même
  • Bibliothèques/Runtime : Toutes les dépendances nécessaires à l’exécution
  • Manifest : Un fichier qui définit les autorisations et les interfaces requises
  • Métadonnées : Informations sur le paquet, la version, et le développeur

Les Snaps sont des fichiers portant l’extension .snap qui sont en réalité des archives squashfs (système de fichiers compressé en lecture seule).

Système de stockage

Les Snaps sont stockés dans le répertoire /snap (ou /var/lib/snapd/snap sur certaines distributions). Chaque snap possède son propre sous-répertoire avec :

  • Une référence symbolique current qui pointe vers la version active
  • Des dossiers numérotés pour les différentes révisions installées
  • Des espaces de stockage séparés pour les données utilisateur sous /home/[utilisateur]/snap/[nom-du-snap]

Interfaces

Les Snaps communiquent avec le système via des « interfaces » spécifiques qui définissent les autorisations :

  • accès au réseau
  • accès au système de fichiers
  • périphériques
  • services système
  • matériel graphique
  • audio
  • et bien d’autres…

Système de confinement

Les applications Snap peuvent fonctionner selon différents modes de confinement :

  • strict : confinement complet (ne peut accéder qu’aux ressources explicitement autorisées)
  • classic : peu ou pas de confinement (comme une application traditionnelle)
  • devmode : mode développeur pour le débogage

Snapd et écosystème

Le système est géré par snapd, un démon qui s’occupe :

  • Des installations, mises à jour et suppressions de snaps
  • De la gestion des autorisations et interfaces
  • De la communication avec le Snap Store (snapcraft.io)
  • De la maintenance du système de confinement

Commandes principales

  • snap install [nom] : Installe un paquet
  • snap list : Liste les paquets installés
  • snap refresh : Met à jour tous les paquets
  • snap refresh [nom] : Met à jour un paquet spécifique
  • snap remove [nom] : Désinstalle un paquet
  • snap info [nom] : Affiche les informations sur un paquet
  • snap find [recherche] : Recherche un paquet dans le store

Avantages et inconvénients

Avantages

  • Installation identique sur toutes les distributions Linux compatibles
  • Sécurité améliorée grâce à l’isolation
  • Mises à jour simplifiées et automatiques
  • Possibilité d’avoir plusieurs versions d’une même application
  • Déploiement simplifié pour les développeurs
  • Rétrograder facilement vers une version antérieure en cas de problème

Inconvénients

  • Taille de stockage plus importante (dépendances dupliquées)
  • Démarrage parfois plus lent
  • Intégration parfois imparfaite avec le système (thèmes, polices)
  • Consommation mémoire potentiellement plus élevée
  • Autorisations parfois trop larges avec le mode « classic »

Pour les développeurs : Les paquets Snap sont créés à l’aide de l’outil snapcraft et d’un fichier YAML appelé snapcraft.yaml qui décrit la structure et les dépendances du paquet.

Architecture des paquets Snap

Snap Store (snapcraft.io)
Système Linux
Service
snapd
Interfaces
du système
Applications Snap
Snap 1
Application
Bibliothèques
Runtime
Snap 2
Application
Bibliothèques
Runtime
Système de fichiers
/snap/
├── snap1/
│ ├── current/ → revision1/
│ └── revision1/
└── snap2/
├── current/ → revision3/
├── revision2/
└── revision3/
Légende
Distribution des paquets depuis le Snap Store
Gestion par snapd au niveau système
Paquets Snap isolés avec leurs dépendances
Organisation dans le système de fichiers

Laisser un commentaire

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