
Les 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
- Autonomie : Chaque paquet Snap est autonome et contient l’application ainsi que toutes ses dépendances nécessaires à son fonctionnement.
- 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é.
- Mise à jour automatique : Les Snaps se mettent à jour automatiquement en arrière-plan, garantissant l’exécution des dernières versions.
- 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.
Les paquets Snap sont particulièrement utilisés dans Ubuntu et ses dérivés, mais sont également disponibles sur de nombreuses autres distributions Linux dont Fedora, Debian, Arch Linux, etc.
Architecture des paquets Snap
snapd
du système
├── snap1/
│ ├── current/ → revision1/
│ └── revision1/
└── snap2/
├── current/ → revision3/
├── revision2/
└── revision3/
Vous aimerez aussi

Présentation
janvier 10, 2024
Firefox View – une Navigation Fluide et Interconnectée
septembre 24, 2024