Créer son paquet Debian
Par
Alp Mestan (Site perso de Alp) (Blog)
Cet article va vous apprendre à créer votre premier paquet Debian, tels
que ceux que vous pouvez installer via aptitude ou directement dpkg.
Introduction
I. Mise en place
I-A. Script myecho
I-B. Arborescence
I-C. Le fichier DEBIAN/control
I-D. Les fichiers DEBIAN/postinst et DEBIAN/postrm
I-E. Les autres fichiers
II. Création du paquet
III. Conclusion
IV. Remerciements
Introduction

Votre distribution préférée vous permet de créer vos propres paquets :-)
A travers cet article, nous allons créer un paquet debian myecho.deb.
Ce paquet installera quelques fichiers à divers endroits du système, dont un script et un fichier utilisé par le script.
Le script, nommé myecho, ira chercher le contenu de /home/vous/.myecho_content et l'affichera dans la
console. Cela ne sert certes pas à grand chose, mais nous nous attacherons à la création du paquet, et non
à la création d'un programme complexe ;-)
Le paquet nécessaire pour faire ses propre paquets est dpkg. Le programme dpkg-deb
qui est contenu dans le paquet dpkg est le programme qui construit un fichier .deb . Cependant,
ne vous inquiétez pas, le paquet est installé par défaut sur votre Debian.
I. Mise en place
Nous allons écrire un petit script bash pour afficher
le contenu du fichier /home/<user courant>/.myecho_content ainsi que
l'arborescence nécessaire pour construire le paquet.
I-A. Script myecho
| Lecture du contenu du fichier |
if [ ! -f ~/.myecho_content ]; then
echo "HELLO WORLD">~/.myecho_content
fi
cat ~/.myecho_content
|
Voilà le script. Un petit commentaire : comme l'installation du paquet est obligatoirement
réalisée en root, le ~ renvoie donc vers /root, ce qui n'est pas notre intention. Il est donc
important de créer le fichier s'il n'existe pas, car sinon la commande cat renverrait une erreur, ne trouvant pas le fichier.
Il nous reste désormais à organiser les fichiers comme il le faut pour
former le paquet.
I-B. Arborescence
Afin de permettre à dpkg de faire un paquet, nous devons respecter une aborescence
particulière. En effet, pour la création d'un paquet tel que le notre,
l'arborescence à créer est simple (selon les paquets, cela peut devenir plus ou moins complexe).
Voici l'arborescence à créer.
| Arborescence |
/home/<vous>/
->myecho/
--->DEBIAN/
----->control (fichier décrivant les informations relatives à notre paquet)
----->postinst (script exécuté après l'installation du paquet)
----->postrm (script exécuté après la désinstallation du paquet)
--->usr/
----->bin/
------->myecho (notre script, exposé ci-dessus)
----->share/
------->doc/
--------->README (informations relatives à l'utilisation de myecho)
--------->copyright
--------->changelog (changements apportés par rapport à la dernière version)
--------->changelog.Debian (idem, mais seulement pour le paquet Debian)
|
Comme vous pouvez le remarquer, il y a le répertoire myecho/DEBIAN
dans lequel on place tous les scripts et informations
relatifs à l'installation du paquet.
Mis à part le répertoire DEBIAN, le contenu du répertoire myecho représente
votre arborescence debian usuelle. C'est à dire que si vous voulez installer
quelque chose dans /var/www par exemple, vous n'aurez qu'à créer les répertoires
myecho/var/www/ et y mettre ce qui devra être installé à cet endroit.
L'arborescence ci-dessus n'est pas très compliquée, du fait que le paquet que nous
souhaitons créer est assez simple. Il est également possible de créer plus de scripts dans DEBIAN/.
I-C. Le fichier DEBIAN/control
 |
Le fichier DEBIAN/control permet de décrire le paquet : dépendances,
description, nom, auteur et mainteneur du paquet ...
|
Je vais vous donner le contenu de notre fichier DEBIAN/control,
et vous le commenter ensuite.
| DEBIAN/control |
Package: myecho
Version: 1.0
Section: base
Priority: optional
Architecture: all
Depends: bash
Maintainer: Mr X <MrX@fun.com>
Description: Echoes the content of /home/<you>/.myecho_content
|
La première ligne donne le nom du paquet. Ensuite, nous avons dans l'ordre
la version, la catégorie dans laquelle mettre le paquet, la priorité d'installation,
les architectures sur lesquelles le paquet fonctionne, les dépendances, le nom et le mail de celui qui maintient
le paquet et pour terminer la description de notre paquet. Cette dernière doit obligatoirement
être suivie d'un retour à la ligne sinon dpkg-deb vous dira qu'il y a eu une erreur lors de l'analyse
syntaxique.
Si vous voulez préciser plusieurs dépendances, il suffit de les séparer par une virgule.
De plus, si vous voulez préciser une version minimale pour un paquet dont dépend le votre,
il suffit d'écrire quelque chose comme cela.
| Dépendance d'une version minimale |
Depends: bash, some_package (>= 1.2)
|
Il existe un programme qui permet de lister les dépendances : dpkg-depcheck.
Il ne sera pas traité ici mais vous pouvez consulter sa
man page :
dpkg-depcheck.
Il y a deux champs que je n'ai pas mentionné ici : Suggests et Recommends.
Recommends est le champs qui renseigne les paquets recommandés pour ajouter des fonctionnalités (comme par exemple optimiser).
Alors que Suggests est le champs qui renseigne plutôt des paquets totalement non-obligatoires mais
qui peuvent être utiles pour votre paquet.
I-D. Les fichiers DEBIAN/postinst et DEBIAN/postrm
Le fichier DEBIAN/postinst est un script qui sera exécuté dès la fin de l'installation
du paquet. De la même façon, on peut créer le fichier DEBIAN/preinst qui sera exécuté avant l'installation.
Après l'installation, nous allons créer un fichier ~/.myecho_content par défaut.
Voici ce que cela donne.
| DEBIAN/postinst |
touch ~/.myecho_content
echo "HELLO WORLD" > ~/.myecho_content
|
Ainsi, après l'installation, lorsque l'on exécutera myecho, nous aurons
"HELLO WORLD" affiché dans la console. Si l'on modifie par la suite le contenu de
~/.myecho_content, on aura alors ce contenu affiché lors de l'exécution.
Le fichier DEBIAN/postrm est un script qui sera exécuté après la désinstallation. De la même façon,
on peut créer le fichier DEBIAN/prerm qui sera exécuté juste avant la désinstallation. Pour nous, il s'agit
simplement de supprimer le fichier ~/.myecho_content, qu'importe le moment où on le fait.
Information supplémentaire : tous les fichiers post* et pre* doivent avoir comme
permission 755. Si les permissions de ces fichiers ne sont pas bonnes, dpkg-deb
vous affichera un avertissement. Pour régler ce problème une bonne fois pour toute lors de la création de
votre paquet, exécutez donc les commandes suivantes.
| Modifications des permissions |
chmod 755 votre_paquet/DEBIAN/post*
chmod 755 votre_paquet/DEBIAN/pre*
|
I-E. Les autres fichiers
Pour les autres fichiers, je vous laisse le soin de vous en occuper.
Vous pouvez en réalité créer autant de fichiers que vous voulez dans usr/share/doc, cependant
ceux que j'ai mentionnés sont les fichiers "minimaux", généralement fournis dans n'importe quel paquet.
II. Création du paquet
Maintenant que notre arborescence de fichiers est prête, il
nous suffit simplement de faire en sorte que dpkg transforme ~/myecho/ en un
paquet debian, au format .deb. Ceci se fait très simplement à l'aide de la commande suivante.
| Construction du paquet |
cd ~
dpkg-deb --build myecho
|
Vous disposez maintenant d'un fichier .deb contenant votre paquet!
Pour l'installer, un simple dpkg -i myecho.deb en root suffit.
Pour le désinstaller, il vous suffit de faire dpkg --remove --purge myecho
en root.
III. Conclusion
Vous avez donc vu comment créer un paquet basique au format debian
à l'aide de dpkg-deb. Il existe des documents officiels apportant bien plus
de précisions sur le fichier control par exemple. Je vous donne donc pour terminer
un lien indispensable :
Guide du nouveau responsable Debian.
IV. Remerciements


Copyright © 2007 Alp Mestan. Aucune reproduction, même partielle, ne peut être faite
de ce site et de l'ensemble de son contenu : textes, documents, images, etc
sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E
de dommages et intérêts.
Cette page est déposée à la
SACD.