IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Créer son paquet Debian

Cet article va vous apprendre à créer votre premier paquet Debian, tels que ceux que vous pouvez installer via aptitude ou directement dpkg.

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Introduction

Image non disponible
Votre distribution préférée vous permet de créer vos propres paquets :-)

À 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

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 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.

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 vôtre, il suffit d'écrire quelque chose comme ceci :

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é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 :

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

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

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