Ceci est une ancienne révision du document !


Logo snap

Format Snap

Le format snap vise à permettre l'installation de nouvelles versions de logiciels dans les systèmes Linux, tout en apportant aux développeurs la facilité de distribution, la fiabilité et la sécurité.

Avec le format snap, pour recevoir des nouvelles versions de logiciels, les utilisateurs n'ont plus à mettre en jeu la stabilité de leur système par l'ajout de dépôt personnel (PPA). Ils peuvent récupérer un paquet .snap distribué par l'éditeur via le gestionnaire de paquets Snappy. L'application associée est alors exécutée de manière isolée, renforçant la stabilité et la sécurité du système. Le paquet .snap inclut l'application et peut contenir aussi ses dépendances ; en contrepartie d'un volume plus élevé, il permet de faire cohabiter plusieurs versions de mêmes dépendances au sein d'un même système Linux et en facilite la distribution en ligne et hors ligne.

Les paquets .snap ne remplacent pas les paquets .deb classiques : le cœur du système Ubuntu (noyau, environnements graphiques, logiciels de base) reste géré à partir des paquets issus de Debian. Les paquets .snap s'ajoutent à l'existant afin de fournir un mode de distribution sûr pour les logiciels tiers ou pour les versions non validées par le système (par exemple : pour la dernière version de votre logiciel préféré).

Un snap combine un système de fichiers compressés SquashFS contenant le code de l'application associée et un fichier spécifique de métadonnées snap.yaml. Il est en lecture seule. Une fois installé, il dispose d'une zone accessible en écriture.

Un snap est autonome :

  • il inclut la plupart des bibliothèques et des outils dont il a besoin ;
  • il peut être mis à jour ou restauré sans affecter le reste du système.

De plus un snap est séparé du reste du système d'exploitation et des autres applications grâce à des mécanismes de sécurité. Il peut néanmoins échanger du contenu et fonctionner avec d'autres snaps suivant des règles précises contrôlées par l'utilisateur et les paramétrages généraux du système d'exploitation.

Les applications installées au format snap occupent habituellement plus d'espace disque que celles qui émanent des dépôts officiels. La commande suivante donne une idée de l'espace utilisé :
snap info <nom-du-programme>

Snap est pré-installé avec toutes les versions d’Ubuntu… en version bureau, mais non sur la version serveur.
Vous pouvez l'installer avec la commande suivante :

sudo apt install snapd
Si votre serveur est un VPS hébergé sur un serveur hôte avec OpenVZ, snap ne fonctionnera pas ou fonctionnera de manière dégradée. La commande suivante permet de connaitre la technologie de virtualisation sous-jacente :
systemd-detect-virt
# au besoin, faire précéder la commande de : sudo
# retour attendu dans le cas de OpenVZ :
openvz

Désormais vous pouvez directement installer des applications snap en passant par la logithèque Ubuntu comme pour les autres applications.

Pré-requis

Il faut commencer par installer le paquet snapd sur votre système (normalement, il est pré-installé sur Ubuntu).

Il faut aussi penser à définir le nombre de versions qui seront conservées pour chaque logiciel livré en technique snap sous peine d'en retrouver un nombre important et de constater que la RAM consommée est volumineuse. La valeur par défaut est 3. Une valeur de deux se révèle suffisante.

sudo snap set system refresh.retain=2

D'autres astuces pratiques peuvent être consultées dans ce post.

Utilisation

Le service d’intégration de Snap dans la Logithèque Ubuntu est intégré aux distribution récentes d'Ubuntu. Pour gérer les Snaps depuis la logithèque, il vous suffit de vous rendre sur la page officielle du Snapstore et de cliquer sur le bouton [ install ]

sudo snap install snap-store
sudo apt-get update

En ligne de commande

Vous pouvez aussi passer par un terminal pour installer une application snap :

sudo snap install nom_du_snap

Plus d'informations, dont la liste des options de la commande snap, sont disponibles en consultant le manuel (man snap).
Il peut être notamment intéressant d'utiliser l'option --classic qui évite le confinement… et permet par exemple d'imprimer vers des imprimantes disponibles1):

sudo snap install --classic nom_du_snap

Cas général

Mise à jour des applications :

sudo snap refresh

Mise à jour du magasin d'application snap-store

Lorsque le magasin d’application snap-store doit être mis à jour, l'opération snap refresh ne fonctionne pas.

L'utilisateur est généralement alerté par un message « mise à jour du snap "snap-store" en attente » au démarrage de son ordinateur.

En effet, la commande snap refresh ne permet pas de mettre à jour le magasin d'application qui reste actif tout au long de l'opération. Il est donc nécessaire de désactiver le magasin avant de lancer la mise à jour. Cela peut se faire en ligne de commande comme suit :

snap-store --quit
snap refresh

Référence : Pending Update of Snap Store. Question publiée le 06/06/2022 sur le forum Ask Ubuntu et résolue.

Quelques logiciels disponibles sous Snap :

Quelques Logiciels disponibles sous Snap, en tapant :

snap find

Liste des logiciels installés sur votre ordinateur, en tapant :

snap list

Pour supprimer un paquet :

snap remove mon_logiciel

conservera le profil utilisateur pendant 30 jours ( instantané, snapshot )

snap remove --purge mon_logiciel

supprimera complètement le logiciel ainsi que le(s) profil(s) utilisateur(s) relatif(s).
Pour supprimer une version d'un paquet :

