Vous êtes-vous déjà demandé comment certaines distributions Linux facilitent l’installation de logiciels alors que d’autres peuvent être assez difficiles ? La différence réside dans le format de package qu’ils utilisent. Certaines distributions utilisent des fichiers .deb tandis que d’autres utilisent des fichiers .rpm.
Mais que se passerait-il s’il existait un format de package pouvant être utilisé sur n’importe quelle distribution ? C’est là qu’intervient Snapcraft. Dans ce didacticiel, vous apprendrez à installer et à utiliser Snapcraft pour créer et installer des packages snap sous Linux.
Qu’est-ce qu’un forfait Snap ?
Un package snap est un package d’application autonome qui inclut toutes les dépendances et bibliothèques nécessaires, ce qui facilite l’installation et la mise à jour des applications sans avoir à se soucier des problèmes de dépendance.
Pourquoi utiliser les forfaits Snap ?
L’utilisation de packages snap présente plusieurs avantages :
- Les Snaps sont faciles à installer et à mettre à jour. Vous pouvez installer un package snap avec une seule commande, et les snaps sont automatiquement mis à jour en arrière-plan.
- Les snaps sont sûrs et sécurisés. Étant donné que toutes les dépendances sont incluses dans le package snap, il n’y a aucun risque de conflit de dépendance. De plus, les snaps sont isolés du reste du système, ils ne peuvent donc pas accéder à vos données ou à d’autres applications sur votre système.
- Vous pouvez installer votre application préférée sur n’importe quelle distribution Linux prenant en charge les snaps.
Installer Snapd sous Linux
Snapd est un démon qui permet l’installation et l’utilisation de snaps et doit être installé avant de pouvoir utiliser Snapcraft. Lorsque vous installez Snapd, il installe également un outil d’interface de ligne de commande (CLI) appelé snap
. Vous pouvez utiliser cet outil pour gérer vos snaps.
Pour installer Snapd sur Ubuntu, ouvrez un terminal et entrez la commande suivante, en saisissant votre mot de passe utilisateur lorsque vous y êtes invité.
sudo apt update -y && sudo apt install snapd -y
Sur CentOS, vous devrez activer le référentiel EPEL avant de pouvoir installer Snapd. Pour cela, saisissez d’abord la commande suivante dans votre terminal :
sudo dnf install epel-release -y && sudo dnf update -y
Ensuite, installez Snapd avec la commande ci-dessous. Entrez le mot de passe de l’utilisateur sudo lorsque vous y êtes invité.
sudo dnf install snapd -y
Dans Fedora, installez avec la commande :
Dans Arch Linux, installez snapd depuis AUR. Consultez ces assistants AUR pour vous aider à installer facilement des packages tiers.
Une fois l’installation terminée, exécutez la commande ci-dessous pour activer le snapd.socket
unité systemd. Cela garantit que le démon Snapd démarre automatiquement au démarrage de votre système.
sudo systemctl enable --now snapd.socket
Créez un lien symbolique entre « /var/lib/snapd/snap » et « /snap » pour activer la prise en charge classique de l’accrochage.
sudo ln -s /var/lib/snapd/snap /snap
Maintenant que vous avez installé le Snapd sur votre système Linux, vérifiez la version du Snapd avec la commande ci-dessous. Vous verrez une sortie similaire à la suivante.
Vous pouvez également vérifier l’état du service Snapd avec la commande suivante.
sudo systemctl status snapd
Installer Snapcraft
Avant de pouvoir créer des packages snap, vous devez installer Snapcraft, l’outil utilisé pour créer des packages snap.
Pour installer Snapcraft sur Linux, exécutez la commande suivante. La classic
le drapeau raconte snap
utiliser le classic
mode confinement. Cet indicateur est requis car Snapcraft ne prend pas encore en charge le mode de confinement plus récent et plus restrictif.
sudo snap install snapcraft --classic
Vérifiez que Snapcraft est installé en vérifiant le numéro de version.
Utiliser Snapcraft pour créer un package Snap
Passons maintenant à la partie intéressante : utiliser Snapcraft pour créer un package instantané pour une application. Dans ce didacticiel, nous créons un snap de base hello-world, un snap simple qui imprime « Hello, world! » quand vous l’exécutez. Après avoir terminé ce didacticiel, appliquez le même processus pour créer des snaps pour vos propres applications.
Par souci de simplicité, les étapes ci-dessous vous guideront tout au long du processus de création d’un composant logiciel enfichable dans Ubuntu. Les mêmes étapes peuvent également être appliquées sur d’autres distributions Linux.
Commencer un projet pour votre Snap
Créez d’abord un répertoire de projet pour votre composant logiciel enfichable. Ce sera le répertoire de travail de votre projet et vous aidera à organiser vos fichiers de projet.
- Créez un répertoire de projet nommé « hello » avec la commande suivante :
La -p
le drapeau indique au mkdir
commande pour créer des répertoires parents qui n’existent pas déjà. Dans ce cas, le mysnaps
répertoire sera créé s’il n’existe pas. Vous pouvez mettre tous les futurs snaps dans ce répertoire.
- Déplacez-vous dans le répertoire du projet nouvellement créé et initialisez le projet avec le
init
commande pour créer un fichier nommé « snapcraft.yaml » dans votre répertoire de projet. Vous pouvez utiliser le fichier « snapcraft.yaml » pour configurer votre snap plus tard.
cd ~/mysnaps/hello snapcraft init
- Vérifiez la structure de votre projet avec le
tree
commande, qui imprime une représentation graphique de votre répertoire de projet.
Vous verrez une sortie similaire à la suivante.
Ajout de métadonnées de niveau supérieur
Snapcraft fournit de nombreuses métadonnées que vous pouvez utiliser pour décrire votre package snap. Dans ce didacticiel, nous ajoutons quelques informations de base requises pour chaque composant logiciel enfichable.
- Ouvrez le fichier « snapcraft.yaml » dans votre éditeur de texte préféré. Nous avons utilisé nano dans ce tutoriel.
- Supprimez les lignes d’espace réservé et remplacez-les par le contenu suivant.
name: hello base: core18 version: '2.10' summary: GNU Hello, the "hello world" snap description: | GNU hello prints a friendly greeting. grade: devel confinement: devmode
Ici, nous avons changé les informations de notre snap. La core18
base indique à Snapcraft que vous souhaitez créer un composant logiciel enfichable basé sur Ubuntu Core 18. confinement: devmode
les métadonnées indiquent à Snapcraft que vous souhaitez créer un composant logiciel enfichable non confiné, ce qui est utile à des fins de développement et de test.
Exposer votre application
- Ajoutez les lignes suivantes après le champ confinement dans votre fichier « snapcraft.yaml ». Ici, nous spécifions l’application que nous voulons empaqueter.
apps:
hello:
command: bin/hello
Dans ce cas, nous n’avons qu’une seule application, hello
. La command
La ligne indique à Snapcraft quel binaire exécuter lorsque le composant logiciel enfichable est installé.
Ajout d’une pièce
- Dans une nouvelle ligne, ajoutez ce qui suit
parts
commande:
parts: gnu-hello: source: http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz plugin: autotools
Cela indique à Snapcraft quel logiciel vous souhaitez inclure dans votre package snap.
Pour construire ce composant logiciel enfichable hello-world, vous devez télécharger le code source de GNU Hello, puis utiliser le autotool
plugin pour construire l’application à partir de la source.
- À ce stade, votre fichier snapcraft.yaml ressemblera à celui ci-dessous. Enregistrez et fermez le fichier snapcraft.yaml avant de passer à l’étape suivante.
Construire le package Snap
Maintenant que vous avez défini votre composant logiciel enfichable, il est temps de le construire. Pour créer un package snap, exécutez la commande suivante.
Il vous sera demandé d’installer « multipass » si vous ne l’avez pas sur votre système. Snapcraft utilise le multipasse pour créer un environnement isolé pour créer des snaps au sein d’une machine virtuelle. Taper y et appuyez sur Entrer continuer.
Le processus de construction peut prendre un certain temps, selon votre connexion Internet et les spécifications de votre ordinateur. Une fois le processus de construction terminé, vous verrez quelque chose de similaire à la sortie suivante.
Au final, vous trouverez un « hello_2.10_amd64.snap » dans le répertoire du projet.
Tester le package Snap
Pour tester si votre package snap fonctionne, exécutez la commande suivante :
sudo snap install --devmode hello_2.10_amd64.snap
La --devmode
le drapeau raconte snap
dans lequel vous souhaitez installer le composant logiciel enfichable devmode
ce qui est utile à des fins de test.
Ensuite, exécutez la commande suivante pour exécuter votre application hello-world.
Vous verrez la sortie suivante, qui indique que votre composant logiciel enfichable hello-world fonctionne comme prévu.
Pour voir la version de votre application hello-world, exécutez la commande suivante.
Si vous rencontrez un problème lors du test du composant logiciel enfichable, obtenez plus d’informations en utilisant le --debug
flag et en exécutant la commande suivante.
Questions fréquemment posées
Snapcraft est-il sûr ?
Absolument! Snapcraft est l’outil officiel pour créer des snaps. Il est développé et maintenu par Canonical, la société derrière Ubuntu. Soyez assuré que Snapcraft est sûr et fiable.
Est-ce que Snap ressemble à Docker ?
Oui et non. Snap et Docker sont deux technologies de conteneurs mais ont des objectifs différents. Considérez Snap comme un format de packaging pour votre application et Docker comme un environnement d’exécution pour votre application. Vous pouvez configurer WordPress avec Nginx et PHP dans un conteneur Docker en utilisant les images officielles WordPress et Nginx, mais vous ne pouvez pas créer de package Snap pour votre site WordPress.
Snap est-il meilleur qu’apt ou apt-get ?
Ça dépend. Les deux systèmes ont leurs propres avantages et inconvénients. Apt et apt-get est le gestionnaire de paquets traditionnel pour les distributions Linux basées sur Debian. Il existe depuis longtemps et est très stable, mais il présente quelques inconvénients. Par exemple, apt ne prend pas en charge la gestion des versions et la restauration. Snap, d’autre part, prend en charge à la fois la gestion des versions et la restauration. Donc, si vous souhaitez expérimenter de nouvelles versions de votre application, Snap est la solution. Mais si vous voulez un système stable, apt et apt-get sont le meilleur choix.