Introduction

Image non disponible
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
Sélectionnez

	#!/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 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
Sélectionnez


	/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
Sélectionnez

	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
Sélectionnez

	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
Sélectionnez

	#!/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.

DEBIAN/postrm
Sélectionnez

	#!/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 toute lors de la création de votre paquet, exécutez donc les commandes suivantes.

Modifications des permissions
Sélectionnez

	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
Sélectionnez

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 pour m'avoir aidé à améliorer cet article.