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 26/02/2024, 14:35] lyondif02 [Suivi des paquets installés.] corr. ortho. +note de redondance a priori |
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 185: | Ligne 190: | ||
snap remove nom_logiciel --revision=9999 | 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.\\ | 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 197: | Ligne 202: | ||
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 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]]\\ | + | |
- | * 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 244: | 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]] | + |