Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
snap [Le 22/02/2021, 18:53]
Coeur Noir [Pré-requis]
snap [Le 26/02/2024, 18:19] (Version actuelle)
lyondif02 [Installer snapd] typo. +réf. intro. Snap dans Ubuntu
Ligne 1: Ligne 1:
-{{tag>Bionic ​application format paquet}}+{{tag>Jammy application format paquet}}
 {{ :​icons:​snapcraft-primary-icon--dark.png?​140|Logo snap}} {{ :​icons:​snapcraft-primary-icon--dark.png?​140|Logo snap}}
  
Ligne 6: Ligne 6:
 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é. 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'​auront plus à mettre en jeu la stabilité de leur système par l'​ajout de dépôts personnels (PPA). Ils pourront récupérer un paquet ''​.snap''​ distribué par l'​éditeur via le gestionnaire de paquets **Snappy**. L'​application s'​exécute ensuite de manière isolée, ce qui accroît 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 paquet plus lourd, ceux-ci peuvent donc 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) continue d'être géré à l'aide des paquets ​issus de DebianLes paquets ​''​.snap'' ​s'​ajoutent à l'existant afin de fournir ​un mode de distribution sûr pour les logiciels tiers ou les versions ​non validées par le système ​(la dernière version de votre logiciel préféré par exemple).+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èmeLe 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.
  
-<​note>​[[Canonical]] a développé ​le système ​Snappy pour permettre son utilisation sur le marché ​des serveurs et de l'internet des objets ; les développeurs d'​applications graphiques vont peut-être davantage privilégier ​le système ​[[Flatpak]],​ développé spécifiquement ​pour l'​utilisation graphique sur ordinateur personnel, et très bien intégré à [[Gnome Shell]].</​note>​+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é).
  
-===== Qu'est ce qu'un snap =====+===== Nature et propriétés d’un snap =====
  