snap remove --purge mon_logiciel --revision=n°révision

Les instantanés - les derniers profils conservés quand on supprime un snap - sont consultables via

snap saved

et effaçables via

snap forget numéro_du_snapshot

Pour faire du ménage de manière radicale

voir : https://superuser.com/questions/1310825/how-to-remove-old-version-of-installed-snaps

Attention, cette commande supprime immédiatement tous les snap désactivés

constater la place occupée par les snap :

  sudo du -csh /snap/* | sort -rh

pour chaque version :

sudo du -csh /snap/nomdusnap/* | sort -rh

Vérifier la liste des snap qui seront supprimés

snap list --all
  • Repérer les lignes avec les notions désactivé (ou sur un system en anglais disabled. Dans la suite vous devrez adapter les commandes par le terme approprié).
  • Veillez à ce qu'au moins 1 version des snap que vous souhaitez garder ne soit pas repérer désactivé. En effet la commande suivante supprime sans distinction tous les snap marqués comme tel.
  • Pour afficher la liste de ceux qui seront supprimés
    LANG=C snap list --all | awk '/disabled/{print}'

suppression

Si la liste vous convient vous pouvez taper la commande suivante :

LANG=C snap list --all | awk '/disabled/{print $1, $3}' | while read snapname revision ; do echo $snapname $revision ; sudo snap remove --purge "$snapname" --revision="$revision" ; done

Vous pourrez constater le gain de place avec

df -h

et

sudo du -csh /snap/* | sort -rh

Supprimer et bloquer les snaps

Vous ne souhaitez plus utiliser les snaps pour certaines raison : c'est possible

Rappel : Regardez si une version en Paquet Debian existe pour les applications dont vous voudriez une alternative

voir la procédure sur un post du forum Ubuntu un autre article qui explique en plus comment permettre d'utiliser apt en Anglais.

L'application ne fait pas nécessairement un ménage parfait. Il faut s'assurer que des paquets déactivés n'ont pas été conservés.

LANG=C snap list --all | grep "disabled"

Pour chaque ligne trouvée, il faut supprimer le paquet devenu inutile avec la commande

snap remove nom_logiciel --revision=9999

en renseignant le numéro de révision par la bonne valeur qui a été obtenue.
Il est possible d'automatiser ce travail via ce petit script 2):

bin/supprime-snap-désactivé.sh
#!/bin/sh

LANG=C snap list --all | awk '/disabled/{print $1, $3}' |
    while read snapname revision ; do
        snap remove "$snapname" --revision="$revision"
    done

Comme indiqué ci-dessus, la commande flatpak équivalente est la suivante :

   flatpak list

Si on est habitué à accéder pour lire/modifier tel ou tel fichier de configuration, de log…, il faut savoir qu'ils ne sont plus dans l'arborescence par défaut du système comme /etc/ ou /var/log/.
Comme expliqué dans l'article (en) sur freecodecamp.org3), il faut, pour snap, considérer les répertoires:

  • /snap/
  • /home/$USER/snap/
  • /var/snap/
  • /var/lib/snapd/

Exemple: je souhaite modifier les modèles de gimp la documentation m'indique que c'est le fichier templaterc qui est normalement dans le répertoire /etc/gimp/2.10/ ou ~/gimp/…, et bien non! Si je veux celui associé à ma session utilisateur, il est dans /home/$USER/snap/gimp/105/.config/GIMP/2.10

Une installation standard d'une application snap permet l'accès uniquement à la totalité des répertoires et fichiers de l' utilisateur stockés dans sa partition. L'accès par les liens symboliques pointant à l'extérieur des répertoires de l'utilisateur est refusé. C'est la notion de confinement.

Des solutions existent certainement

  • La technique en mode bind
  • La technique en mode developpement
  • Montage des partitions sur des points de montage accessibles à un logiciel en snap, dans : $HOME/ ou /media/ ou /mnt/ ou /run/media/ ( voir interface removable-media ).

Extension du confinement

Les applications snap permettent malgré tout d'utiliser normalement deux autres répertoires /mnt et /media. Les sous-répertoires peuvent être quelconques mais doivent être accessibles par les applications standards de l'utilisateur. Cette utilisation est à la discrétion de chaque application et est valable pour la totalité des utilisateurs définis et futurs. Il semble que les règles de bases soient:

  • Non prévu par l'application.
  • Prévu systématiquement par l'application.
  • Demandé au moment de l'installation de l'application.
  • A activer après l'installation.

Pour savoir si une application peut utiliser ces répertoires, faire la commande:

snap connections NomApplication | grep  removable

La ligne de retour va indiquer l'état

removable-media           NomApplication:removable-media  - 

Ce retour montre que la fonctionnalité est prévue mais qu'elle n'est pas activée.

Pour activer la fonctionnalité, il est nécessaire de connaître un mot de passe administrateur. Il n'y a pas besoin d'être dans le groupe "sudo". Il faut faire la commande suivante:

snap connect NomApplication:removable-media :removable-media

Si on demande à nouveau l'état, la réponse est sans équivoque:

removable-media           gimp:removable-media  :removable-media                  manual

Remarque: Le connecteur cups-control permet de gérer l'imprimante.


  • snap.1708947461.txt.gz
  • Dernière modification: Le 26/02/2024, 12:37
  • par lyondif02