Introduction▲
À 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 propres 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▲
#!/bin/bash
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 arborescence particulière. En effet, pour la création d'un paquet tel que le nôtre, l'arborescence à créer est simple (selon les paquets, cela peut devenir plus ou moins complexe). Voici l'arborescence à créer.
/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.
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 vôtre, il suffit d'écrire quelque chose comme ceci :
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és ici : Suggests et Recommends. Recommends est le champ qui renseigne les paquets recommandés pour ajouter des fonctionnalités (par exemple optimiser). Alors que Suggests est le champ 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 :
#!/bin/bash
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.
#!/bin/bash
rm ~/.myecho_content
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 toutes lors de la création de votre paquet, exécutez donc les commandes suivantes :
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 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 :
cd ~ # on se place dans notre répertoire racine utilisateur (non root)
dpkg-deb --build myecho # à exécuter en root
# Vous affiche normalement ceci "dpkg-deb: building package `myecho' in `myecho.deb'."
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 DebianGuide du nouveau responsable Debian.
IV. Remerciements▲
Je remercie l'équipe de rédaction Linux et plus particulièrement Michaël de m'avoir aidé à améliorer cet article.