-Un snap +Un snap combine un système de fichiers compressés [[wpfr>​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. 
-  * combine un système de fichiers compressés [[wpfs>​SquashFS]] contenant le code de l'​application et un fichier spécifique de métadonnées ''​snap.yaml''​. Il est en lecture seule et, une fois installé, dispose d'une zone accessible en écriture. + 
-  * est autonome. Il inclut la plupart des bibliothèques et des outils dont il a besoin et peut être mis à jour ou restauré sans affecter le reste du système. +Un snap est autonome : 
-  ​* ​est séparé du reste du système d'​exploitation et des autres applications grâce à des mécanismes de sécurité, mais il peut é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. +  * il inclut la plupart des bibliothèques et des outils dont il a besoin ; 
-<note important>​Il est à noter que les installations par Snap prennent ​plus d'​espace disque ​qu'une installation par dépôts officiels, pour savoir ​l'​espace ​utilisé: <code bash>​snap info <​nom-du-programme></​code></​note>​+  * 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. 
 + 
 +<note important>​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é : <code bash>​snap info <​nom-du-programme></​code></​note>​
  
 ===== Installer snapd ===== ===== Installer snapd =====
-Snap est pré-installé ​avec toutes les versions récentes d'Ubuntu… en version bureau, mais pas sur la versions serveur.\\ +Snap est pré-installé ​dans Ubuntu ​depuis ​la version 16.04 LTS au sein de la configuration bureau (« Desktop »)(([[http://​www.webupd8.org/​2015/​04/​ubuntu-desktop-to-eventually-switch-to.html|Ubuntu Desktop To Eventually Switch To Snap Packages By Default]]. Article publié ​le 03/04/2015 sur Web Upd8.))(([[https://askubuntu.com/questions/618471/why-is-ubuntu-moving-to-snap-packages|Why is Ubuntu moving to Snap packages?]] Sujet publié ​le 05/​05/​2015 ​sur le forum AskUbuntu. Évocations de l’intérêt de l’approche Snap en coexistence avec les paquets Debian.)), mais non au sein de la configuration serveur.
-Vous pouvez l'​installer en lançant : +
-<code bash>​sudo apt install snapd</​code>​ +
-<note warning>​Il est à noter que si votre serveur est un [[wpfr>​Serveur_dédié_virtuel|VPS]] tournant sous un serveur hôte avec [[wpfr>​OpenVZ|OpenVZ]],​ snap ne fonctionnera pas ou malPour le savoir, vous pouvez exécuter  +
-<code bash>​sudo systemd-detect-virt +
-# qui vous retourne : +
-openvz</code><​/note> +
-<note tip>​Suite à un [[https://bugs.launchpad.net/ubuntu/+source/snapd/​+bug/​1575053|bug]], il suffit d'​entrer cette ligne de commande dans un terminal pour masquer ​le dossier "​Snap"​ présent dans le répertoire personnel (fonctionne ​sur toutes ​les variantes) +
-<​code>​echo snap >> ~/.hidden</​code></​note>​ +
-===== Installer une application snap =====+
  
-Desormais vous pouvez ​directement ​installer ​des applications snap en passant par la [[:software-center|logithèque ubuntu]] comme pour les autres applications.+Vous pouvez ​l'installer ​avec la commande suivante ​: 
 +  sudo apt install snapd
  
-==== Pré-requis ​====+<note warning>​Si votre serveur est un [[wpfr>​Serveur dédié virtuel|VPS]] hébergé sur un serveur hôte avec [[wpfr>​OpenVZ|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 
 +</​note>​ 
 +===== Installer une application snap ===== 
 +Désormais vous pouvez directement installer des applications snap en passant par la [[:​gnome-software|logithèque Ubuntu]] comme pour les autres applications.
  
 +==== Pré-requis ====
 Il faut commencer par [[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt>​snapd]]** sur votre système (normalement,​ il est pré-installé sur Ubuntu). Il faut commencer par [[:​tutoriel:​comment_installer_un_paquet|installer le paquet]] **[[apt>​snapd]]** sur votre système (normalement,​ il est pré-installé sur Ubuntu).
  
-Il faut aussi penser à définir le nombre de versions ​de chaque logiciel livré en technique snap qui seront conservées ​sous peine d'en retrouver un nombre important et de constater que  la consommation de la RAM est volumineuse. +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. 
-Il semble qu'une valeur de  deux est bien suffisante. ​La valeur par défaut est 3. +La valeur par défaut est 3. Une valeur de deux se révèle suffisante
   sudo snap set system refresh.retain=2   sudo snap set system refresh.retain=2
   ​   ​
-Et d'​**autres astuces pratiques** dans ce [[https://​forum.ubuntu-fr.org/​viewtopic.php?​pid=22384729#​p22384729|post]].+D'​**autres astuces pratiques** ​peuvent être consultées ​dans ce [[https://​forum.ubuntu-fr.org/​viewtopic.php?​pid=22384729#​p22384729|post]].
  
-==== Paquets téléchargés hors-dépôts ​==== +==== Utilisation ​==== 
-**Synaptic** gère des paquets au format ​''​.deb''​ ​**provenant ​de dépôts APT uniquement**. ​ \\ Il ne permet ​pas — dans sa configuration actuelle — l'​​installation d'un paquet téléchargé manuellement depuis un site Internet ou généré par vous-même. \\ ​Si vous cherchez à effectuer ces manipulations,​ lisez les sections suivantes ou utilisez plutôt ​[[:gdebi]].+Le service ​ d’intégration de **Snap** dans la Logithèque Ubuntu est inclus dans les distributions récentes d'​Ubuntu. Pour gérer les paquets au format ​Snap depuis la logithèque,​ il suffit ​de vous rendre sur [[https://​snapcraft.io/​snap-store|la page officielle du Snap Store]] et de cliquer sur le bouton **[ install ]**.
  
-=== Paquets téléchargés manuellement ===+Voici les lignes de commandes équivalentes :​
  
-== Les paquets précompilés au format *.deb ==+  sudo snap install snap-store 
 +  sudo apt-get update
  
-Afin de gérer les paquets précompilés .deb que vous téléchargez manuellement ( par exemple **depuis les sites de confiance** **Sourceforge** ou **Github**) vous devez configurer l'application ​qui les installera par défaut. il s'agit de la Logithèque Ubuntu. ​+==== 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 disponibles(([[https://​forum.kubuntu-fr.org/​viewtopic.php?​id=2030312|Pas d'​imprimante dans Gimp]]. Question publiée le 05/09/2018 sur le forum Kubuntu francophone et résolue.)):​
 +  sudo snap install --classic nom_du_snap
  
-== Les paquets précompilés au format *.deb à l'aide de l'​application ​Checkinstall ​==+===== Mise à jour des applications ​ ===== 
 +==== 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.
  
-Contrairement à l'idée préconçue selon laquelle Synaptic serait incapable de gérer les sources compilés manuellement,​ **ceci ​est tout à fait possible à l'aide de l'​application checkinstall**. \\ +L'utilisateur ​est généralement alerté par un message « **mise à jour du snap "​snap-store" ​en attente*» à l’ouverture ​de sa session.
-Cet utilitaire en ligne de commandes simplissime ​à utiliser compile les sources ​en C++ puis génère un paquet précompilé ​*.deb. \\ +
-Cette procédure permet d'​intégrer ensuite le paquet généré manuellement ​à la bibliothèque ​de Synaptic.+
  
-Pour de plus amples informations sur l'​application ​Checkinstall,​ reportez vous au chapitre [[checkinstall|Checkinstall :​ Créer facilement un paquet debian (*.deb) à partir des sources]] ​de la documentation.+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érationIl est donc nécessaire ​de désactiver le magasin avant de lancer ​la mise à jourCela peut se faire en ligne de commande comme suit :
  
 +  snap-store --quit
 +  snap refresh
  
-==== Formats de distribution alternatifs ==== +Référence : [[https://askubuntu.com/questions/1412575/​pending-update-of-snap-store ​Pending Update of Snap Store]]. Question publiée le 06/06/2022 sur le forum Ask Ubuntu et résolue.
-Synaptic ne sait pas gérer les logiciels précompilés au format [[:Flatpak]] ni [[:​snap|Snap]] ni [[:​Appimage]] encore moins les applications hébergées sur [[wp>https://fr.wikipedia.org/wiki/GitHub|Github]]. \\ Si votre logithèque ne gère pas nativement ces formats, des procédures spécifiques à chaque format vous seront nécessaires.+
  
-=== Les nouveaux modules d'​intégration à Ubuntu === 
-Depuis Ubuntu 17.10, rétroportés sous 16.04, il existe des applications d'​intégration des paquets **Flatpak**,​ **Snap**, **Appimage** et des application hébergées sur le Github. \\ Les procédures d’intégration diffèrent selon le paquet précompilé considéré. 
-  * Intégration de **Snap** dans la Logithèque Ubuntu : \\ le service snapd est désormais intégré aux distribution récentes d'​Ubuntu. Pour gérer les Snaps depuis la logithèque,​ il vous suffit de vous rendre sur [[https://​snapcraft.io/​snap-store|la page officielle du Snapstore]] et de cliquer sur le bouton **[ install ]** ( Ubuntu 16.04 et suivantes ) <code bash>​sudo snap install snap-store ​ 
-sudo apt-get update </​code>​ 
-  * Intégration du dépôt officiel **Flathub** au sein de Synaptic : <code bash> 
-sudo flatpak remote-add --if-not-exists flathub https://​flathub.org/​repo/​flathub.flatpakrepo </​code>​ 
-  * Intégration de **Flatpak** dans la logithèque Ubuntu : ( Ubuntu 16.04 et suivantes ) <code bash>​sudo apt install gnome-software-plugin-flatpak 
-sudo apt-get update </​code>​ \\ pour les autres gestionnaires de bureaux, se référer à la page « [[https://​www.numetopia.fr/​installation-et-utilisation-de-flatpak-sous-ubuntu/​|Installation et utilisation de Flatpak sur Ubuntu]] » \\ — site : Numétopia.fr ; auteur : le tux masqué ; date : 21 août 2019 ; mise à jour : 6 novembre 2019. \\  
-    * Pour lister vos paquets Flatpak, entrez dans un [[terminal|Terminal]] : <code bash> 
-flatpak list </​code>​ 
-    * Pour mettre à jour tous vos paquets Flatpak, entrez dans un [[terminal|Terminal]] : <code bash> 
-flatpak update </​code>​ 
-  * Intégration de **Appimage** au sein des différentes interfaces graphiques d'​Ubuntu :  
-    * se référer à [[https://​www.linuxuprising.com/​2018/​04/​easily-run-and-integrate-appimage-files.html|Easily Run And Integrate AppImage Files With AppImageLauncher]] ​ \\ — site : Linuxuprising.com ; auteur : logix ; date : 17 juillet 2018. 
-    * télécharger le paquet précompilé *.deb sur la page Github dédiée « [[https://​github.com/​TheAssassin/​AppImageLauncher/​releases|Appimage Launcher release builds]] ». 
- 
-  * Intégration de **Github Desktop** au sein des différentes interfaces graphiques d'​Ubuntu : <code bash>​sudo snap install github-desktop --edge </​code>​ \\ Le paquet github-desktop permet de gérer son dépôt Github graphiquement dans une application intégrée au gestionnaire d'​applications Ubuntu 
- 
-<​note>​**Le projet précédent nommé __Appimaged__ est désormais déprécié**. \\ 
-Ceci ne vous empêche nullement de l'​utiliser en complément de Appimage Launcher. Pour l'​installer **après avoir installé Appimage Launcher** : 
-<code bash>​wget "​https://​github.com/​AppImage/​appimaged/​releases/​download/​continuous/​appimaged-x86_64.AppImage"</​code>​ 
-rendez vous dans votre dossier personnel 
-<code bash> sudo chmod a+x appimaged-x86_64.AppImage</​code>​ 
-<code bash>​sudo ./​appimaged-x86_64.AppImage --install</​code>​ 
-</​note>​ 
-==== En ligne de commande ==== 
- 
-Vous pouvez aussi passer par un [[:​terminal]] pour installer une application snap : 
-<​code>​ 
-sudo snap install nom_du_snap 
-</​code>​ 
- 
-Plus d'​informations et la liste des options de la commande **snap** en consultant le manuel (''​man snap''​).\\ 
-Notamment, il peut-être intéressant d'​utiliser l'​option //​--classic//​ qui évite le confinement… et permet par exemple d'​imprimer sur les imprimantes disponibles((https://​forum.kubuntu-fr.org/​viewtopic.php?​id=2030312)):​ 
-<​code>​ 
-sudo snap install --classic nom_du_snap ​ 
-</​code>​ 
- 
-===== Mise à jour des applications snaps  ===== 
- 
-En ligne de commande : 
-<​code>​sudo snap refresh</​code>​ 
  
 ===== Logiciels ===== ===== Logiciels =====
-Quelques ​logiciels disponibles sous Snap :+Voici une liste non exhaustive de logiciels disponibles sous Snap :
  
   * [[:​Blender]]   * [[:​Blender]]
Ligne 128: Ligne 98:
   * [[okular|Okular : l'​afficheur de documents]]   * [[okular|Okular : l'​afficheur de documents]]
   * [[:​keepassxc]]   * [[:​keepassxc]]
 +  * [[:Signal]]
   * [[:Skype]]   * [[:Skype]]
   * [[:​Spotify]]   * [[:​Spotify]]
   * [[:​Supertuxkart]]   * [[:​Supertuxkart]]
-  * [[:​Telegram]]+  * [[:telegram|Telegram]]
   * [[:VLC]]   * [[:VLC]]
  
-Quelques Logiciels ​disponibles ​sous Snap, en tapant ​+La commande suivante affiche une liste de //​logiciels ​disponibles ​et suggérés//​ au format ​Snap : 
-<​code>​snap find</​code>​+  snap find
  
-Liste des logiciels installés ​sur votre ordinateur, en tapant ​+La commande suivante affiche la liste des //logiciels installés// au format Snap dans le système ​
-<​code>​snap list</​code>​+  snap list
  
  
 ===== Suppression ===== ===== Suppression =====
-==== Pour supprimer ​un paquet ​====+==== Supprimer ​un paquet ==== 
 +La suppression d’un paquet snap est commandée par : 
 +  snap remove mon_logiciel 
 +Cela conserve le profil utilisateur (instantané ou « snapshot ») pendant 30 jours.
  
-<​code>​sudo ​snap remove mon_logiciel</​code>​+La suppression d’un paquet snap et de tous les profils utilisateur associés est commandée par : 
 +  ​snap remove ​--purge ​mon_logiciel
  
-----+La suppression d’une version d’un paquet snap, identifiée par son numéro de révision, est commandée par : 
 +  snap remove ​--purge mon_logiciel ​--revision=numéro_révision 
 +<​note>​La version et le numéro de révision peuvent être retrouvés par la commande ''​snap list''​ ou ''​snap info mon_logiciel''​.</​note>​
  
-==== Pour faire du ménage de manière radicale ==== +Les instantanés – les derniers profils conservés quand on supprime un snap – sont affichés par : 
-  +  snap saved 
-voir : [[https://​superuser.com/​questions/​1310825/​how-to-remove-old-version-of-installed-snaps]] +Ils peuvent être supprimés individuellement en indiquant le numéro d’instantané (ou numéro de « snapshot ») visé : 
-<note important>​Attention,​ cette commande supprime immédiatement tous les snap désactivés</​note>​ +  snap forget numéro_snapshot 
-**0constater la place occupée par les snap :**  +==== Faire du ménage de manière radicale ==== 
-<​code>​sudo du -csh /snap/* |sort -rh</​code>​ +Référence ​: [[https://​superuser.com/​questions/​1310825/​how-to-remove-old-version-of-installed-snaps|How to remove old version of installed ​snaps]]. ​Question publiée le 04/04/2018 sur le forum SuperUser ​et résolue.
-pour chaque version : <​code>​sudo du -csh /​snap/​nomdusnap/​* |sort -rh</​code>​ +
-**1. Vérifier la liste des snap qui seront supprimés** +
-<​code>​snap list --all</​code>​  +
-  * 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 <​code>​snap list --all | awk '/​désactivé|disabled/​{print}'</​code>​ +
-**2. suppression** +
-Si la liste vous convient vous pouvez taper la commande suivante :  +
-<​code>​snap list --all | awk '/​désactivé|disabled/​{print $1, $3}' |while read snapname revision; do echo $snapname $revision; sudo snap remove "​$snapname"​ --revision="​$revision";​ done</​code>​  +
-Vous pourrez constater le gain de place avec <​code>​df -h</​code> ​et <​code>​sudo du -csh /snap/* |sort -rh</​code>​ +
-===== Suivi des paquets installés. ===== +
-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. +
-<​code>​snap list --all | grep activ</​code>​ +
-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.+
  
-Lorsque cette opération est faite pour la totalité ​des lignesIl faut regarder si  un paquet ​ne dispose pas de plusieurs ​versions. +<note important>​Attention :​ la commande indiquée supprime immédiatement tous les paquets snap désactivés.</​note>​ 
-     ​snap list --all + 
-Au besoinsupprimer ​le paquet ancien si détection ​de double+=== Évaluer la place occupée par les snap === 
-   ​ +Espace disque occupé par chaque paquet snap installé :​ 
-===== Les répertoires ​===== +  sudo du -csh /snap/* | sort -rh 
-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/**.\\ +  # affichage trié ici par ordre décroissant sur le volume d’espace disque occupé 
-Comme expliqué dans l'article (en) sur freecodecamp.org((https://​www.freecodecamp.org/​news/​managing-ubuntu-snaps/#​understanding-the-snap-file-system)), ​il faut, pour snap, considérer ​les répertoires:​\\ + 
-  * /snap/ +Espace disque occupé par chaque version installée d’un paquet snap donné : 
-  * /home/$USER/snap/ +  sudo du -csh /​snap/​nom_du_snap/​* | sort -rh 
-  * /var/snap+ 
-  * /var/lib/snapd+=== Vérifier ​la liste des snap qui seront supprimés === 
-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+Afficher les paquets snap installésactifs ou non : 
 +  snap list --all 
 + 
 +Repérer les lignes avec la note //​désactivé//​ (ou, sur un système en anglais : //​disabled//​). Par la suite, adapter les commandes par le terme approprié. 
 + 
 +Veillez à conserver au moins une version de paquet ​snap à l’état non //​désactivé//​. En effet la commande proposée par la suite supprimera sans distinction tous les paquets snap indiqués en argument. 
 + 
 +Afficher la liste des paquets qui seront supprimés :​ 
 +  LANG=C snap list --all | awk '/​disabled/​{print}'​ 
 +  # la spécification ici de la variable LANG permet un filtre sur le terme anglais "​disabled"​ 
 + 
 +=== Suppression proprement dite === 
 +Si la liste vous convient, vous pouvez saisir 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 
 +ou, en version sur plusieurs ​lignes : 
 +  ​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 les commandes suivantes :​ 
 +  # espace disque global : 
 +  df -h 
 +  # espace disque par paquet snap : 
 +  sudo du -csh /snap/* | sort -rh 
 + 
 +==== Supprimer et bloquer les paquets snap ==== 
 +Vous ne souhaitez plus utiliser les paquets snap pour diverses raisons ? **C'​est possible**
 +<note important>​Rappel : évaluez l’existence d’une version en [[deb|paquet Debian]] pour les applications dont vous voudriez une alternative.</​note>​ 
 + 
 +Références :​ 
 +  * [[https://​forum.ubuntu-fr.org/​viewtopic.php?​pid=22458861#​p22458861|Supprimer et bloquer les snaps]]. Procédure pas à pas partagée le 28/05/2021 sur le forum Ubuntu francophone ([[https://​archive.wikiwix.com/​cache/​index2.php?​url=https%3A%2F%2Fforum.ubuntu-fr.org%2Fviewtopic.php%3Fpid%3D22458861%23p22458861#​federation=archive.wikiwix.com&​tab=url|archive]]). 
 +  * [[https://​haydenjames.io/​remove-snap-ubuntu-22-04-lts/​|Remove Snap Ubuntu 22.04 LTS]]. Article (**en anglais**) de Hayden James publié le 01/10/2023 sur Blog Linux. Mention supplémentaire sur l’utilisation de **apt**. 
 +===== Suivi des paquets installés ​===== 
 +<​note>​Les commandes et le script ''​shell''​ mentionnés dans cette section sont identiques ​à ceux de la section [[snap#​Suppression|Suppression]] supra.</​note>​ 
 + 
 +L'​application ne fait pas nécessairement un ménage parfait. Il faut s'​assurer que des paquets désactivé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 (exemple ici : 9999) par la bonne valeur qui a été obtenue.\\ 
 +Il est possible d'automatiser ce travail via ce petit script(([[https://​askubuntu.com/​a/​1040131/​385361|How to remove disabled (unused) snap packages with a single line of command?]] Question publiée le 15/05/2018 sur le forum AskUbuntu et résolue.)) :​ 
 +<file - 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 
 +</​file>​ 
 + 
 +Comme indiqué ci-dessus, la commande ''​flatpak''​ équivalente est la suivante : 
 +     ​flatpak list 
 +===== Répertoires de référence ===== 
 +Un système d’exploitation présente une arborescence ​de dossiers et fichiers organisés ​par défaut. En l’occurrence les fichiers de configuration sont habituellement trouvés dans le dossier ​**/etc**, les journaux (« log files ») dans le dossier ​**/​var/​log**. 
 + 
 +Les emplacements de ces dossiers et fichiers de référence pour une application installée via Snap sont différents de l’usage du système hôte. 
 + 
 +Comme David Clinton ​l’explique dans son article (en anglais) sur FreeCodeCamp.org(([[https://​www.freecodecamp.org/​news/​managing-ubuntu-snaps/#​understanding-the-snap-file-system|How to manage Ubuntu Snaps: the stuff no one tells you]]. Article de David Clinton publié le 19/08/2019 sur FreeCodeCamp.org ([[https://​archive.wikiwix.com/​cache/​index2.php?​url=https%3A%2F%2Fwww.freecodecamp.org%2Fnews%2Fmanaging-ubuntu-snaps%2F%23understanding-the-snap-file-system#​federation=archive.wikiwix.com&​tab=url|archive]]).)), les répertoires ​suivants sont à considérer lors du déploiement de logiciel à partir de paquet snap 
 +  * ''​/snap/''​ :​ dossiers virtuels, en lecture seule, des applications snap en exécution (fichiers snap « montés ») ;​ 
 +  * ''​/var/snap/''​ :​ données et fichiers de configuration associés aux applications snap en exécution ;​ 
 +  * ''​/var/lib/snapd/''​ :​ base du démon Snap et entrepôt des fichiers snap récupérés ;​ 
 +  * ''​/home/$USER/snap/''​ : ​ données et fichiers de configuration de la session utilisateur ''​$USER''​. 
 + 
 +Scénario : je souhaite modifier les modèles de [[:Gimp]]
 +  * La documentation indique que le fichier ​concerné, ​//​templaterc//​est normalement ​situé ​dans le répertoire ​''​/​etc/​gimp/​2.10/​'' ​ou ''/​home/​$USER/gimp/…''​. 
 +  * Dans le cas d’une installation de Gimp par Snaple fichier ​associé à ma session utilisateur ​''​$USER''​ sera disponible ​dans ''​/​home/​$USER/​snap/​gimp/​105/​.config/​GIMP/​2.10''​ (ici, 105 correspond au numéro de révision de la version active de Gimp dans le système utilisé). 
 + 
 +Dans le cas de l’installation standard d'une application snap, l'​accès est restreint aux répertoires et fichiers de l'​utilisateur,​ stockés dans le dossier de ce dernier. L'​accès par les liens symboliques qui pointent à l'​extérieur des répertoires de l'​utilisateur est refusé. Cela correspond à la notion de //​confinement//​.
 ===== Contournement des répertoires ===== ===== Contournement des répertoires =====
-Des solutions existent certainement +==== Approches en mode avancé ==== 
-  * La technique ​en mode  [[https://​askubuntu.com/​questions/​1040194/​how-to-use-snap-packages-when-home-is-not-home-user|bind]] +  * Technique ​en mode « bind »(([[https://​askubuntu.com/​questions/​1040194/​how-to-use-snap-packages-when-home-is-not-home-user|How to use Snap Packages when $HOME is not /​home/​$USER?​]] Question posée le 25/05/2018 sur le forum AskUbuntu et résolue.)) : elle repose sur le montage des dossiers ciblés par lien physique (option ''​--bind''​ de la commande ''​mount''​). Dans le cas particulier des dossiers racine des utilisateurs,​ une montée de version de Snapd est préconisée,​ avec une configuration spécifique du chemin des dossiers utilisateur à l’issue de la mise à niveau :
-  * La technique en mode  [[https://snapcraft.io/​docs/​snap-confinement|developpement]] ​+
  
 +  # mise à jour de Snapd
 +  snap refresh --channel=latest/​edge snapd
 +  # déclaration pour Snap d’un chemin personnalisé des dossiers racine utilisateur (ici : /local/home à la place de /home)
 +  snap set system homedirs=/​local/​home/​
  
-===== Voir aussi =====+  * Technique en mode « développement »(([[https://​snapcraft.io/​docs/​snap-confinement|Snap confinement]]. Documentation officielle de Canonical Snapcraft. Dernière mise à jour : juillet 2023.)) : elle consiste en l’installation d’un paquet snap avec l’option spécifique ''​--devmode''​. Cette option est normalement réservée à une étape de développement (avant mise en production). Elle réduit le confinement et étend l’accès du programme snap aux ressources du système :
  
-  ​* [[https://​snapcraft.io/​ | site officiel]] +  ​snap install ​--devmode mon_logiciel
-  * [[https://​open-store.io/| logithèque officielle de snaps pour Ubuntu Touch ]] +
-  * [[https://​snapcraft.io/​ | logithèque officielle de snaps Canonical]]+
  
-  * [[https://​forum.ubuntu-fr.org/​viewtopic.php?​pid=22013312#​p22013312 | Problème avec un proxy sans authentification]] +  ​* Montage des partitions sur des points accessibles à un logiciel en snap : ''​$HOME/'',​ ''/​media/'',​ ''/​mnt/''​ ou ''/​run/​media/''​. La documentation officielle de Snapcraft peut aussi être consultée en matière de gestion des interfaces(([[https://​snapcraft.io/​docs/​interface-management|Interface management]]. Documentation officielle de Canonical Snapcraft. Dernière mise à jour : janvier 2024.)). 
 + 
 + 
 + 
 +==== 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. Ils doivent être accessibles par les applications standard de l'​utilisateur. 
 + 
 +Cette utilisation est laissée à la discrétion de chaque application. Elle est valable pour l’ensemble des utilisateurs définis et futurs. Les règles de base sont les suivantes :​ 
 +  * accès non prévu par l'​application ;​ 
 +  * accès prévu systématiquement par l'​application ;​ 
 +  * accès demandé au moment de l'​installation de l'​application ;​ 
 +  * accès à activer après l'​installation. 
 + 
 +Pour savoir si une application « mon_application » peut utiliser ces répertoires,​ saisir la commande suivante :​ 
 +  snap connections mon_application | grep removable 
 + 
 +La ligne de retour affichera l'​état :​ 
 +  removable-media ​          ​mon_application:​removable-media ​ :​removable-media ​                 - 
 +Ce retour indique que la fonctionnalité est prévue mais qu'​elle n'est pas activée. 
 + 
 +Pour activer la fonctionnalité,​ il est nécessaire de connaitre un mot de passe administrateur. L’appartenance au groupe //sudo// n’est pas requise. Voici la commande à saisir : 
 +  snap connect mon_application:​removable-media :​removable-media 
 + 
 +Une nouvelle extraction de l'​état (cf. commande supra) rapportera une réponse sans équivoque :​ 
 +  removable-media ​          ​mon_application:​removable-media ​ :​removable-media ​                 manual 
 + 
 +<​note>​Le connecteur [[https://​snapcraft.io/​docs/​cups-control-interface|cups-control]] permet de gérer l'​imprimante.</​note>​ 
 + 
 +                            - 
 + 
 + 
 + 
 +===== Voir aussi ===== 
 +  * [[https://​snapcraft.io/​docs |Canonical Snapcraft]] :​ documentation officielle. 
 +  * [[https://​open-store.io/​ |OpenStore]] :​ logithèque officielle de programmes snap pour Ubuntu Touch. 
 +  * [[https://​snapcraft.io/​store |Snap Store]] : logithèque officielle de programmes snap pour Linux, hébergée par Canonical. 
 +  ​* [[https://​forum.ubuntu-fr.org/​viewtopic.php?​pid=22013312#​p22013312 |Erreur: unable to contact snap store (snap derrière ​un proxy)]]. Question posée le 28/11/2018 sur le forum et résolue. Accès à Snap Store par un proxy sans authentification requise.
  • snap.1614016398.txt.gz
  • Dernière modification: Le 22/02/2021, 18:53
  • par Coeur Noir