Créer un paquet .deb
Last updated on Tuesday, November 19, 2013
  • 30 minutes
  • Facile

Ce cours est visible gratuitement en ligne.

Got it!

Introduction du cours

Si vous êtes sous Linux et que vous programmez, vous avez peut-être déjà eu besoin de distribuer votre programme. C'est relativement simple lorsqu'il ne s'agit que de le distribuer à petite échelle, mais cela peut vite devenir compliqué.
Ce tutoriel vous apprendra donc à distribuer vos programmes à grande échelle grâce au packaging Debian.

Vue d'ensemble

Si vous avez lu le tutoriel de M@teo21 sur Linux, et plus particulièrement la partie sur l'installation de logiciels, vous devriez savoir "en gros" ce qu'est un paquet .deb.
Pour ceux qui n'auraient pas suivi, un paquet .deb est en fait un dossier compressé contenant les éléments à installer et des informations sur le paquet.
Comme l'indique l'extension, un paquet .deb est utilisé sur les systèmes reposant sur Debian. C'est, si vous ne le savez pas encore, une distribution Linux qui a elle-même engendré d'autres distributions. Quelques exemples de distributions reposant sur Debian, utilisant apt-get, et par conséquent les .deb : (schéma par M@teo21)

Image utilisateur

Arborescence

Un paquet Debian est constitué de deux parties notables : un dossier contenant le nom du paquet, ses dépendances, etc. d'un côté, et les fichiers du programme de l'autre.
L'arborescence d'un paquet Debian se présente sous cette forme :

Citation

- dossier_du_paquet/
--- DEBIAN/
----- control
----- preinst
----- postinst
----- prerm
----- postrm
--- usr/
----- bin/
------- votre_programme

Pour l'exemple, j'utiliserai un petit script assez simple en guise de programme.

#!/bin/bash
echo "CAROTTE VOLAAAAANTE !"

(faites pas gaffe, juste un délire :-° )

Le fichier "control"

Tout d'abord, commencez par créer un dossier du nom de votre programme (ou un autre, hein, on s'en fiche un peu ^^ ). Créez ensuite dans ce dernier un dossier nommé "DEBIAN" (tout en majuscules).
Dans le dossier juste créé, ajoutez un fichier nommé "control".
Ouvrez-le avec nano, vim, emacs, ou ce que vous voulez. Évitez cependant les programmes graphiques de type gedit.
Dans ce fichier, tapez les lignes suivantes, en complétant avec les informations nécessaires:

  • Package : le nom de votre paquet. C'est par exemple celui utilisé pour apt-get, lorsque vous écrivez apt-get install firefox.

  • Version : ça se passe de commentaires, le version de votre programme.

  • Section : je ne sais pas vraiment ce que c'est, laissez "base".

  • Priority : l'importance de votre paquet pour le système. La plupart du temps, votre programme sera noté "optional", mais si vous voulez plus de choix, rendez-vous ici.

  • Architecture : les architectures avec lesquelles votre programme est compatible. La plupart du temps, on choisira "all". Pour plus de choix, c'est par ici.

  • Depends : les dépendances de votre programme.

  • Maintainer : le nom et l'email de celui qui s'occupe de la création du .deb. On va dire que c'est vous, hein ! :) Le format est "Votre Nom <votre@email>".

  • Description : la description de votre paquet.

  • Homepage : l'adresse de votre site internet, si vous en avez un.

Dans le cas de mon script, ça donnera quelque-chose comme ça :

Citation : control

Package: carotte
Version: 1.0-sdz
Section: base
Priority: optional
Architecture: all
Depends: bash
Maintainer: outadoc <admin@outadoc.fr>
Description: Affiche un truc inutile dans la console.
Homepage: http://outadoc.fr

Les scripts d'installation/suppression

Vous pouvez, si c'est nécessaire (c'est facultatif), ajouter des scripts qui seront exécutés avant/après l'installation/la suppression du paquet. Ils auront pour nom :

  • 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

Vous pouvez vous en servir pour déplacer des dossiers, afficher des instructions à l'écran, commander des pizzas...
Vos scripts doivent avoir une permission de 755 :

sudo chmod 755 post*
sudo chmod 755 pre*

Je vais, pour ma part, créer un fichier "postinst" :

#!/bin/bash 
echo "Fini ! Fais bien mumuse ! :D"

Le contenu du paquet

Bon, on a fait le plus gros. Mais on n'a toujours pas fait l'essentiel ! En effet, jusqu'ici nous avons donné les informations sur le paquet, mais toujours pas le contenu en lui-même. Avouez que ça serait dommage de s'arrêter ici ! :)
Là, tout dépend du type de programme que vous empaquetez. Si, comme moi, vous n'avez qu'un simple programme ou script, nous allons supposer qu'il nous faut l'installer dans /usr/bin. Et bien dans ce cas-là, c'est très simple ! Placez-vous à la racine de votre paquet, où se trouve le dossier DEBIAN, et créez un dossier usr/, puis un dossier bin/ à l'intérieur du premier. Le principe est le même pour les autres: considérez la racine du paquet comme la racine du disque. Prenons un exemple : votre programme contient un bibliothèque dynamique libcarotte.so. Elle devra normalement être placée dans un dossier usr/lib dans le paquet, pour se retrouver dans /usr/lib une fois le .deb installé.

Compilation et installation

Bon ! Si tout est prêt, on va pouvoir transformer tout ça en un paquet .deb ! :D
Mettez-vous dans le dossier qui contient votre paquet. Ensuite, tapez cette commande en tant que root :

sudo dpkg-deb --build nom_du_paquet

...où nom_du_paquet est le nom du dossier qui contient le dossier DEBIAN et tout le reste.
Et TADAAA ! Un fichier .deb du nom du dossier devrait avoir été créé dans le répertoire courant. Pour l'installer, tapez :

sudo dpkg -i nom_du_paquet.deb

Plus qu'à taper :

outadoc@outadoc-EasyNote-SB87:~$ carotte 
CAROTTE VOLAAAAANTE !

Voilà, vous avez réussi. Bon, j'espère que vous aurez une meilleure idée de programme que moi ! :p
Pour désinstaller le paquet, vous utiliserez la commande :

sudo apt-get remove nom_du_paquet

Vous savez maintenant comment créer un paquet Debian, bien plus simple pour installer un programme que d'utiliser de simples dossiers compressés. De plus, vous pourrez éventuellement envoyer vos paquets sur des dépôts après cela... Alléchant, non ? ;)

How courses work

  • 1

    You have now access to the course contents and exercises.

  • 2

    You will advance in the course week by week. Each week, you will work on one part of the course.

  • !

    Exercises must be completed within one week. The completion deadline will be announced at the start of each new part in the course. You must complete the exercises to get your certificate of achievement.

  • 3

    At the end of the course, you will get an email with your results. You will also get a certificate of achievement if you are a

Example of certificate of achievement
Example of certificate of achievement