TD06 - Créer un package avec Débian

Publié le : 24 Janvier 2020 13:54

À propos du packaging Débian

Un paquet Debian est un paquet qui se termine par l’extension “.deb” et qui peut être installé facilement sur tous les systèmes Debian et dérivés comme par exemple Ubuntu. Un paquet Debian (.deb) est un fichier compressé contenant les informations d’installation et les fichiers à installer.

Architecture du projet HangMan

Il faut dans un premier temps créer le répertoire de votre package "hangman" dans notre cas. Ensuite dans le répertoire "hangman", il faut créer le répertoire "DEBIAN".

La première chose à faire est de créer le fichier "control" dans le répertoire "DEBIAN". Le fichier "control" contient les informations du package.

Le fichier "control" contient les éléments ci-dessous :

  • Package : le nom de votre paquet (ex : Hangman)
  • Version : la version de l'application (ex : 1.0.0)
  • Section : les paquet Debian sont réparties en différentes parties : main (logiciels libres), non-free (logiciels non libres), et contrib (logiciels libres qui dépendent de logiciels non libres). Chacune d’entre elles est divisée en sections qui classent les paquets en catégories grossières. Entre autres existent “admin” pour les programmes destinés aux administrateurs, “devel” pour les outils de programmation, “doc” pour la documentation… (ex : base)
  • Priority : décrit l’importance pour l’utilisateur d’installer ce paquet, on peut y assigner plusieurs valeurs “optional” qui convient pour les paquets récents, il existe également “standard”, “required” ou “important” (ex : optional)
  • Architecture : les architectures avec lesquelles votre programme est compatible (ex : all)
  • Depends : les dépendances de votre programme (ex : bash)
  • Maintainer : le nom et l'email de celui qui s'occupe de la création du .deb. (ex : Samuel M <samuel@meyn.fr>)
  • Description : la description de votre paquet (ex : Test de création qu'un paquet Debian)
  • Homepage : l'adresse de votre site internet (ex : http://esiee.fr/)

En plus du fichier "control" qui est obligatoire, vous pouvez ajouter les fichiers ci-dessous dans le répertoire "DEBIAN" :

  • preinst : exécuté avant l’installation
  • postinst : exécuté après l’installation
  • prerm : exécuté avant la suppression
  • postrm : exécuté après la suppression

Dans le répertoire "hangman", vous pouvez mettre maintenant l'arborescence de votre application :

  • 1er exemple :
    • usr/bin/hangman.sh
    • usr/share/hangman.doc
  • 2ème exemple :
    • opt/hangman/hangman.sh

Note

Pour ce tp, telechargé un conteneur Ubuntu pour avoir une distribution vierge

1 docker pull ubuntu
2 docker run -ti ubuntu --name tp6 /bin/bash

Arborescence du projet « Hangman »

  • hangman
    • DEBIAN
      • control
      • preinst
      • postinst
      • prerm
      • postrm
    • usr
      • bin
        • hangman.sh

Vous trouverez ci-dessous le script de génération des répertoires:

 1 # Créer le répertoire projet "hangman"
 2 mkdir hangman
 3 
 4 # Créer le répertoire "DEBIAN"
 5 mkdir hangman/DEBIAN
 6 
 7 # Créer le fichier "control" 
 8 touch hangman/DEBIAN/control
 9 
10 # Créer le fichier "postinst" 
11 touch hangman/DEBIAN/postinst
12 
13 # Créer le fichier "postrm" 
14 touch hangman/DEBIAN/postrm
15 
16 # Créer le fichier "preinst" 
17 touch hangman/DEBIAN/preinst
18 
19 # Créer le fichier "prerm" 
20 touch hangman/DEBIAN/prerm
21 
22 # Créer le répertoire "usr"
23 mkdir hangman/usr
24 
25 # Créer le répertoire "bin"
26 mkdir hangman/usr/bin
27 
28 # Créer le fichier "hangman.sh" 
29 touch hangman/usr/bin/hangman.sh
30 
31 #seulement sur le conteneur base
32 touch /var/lib/dpkg/status

Ensuite, il faut changer les permissions d'accès des fichiers post* et pre* (755 : donne au propriétaire tous les droits, aux membres du groupe et aux autres les droits de lecture et d'accès) :

