Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
snap [Le 06/06/2022, 15:17] Coeur Noir [Pour supprimer un paquet :] |
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 Focal 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é. | ||
- | <note important>[[https://www.lemondeinformatique.fr/actualites/lire-une-faille-vulnerabilise-le-gestionnaire-de-paquets-snap-pour-linux-85889.html|faille de sécurité critique apparue en fév 2022]]. Pour bloquer le format snap, [[https://forum.ubuntu-fr.org/viewtopic.php?pid=22458861#p22458861|il vous suffira de suivre les instructions dans le forum]]\\ | ||
- | \\ | ||
- | L'article cité date du 21/02/2022 et précise : « **Ces failles ont été corrigées dans ces composants respectifs plus tôt cette année**. Ubuntu a publié des correctifs pour CVE-2021-44731 et CVE-2021-44730 pour la plupart de ses éditions Linux, **à l'exception de la faille 16.04 ESM** (Extended Security Maintenance) toujours en attente d’un correctif. La gravité de ces deux vulnérabilités est considérée comme très critique. »</note> | ||
- | 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. | + | 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) continue d'être géré à l'aide 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 les versions non validées par le système (la dernière version de votre logiciel préféré par exemple). | + | 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é). |
- | <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> | + | ===== Nature et propriétés d’un snap ===== |
- | ===== Qu'est ce qu'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. |
- | Un snap : | + | Un snap est autonome : |
- | * 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. | + | * il inclut la plupart des bibliothèques et des outils dont il a besoin ; |
- | * 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. | + | * il peut être mis à jour ou restauré sans affecter le reste du système. |
- | * 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. | + | |
- | <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> | + | 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>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 mal. Pour 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> | + | |
+ | Vous pouvez l'installer avec la commande suivante : | ||
+ | sudo apt install snapd | ||
+ | |||
+ | <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 ===== | ===== 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. | + | 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 ==== | ==== 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 |
- | 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. | + | sudo apt-get update |
- | + | ||
- | == Les paquets précompilés au format *.deb à l'aide de l'application Checkinstall == | + | |
- | 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**. \\ | + | |
- | 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. | + | |
- | + | ||
- | ==== Formats de distribution alternatifs ==== | + | |
- | 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, 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 ==== | ==== En ligne de commande ==== | ||
Ligne 96: | Ligne 58: | ||
sudo snap install nom_du_snap | sudo snap install nom_du_snap | ||
- | Plus d'informations et la liste des options de la commande **snap** en consultant le manuel (''man snap'').\\ | + | Plus d'informations, dont la liste des options de la commande **snap**, sont disponibles 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)): | + | 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 | sudo snap install --classic nom_du_snap | ||
===== Mise à jour des applications ===== | ===== Mise à jour des applications ===== | ||
+ | ==== Cas général ==== | ||
Mise à jour des applications : | Mise à jour des applications : | ||
sudo snap refresh | 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** » à l’ouverture de sa session. | ||
+ | |||
+ | 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 : [[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. | ||
===== Logiciels ===== | ===== Logiciels ===== | ||
- | Quelques logiciels disponibles sous Snap : | + | Voici une liste non exhaustive de logiciels disponibles sous Snap : |
* [[:Blender]] | * [[:Blender]] | ||
Ligne 124: | Ligne 98: | ||
* [[okular|Okular : l'afficheur de documents]] | * [[okular|Okular : l'afficheur de documents]] | ||
* [[:keepassxc]] | * [[:keepassxc]] | ||
+ | * [[:Signal]] | ||
* [[:Skype]] | * [[:Skype]] | ||
* [[:Spotify]] | * [[:Spotify]] | ||
Ligne 130: | Ligne 105: | ||
* [[: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 : |
snap find | 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 : |
snap list | 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 | snap remove mon_logiciel | ||
- | conservera le profil utilisateur pendant 30 jours ( instantané, snapshot ) | + | Cela conserve le profil utilisateur (instantané ou « snapshot ») pendant 30 jours. |
+ | |||
+ | La suppression d’un paquet snap et de tous les profils utilisateur associés est commandée par : | ||
snap remove --purge mon_logiciel | snap remove --purge mon_logiciel | ||
- | supprimera complètement le logiciel ainsi que le(s) profil(s) utilisateur(s) relatif(s).\\ | + | |
- | Les instantanés - les derniers profils conservés quand on supprime un snap - sont consultables via | + | 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> | ||
+ | |||
+ | Les instantanés – les derniers profils conservés quand on supprime un snap – sont affichés par : | ||
snap saved | snap saved | ||
- | et effaçables via | + | Ils peuvent être supprimés individuellement en indiquant le numéro d’instantané (ou numéro de « snapshot ») visé : |
- | snap forget numéro_du_snapshot | + | snap forget numéro_snapshot |
- | ==== Pour faire du ménage de manière radicale ==== | + | ==== Faire du ménage de manière radicale ==== |
- | voir : [[https://superuser.com/questions/1310825/how-to-remove-old-version-of-installed-snaps]] | + | 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. |
- | <note important>Attention, cette commande supprime immédiatement tous les snap désactivés</note> | + | |
- | **0. constater la place occupée par les snap :** | + | |
- | <code> sudo du -csh /snap/* | sort -rh</code> | + | |
- | pour chaque version : | + | <note important>Attention : la commande indiquée supprime immédiatement tous les paquets snap désactivés.</note> |
- | sudo du -csh /snap/nomdusnap/* | sort -rh | + | |
- | **1. Vérifier la liste des snap qui seront supprimés** | + | === Évaluer la place occupée par les snap === |
+ | Espace disque occupé par chaque paquet snap installé : | ||
+ | sudo du -csh /snap/* | sort -rh | ||
+ | # affichage trié ici par ordre décroissant sur le volume d’espace disque occupé | ||
+ | |||
+ | Espace disque occupé par chaque version installée d’un paquet snap donné : | ||
+ | sudo du -csh /snap/nom_du_snap/* | sort -rh | ||
+ | |||
+ | === Vérifier la liste des snap qui seront supprimés === | ||
+ | Afficher les paquets snap installés, actifs ou non : | ||
snap list --all | 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é). | + | 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 à 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>LANG=C snap list --all | awk '/disabled/{print}'</code> | + | 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. |
- | **2. suppression** | + | |
- | Si la liste vous convient vous pouvez taper la commande suivante : | + | Afficher la liste des paquets qui seront supprimés : |
- | <code>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</code> | + | LANG=C snap list --all | awk '/disabled/{print}' |
- | Vous pourrez constater le gain de place avec <code>df -h</code> et <code>sudo du -csh /snap/* | sort -rh</code> | + | # 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> | ||
- | ==== Supprimer et bloquer les snaps ==== | + | Références : |
- | Vous ne souhaitez plus utiliser les snaps pour certaines raison : **c'est possible**\\ | + | * [[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]]). |
- | <note important>Rappel : Regardez si une version en [[deb|Paquet Debian]] existe pour les applications dont vous voudriez une alternative</note> | + | * [[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**. |
- | [[https://forum.ubuntu-fr.org/viewtopic.php?id=2053898&p=2|voir la procédure sur un post du forum Ubuntu]] | + | ===== 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> | ||
- | ===== Suivi des paquets installés. ===== | + | 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 : |
- | 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" | LANG=C snap list --all | grep "disabled" | ||
- | Pour chaque ligne trouvée, il faut supprimer le paquet devenu inutile avec la commande | + | Pour chaque ligne trouvée, il faut supprimer le paquet devenu inutile avec la commande : |
snap remove nom_logiciel --revision=9999 | snap remove nom_logiciel --revision=9999 | ||
- | en renseignant le numéro de révision par la bonne valeur qui a été obtenue.\\ | + | 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 ((source: https://askubuntu.com/a/1040131/385361)): | + | 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> | <file - bin/supprime-snap-désactivé.sh> | ||
#!/bin/sh | #!/bin/sh | ||
Ligne 188: | Ligne 197: | ||
</file> | </file> | ||
- | Comme indiqué ci-dessus, la commande flatpak équivalente est la suivante : | + | Comme indiqué ci-dessus, la commande ''flatpak'' équivalente est la suivante : |
flatpak list | flatpak list | ||
- | ===== Les répertoires ===== | + | ===== Répertoires de référence ===== |
- | 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/**.\\ | + | 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**. |
- | 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/'' | + | |
- | * ''/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'' | + | |
+ | 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 Snap, le 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]] | + | |
- | ===== Voir aussi ===== | + | # mise à jour de Snapd |
- | * [[https://snapcraft.io/ | site officiel]] | + | snap refresh --channel=latest/edge snapd |
- | * [[https://open-store.io/| logithèque officielle de snaps pour Ubuntu Touch ]] | + | # déclaration pour Snap d’un chemin personnalisé des dossiers racine utilisateur (ici : /local/home à la place de /home) |
- | * [[https://snapcraft.io/ | logithèque officielle de snaps Canonical]] | + | snap set system homedirs=/local/home/ |
- | * [[https://forum.ubuntu-fr.org/viewtopic.php?pid=22013312#p22013312 | Problème avec un proxy sans authentification]] | + | * 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 : |
+ | |||
+ | snap install --devmode mon_logiciel | ||
+ | |||
+ | * 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. |