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édentesRévision précédente
Prochaine révision
Révision précédente
snap [Le 07/05/2019, 16:41] – [Voir aussi] 94.228.185.34snap [Le 22/02/2021, 18:53] (Version actuelle) – [Pré-requis] Coeur Noir
Ligne 1: Ligne 1:
 +{{tag>Bionic application format paquet}}
 +{{ :icons:snapcraft-primary-icon--dark.png?140|Logo snap}}
  
 +====== Format Snap ======
 +
 +Le format **snap** vise à permettre l'installation de nouvelles versions de logiciels dans les systèmes Linux, tout en apportant aux développeurs la facilité de distribution, la fiabilité et la sécurité.
 +
 +Avec le format snap, pour recevoir des nouvelles versions de logiciels, les utilisateurs n'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 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).
 +
 +<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>
 +
 +===== Qu'est ce qu'un snap ? =====
 +
 +Un snap :
 +  * 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.
 +  * 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>
 +
 +===== Installer snapd =====
 +Snap est pré-installé avec toutes les versions récentes d'Ubuntu… en version bureau, mais pas sur la versions 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 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>
 +===== 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.
 +
 +==== 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 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 semble qu'une valeur de  deux est bien suffisante. La valeur par défaut est 3. 
 +  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]].
 +
 +==== Paquets téléchargés hors-dépôts ====
 +**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]].
 +
 +=== Paquets téléchargés manuellement ===
 +
 +== Les paquets précompilés au format *.deb ==
 +
 +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. 
 +
 +
 +== 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, 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 =====
 +Quelques logiciels disponibles sous Snap :
 +
 +  * [[:Blender]]
 +  * Brackets
 +  * [[:Brave]]
 +  * [[croc|Croc, partage de fichiers/répertoires en pair à pair]]
 +  * [[:gravit-designer|Gravit Designer]]
 +  * [[firefox|firefox]]
 +  * fractal, client pour réseau [[Matrix]]
 +  * [[gimp|gimp]]
 +  * Hiri
 +  * [[:handbrake|handbrake]]
 +  * [[:Inkscape]]
 +  * [[:libreoffice|Libre Office]]
 +  * Mailspring
 +  * [[:Minetest]]
 +  * [[okular|Okular : l'afficheur de documents]]
 +  * [[:keepassxc]]
 +  * [[:Skype]]
 +  * [[:Spotify]]
 +  * [[:Supertuxkart]]
 +  * [[:Telegram]]
 +  * [[:VLC]]
 +
 +Quelques Logiciels disponibles sous Snap, en tapant :
 +<code>snap find</code>
 +
 +Liste des logiciels installés sur votre ordinateur, en tapant :
 +<code>snap list</code>
 +
 +
 +===== Suppression =====
 +==== Pour supprimer un paquet : ====
 +
 +<code>sudo snap remove mon_logiciel</code>
 +
 +----
 +
 +==== Pour faire du ménage de manière radicale ====
 + 
 +voir : [[https://superuser.com/questions/1310825/how-to-remove-old-version-of-installed-snaps]]
 +<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 : <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 lignes, Il faut regarder si  un paquet ne dispose pas de plusieurs versions.
 +     snap list --all
 +Au besoin, supprimer le paquet ancien si détection de double.
 +   
 +===== Les répertoires =====
 +Si on est habitué à accéder pour lire/modifier tel ou tel fichier de configuration, de log…, il faut savoir qu'ils ne sont plus dans l'arborescence par défaut du système comme **/etc/** ou **/var/log/**.\\
 +Comme expliqué dans l'article (en) sur freecodecamp.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
 +===== Contournement des répertoires =====
 +Des solutions existent certainement
 +  * La technique en mode  [[https://askubuntu.com/questions/1040194/how-to-use-snap-packages-when-home-is-not-home-user|bind]]
 +  * La technique en mode  [[https://snapcraft.io/docs/snap-confinement|developpement]] 
 +
 +
 +===== Voir aussi =====
 +
 +  * [[https://snapcraft.io/ | site officiel]]
 +  * [[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]]