Aller au menu - Aller au contenu

Icône Créer un paquet .deb

Mise à jour : 15/02/2011
Difficulté : Facile Facile Durée d'étude : 30 minutes
128 visites depuis 7 jours, classé 509/786
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.

Code : Bash
1
2
#!/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 :

Code : Console
sudo chmod 755 post*
sudo chmod 755 pre*

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

Code : Bash
1
2
#!/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 :

Code : Console
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 :

Code : Console
sudo dpkg -i nom_du_paquet.deb


Plus qu'à taper :

Code : Console
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 :

Code : Console
sudo apt-get remove nom_du_paquet

Q.C.M.

Sur quelles distributions peut-on utiliser les paquets .deb ?
Quelle commande utilise-t-on pour créer le paquet ?
Comment s'appelle le script qui s'exécute après l'installation du paquet ?

Statistiques de réponses au QCM

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 ? ;)

Partager

26 commentaires pour "Créer un paquet .deb"
Note moyenne : 3.06 / 4 (35 votes)
Pseudo Commentaire
Hors ligne 123456@ # Posté le 17/07/2011 à 22:56:02
Avatar

Il serait bien d'ajouter des informations ...
comme par exemple comment mettre une image (screenshot du programme) ...
(l'image qu'on voit quand on ouvre le deb avec la logiteque ubuntu ...)

Pierre-Yves
 
Hors ligne remontees # Posté le 31/08/2011 à 20:25:26
Vive Symfony2 !
Avatar

Avis : Très bon

Merci, super tutoriel, et vive les carottes volantes :)

Pensez à indiquer les messages qui vous ont aidé et à indiquer vos problèmes résolus ;)
XHTML 1.0/CSS <= 2 : IIIIIIIIII
PHP/MySQL : IIIIIIIIII
Javascript : IIIIIIIIII
HTML5/CSS3 : IIIIIIIIII



Citation
Je sais plus ce que j'écrivais ! :)
Qui que quoi dont où
Alors j'ai activé la prévisualisation automatique !
Citation : Moi
Eh oui

Et maintenant je suis tranquille !



Mon site : http://remontees.free.fr
 
Hors ligne chindit # Posté le 09/09/2011 à 09:48:56
KDE fan
Avatar

Avis : Mitigé

Ville : Namur
Pays : Belgique
Études : Université de Liege

Et si on souhaite installer le programme dans le répertoire utilisateur, dans quel dossier faut-il le mettre?

Image utilisateur
Image utilisateur
 
Hors ligne Le solutionneur # Posté le 20/11/2011 à 10:19:07
La clé du problème...
Avatar

Bon, une erreur d'orthographe : c'est "la version" et pas "le version"

Aussi, pour les dépendances, rajoutes comment on fait pour en mettre plusieurs : un programme n'a rarement besoin que d'une dépendance.

En cours de rédaction d'un tuto de C sur psp !
Fait de l'asm z80 et de l'asm x86.
 
Hors ligne baronsed # Posté le 23/01/2012 à 23:01:43
Avatar

Avis : Décevant

Il faudrait renseigner les champs "architecture" (c'est bien pour le 64/32 bits ? Un programme 64 bits risque d'avoir du mal à fonctionner en 32 bits) et "section". La description n'est pas du tout inutile !

Et il me semble que la gestion des dépendances est un problème majeur sous Linux (théorie des graphes potentiellement bien hardcore), non ?

Voir tous les commentaires