1 chmod 755 hangman/DEBIAN/post*
2 chmod 755 hangman/DEBIAN/pre*

Permettre l'exécution du script "hangman.sh"

1 chmod +x hangman/usr/bin/hangman.sh

Modifier le fichier control

1 vi hangman/DEBIAN/control

Mettre le contenu ci-dessous dans le fichier "control" :

1 Package: hangman
2 Version: 1.0.0
3 Section: base
4 Priority: optional
5 Architecture: all
6 Depends: bash
7 Maintainer: Samuel MEYNARD <samuel@meyn.fr>
8 Description: Le jeu du pendu
9 Homepage: https://esiee.meyn.fr

Modifier le fichier "/usr/bin/hangman.sh" :

1 vi hangman/usr/bin/hangman.sh

Mettre le contenu ci-dessous dans le fichier "/usr/bin/hangman.sh" :

1 #!/bin/bash
2 echo "hangman.sh : exécution du programme"

Modifier le fichier "preinst" :

1 #édition du fichier
2 vi hangman/DEBIAN/preinst

Mettre le contenu ci-dessous dans le fichier "preinst" :

1 #!/bin/bash
2 echo "preinst : script exécuté avant l’installation"

Modifier le fichier "postinst" :

1 vi hangman/DEBIAN/postinst

Mettre le contenu ci-dessous dans le fichier "postinst" :

1 #!/bin/bash
2 echo "postinst : script exécuté après l’installation"

Modifier le fichier "prerm" :

1 vi hangman/DEBIAN/prerm

Mettre le contenu ci-dessous dans le fichier "prerm" :

1 #!/bin/bash
2 echo "prerm : script exécuté avant la suppression"

Modifier le fichier "postrm" :

1 vi hangman/DEBIAN/postrm

Mettre le contenu ci-dessous dans le fichier "postrm" :

1 #!/bin/bash
2 echo "postrm : script exécuté après la suppression"

Création du paquet "Hangman"

Pour créer le paquet, utilisez la ligne de commande :

1 # installer dpkg (seulement sur le conteneur base)
2 apk add dpkg
3 apk add tar
4 
5 dpkg-deb --build hangman

Installation du paquet "Hangman"

Pour installer le paquet, utilisez la ligne de commande :

1 sudo dpkg -i hangman.deb

Pour information, lors d’une installation avec “apt-get install” par exemple, la machine se contente de trouver le paquet voulu sur les différents dépôts, de le télécharger puis d’effectuer cette même commande pour installer le paquet .deb téléchargé depuis les dépôts.

Résultat de la commande :

1 Sélection du paquet hangman précédemment désélectionné.
2 (Lecture de la base de données... 35868 fichiers et répertoires déjà installés.)
3 Dépaquetage de hangman (à partir de hangman.deb) ...
4 preinst : script exécuté avant l’installation
5 Paramétrage de hangman (1.0.0) ...
6 postinst : script exécuté après l’installation

Vérifier que le fichier est bien installé :

1 ls /usr/bin | grep hangman

Désinstallation du paquet « Hangman »

Pour désinstaller le paquet, utilisez la ligne de commande :

1 apt-get remove hangman

La paquet "hangman" est maintenant désinstallé.

Résultat de la commande :

 1 Lecture des listes de paquets... Fait
 2 Construction de l'arbre des dépendances       
 3 Lecture des informations d'état... Fait
 4 Les paquets suivants seront ENLEVÉS :
 5   hangman
 6 0 mis à jour, 0 nouvellement installés, 1 à enlever et 17 non mis à jour.
 7 Après cette opération, 0 o d'espace disque supplémentaires seront utilisés.
 8 Souhaitez-vous continuer [O/n] ? 
 9 (Lecture de la base de données... 35869 fichiers et répertoires déjà installés.)
10 Suppression de hangman ...
11 prerm : script exécuté avant la suppression
12 postrm : script exécuté après la suppression

Vérifier que le fichier est bien désinstallé :

1 ls /usr/bin | grep hangman

Référence

Video de création d'un projet Debian

Guide d'utilisation de l'éditeur VI ou VIM

 Retour