Snapcraft

=Introduction=

Snappy est un gestionnaire de paquet développé par Canonical pour les systèmes d'exploitations Linux. Les paquets, appelés snaps(extension .snap), fonctionnent sur toute les distributions Linux. Le système est conçu pour fonctionner via l'internet des objets, le cloud et l'informatique de bureau.

=Gestionnaire de paquet=

Dans les distribution Linux, les logiciels sont installés à travers des paquets pré-compilés, qui sont des archives contenant des binaires de logiciels. Ces outils de gestion des paquets gardent une trace des mises à jour et s'assurer que toutes les dépendances requises sont installées à la place de l'utilisateur.

Les fonctionnalités que la plupart des gestionnaires de paquets fournissent sont :


 * Téléchargement de paquets : Les système d'exploitation fournissent des dépôts qui permettent aux utilisateurs de télécharger les paquets à partir d'une seule source fiable.


 * Résolution des dépendances : Les paquets contiennent des métadonnées qui offres des informations sur les dépendances requises par chaque paquet respectif. Cela permet aux applications d'être installées en une seule commande, sans que l'utilisateur ait à se préoccuper des dépendances.


 * Un format standard : Les paquets sont préparés uniformément dans l'ensemble du système pour faciliter l'installation.


 * Conventions sur la configuration des applications et la disposition des fichiers : La configuration des applications et la disposition des fichiers dans les répertoires doivent respecter des conventions. En utilisant des paquets, les distributions peuvent appliquer une seule norme.


 * Configuration et fonctionnalités supplémentaires liées au système : Des correctifs peuvent être développés pour des système d'exploitation et donc être distribués dans les paquets. Ces modifications peuvent avoir un impact significatif sur l'expérience utilisateur.


 * Contrôle de la qualité : Les développeurs de systèmes d'exploitation utilisent le processus de packaging pour tester et s'assurer que le logiciel est stable et exempt de bugs qui pourraient affecter la qualité du produit.

=Principaux gestionnaire de paquet=


 * Debian Package Management System (DPKG)
 * Advanced Packaging Tool (APT)
 * Aptitude Package Manager
 * Synaptic Package Manager
 * Red Hat Package Manager (RPM)
 * Yellowdog Update, Modified (YUM)
 * Dandified YUM (DNF)
 * Pacman Package Manager
 * Snappy

=Apt vs Snappy=


 * Apt
 * Paquets légers (n’encapsule pas les dépendances)
 * Meilleur intégration des thèmes aux os.
 * Les paquets sont revus par de nombreuses personnes, et pas seulement par l'éditeur.
 * Snappy
 * Les dépendances sont intégrés aux paquets
 * Facilité de déploiement de la dernière version
 * Les paquets sont isolés (suppression de toutes les données et dépendances)
 * L’isolation du paquet empêche de corrompre le système d'exploitation.

=Snappy, Snapcraft, snap=


 * Snappy un logiciel de déploiement et de gestion de paquets développé par Canonical sur Linux
 * Snapcraft est un utilitaire permettant aux développeurs d'empaqueter leurs programme au format .snap
 * Snapcraft facilite la création des paquets en permettant à l’utilisateur de spécifier les dépendance dans la fichier snapcraft.yaml
 * Un paquet .snap contient toutes ses dépendances

=Snapcraft= Snapcraft est un utilitaire permettant aux développeurs d'empaqueter leurs programme au format .snap. Pour cela, il est nécessaire que le projet possède un fichier snapcraft.yml qui contient toutes les dépendances.

Exemple de fichier Snapcraft.yml

=Gestion d'un paquet snap=

Recherche une application via l'utilitaire snappy. Installe l'application via l'utilitaire snappy. Mets à jours l'application via l'utilitaire snappy. Recherche une application via l'utilitaire snappy en précisant le canal(channel) souhaité. Réinstalle l'application à la mise à jour précédante via l'utilitaire snappy. Désinstalle l'application via l'utilitaire snappy.
 * find : sudo snap find  [option].
 * install : sudo snap install  [option].
 * refresh : sudo snap refresh  [option].
 * channel : sudo snap refresh  --channel=[typeDeChannel].
 * revert : sudo snap revert .
 * remove : sudo snap remove .

=Démonstration= Voici le github utilisé pour la démonstration : [Demonstration]

=Auteur=
 * Année : VT2019
 * Sujet : Snapcraft
 * Auteurs : Thibaut ARNOUX | Maxime LORDEY

=Sources=
 * https://www.youtube.com/watch?v=pK4TKT3OaNQ
 * https://doc.ubuntu-fr.org/snap
 * https://www.tecmint.com/linux-package-managers/
 * https://www.reddit.com/r/Ubuntu/comments/a364ii/proscons_of_snap_vs_apt/
 * https://www.linode.com/docs/tools-reference/linux-package-management/
 * https://anglehit.com/ubuntu-snap-just-made-installing-new-apps-and-dependencies-on-16-04-lts-much-easier/
 * https://tutorials.ubuntu.com/tutorial/create-your-first-snap
 * https://dmnfarrell.github.io/software/python-snap
 * https://github.com/gocarlos/python-ubuntu-snap-app-example