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 26/02/2024, 14:05]
lyondif02 [Pour faire du ménage de manière radicale] typo. +reformulation
snap [Le 25/05/2025, 12:58] (Version actuelle)
geole [Cas général]
Ligne 24: Ligne 24:
  
 ===== Installer snapd ===== ===== Installer snapd =====
-Snap est pré-installé ​avec toutes les versions d’Ubuntu… en version bureau, mais non sur la version ​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 avec la commande suivante : Vous pouvez l'​installer avec la commande suivante :
-<​code>​sudo apt install snapd</​code>​ +  ​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 :​ + 
-<code bash>systemd-detect-virt +<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 :​ 
-# au besoin, faire précéder la commande de : sudo +  systemd-detect-virt 
-# retour attendu dans le cas de OpenVZ : +  # au besoin, faire précéder la commande de : sudo 
-openvz</​code>​</​note>​+  # 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.
Ligne 57: Ligne 59:
  
 Plus d'​informations,​ dont la liste des options de la commande **snap**, sont disponibles 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''​).\\
-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)):​+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
  
Ligne 63: Ligne 65:
 ==== Cas général ==== ==== Cas général ====
 Mise à jour des applications : Mise à jour des applications :
 +
 +Les applications se mettent ​ à jour automatiquement au démarrage de l'​ordinateur par le [[:​systemd|service]] snapd et régulièrement toutes les six heures. La vérification est possible par cette commande [[https://​forum.ubuntu-fr.org/​viewtopic.php?​pid=22840295#​p22840295|snap refresh --time]].
 +Le déclenchement immédiat peut être provoqué par cette commande
   sudo snap refresh   sudo snap refresh
 ==== Mise à jour du magasin d'​application snap-store ==== ==== Mise à jour du magasin d'​application snap-store ====
Ligne 170: Ligne 175:
   sudo du -csh /snap/* | sort -rh   sudo du -csh /snap/* | sort -rh
  
-==== Supprimer et bloquer les snaps ==== +==== Supprimer et bloquer les paquets snap ==== 
-Vous ne souhaitez plus utiliser les snaps pour certaines raison : **c'est possible** +Vous ne souhaitez plus utiliser les paquets snap pour diverses raisons ? ​**C'est possible**. 
-<note important>​Rappel : Regardez si une version en [[deb|Paquet ​Debian]] ​existe ​pour les applications dont vous voudriez une alternative</​note>​ +<note important>​Rappel : évaluez l’existence d’une version en [[deb|paquet ​Debian]] pour les applications dont vous voudriez une alternative.</​note>​ 
-[[https://​forum.ubuntu-fr.org/​viewtopic.php?​pid=22458861#​p22458861|voir la procédure ​sur un post du forum Ubuntu]] + 
-[[https://​haydenjames.io/​remove-snap-ubuntu-22-04-lts/​|un autre article qui explique en plus comment permettre d'​utiliser apt]] **en Anglais**. +Références :​ 
-===== Suivi des paquets installés===== +  * [[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]]). 
-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.+  ​* ​[[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"​   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 191: Ligne 200:
 </​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''​+
  
-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.+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 snapl'​accès ​est restreint aux répertoires et fichiers de l'​utilisateurstocké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]]\\ + 
-  * Montage des partitions sur des points ​de montage ​accessibles à un logiciel en snap, dans : ''​$HOME/'' ​ou ''/​media/'' ​ou ''/​mnt/''​ ou ''/​run/​media/''​ ( voir [[https://​snapcraft.io/​docs/​interface-management|interface removable-media]] ).\\+  # 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/​ 
 + 
 +  * 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 ==== ==== Extension du confinement ====
-Les applications snap permettent malgré tout d'​utiliser normalement deux autres ​répertoires  ​**/mnt** et **/​media**. +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+Les sous-répertoires peuvent être quelconques. Ils doivent être accessibles par les applications ​standard ​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: +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 :​ 
-<code bash>​snap connections NomApplication | grep  removable</​code>​+  * 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.
  
-La ligne de retour va indiquer l'​état +Pour savoir si une application « mon_application » peut utiliser ces répertoires,​ saisir la commande suivante 
-<​code>​removable-media ​          ​NomApplication:removable-media ​ - </​code> ​ +  ​snap connections mon_application | grep removable
-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+La ligne de retour affichera l'état 
-<code bash>​snap connect NomApplication:​removable-media :​removable-media</​code>​+  ​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.
  
-Si on demande à nouveau l'​état, ​la réponse ​est sans équivoque+Pour activer ​la fonctionnalité,​ il est nécessaire de connaître un mot de passe administrateur. L’appartenance au groupe //sudo// n’est pas requise. Voici la commande à saisir 
-<code bash>removable-media ​          gimp:​removable-media ​ :​removable-media ​                 ​manual</​code>​+  snap connect mon_application:​removable-media :​removable-media 
 +   
 +Si la commande répond "//​erreur :​ trop d'​arguments pour la commande//",​ faire <code bash>​snap connect mon_application:​removable-media</​code>​
  
-Remarque: Le connecteur [[https://​snapcraft.io/​docs/​cups-control-interface|cups-control]] permet de gérer l'​imprimante.+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>​
  
                             -                             -
Ligne 240: Ligne 267:
  
 ===== Voir aussi ===== ===== Voir aussi =====
-  * [[https://​snapcraft.io/​ | site officiel]] +  * [[https://​snapcraft.io/​docs |Canonical Snapcraft]] : documentation officielle. 
-  * [[https://​open-store.io/​| logithèque officielle de snaps pour Ubuntu Touch ]] +  * [[https://​open-store.io/​ |OpenStore]] : ​logithèque officielle de programmes snap pour Ubuntu Touch. 
-  * [[https://​snapcraft.io/​ | logithèque officielle de snaps Canonical]] +  * [[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.
-  * [[https://​forum.ubuntu-fr.org/​viewtopic.php?​pid=22013312#​p22013312 | Problème avec un proxy sans authentification]]+
  • snap.1708952759.txt.gz
  • Dernière modification: Le 26/02/2024, 14:05
  • par lyondif02