Debreate : création assistée de paquets Debian

Création de paquets Debian assistée par IHM

GALODE Alexandre

Quel que soit le projet, aussi simple soit-il, survient à un moment donné la question de la diffusion et du déploiement.

Concernant les distributions Debian, la documentation de génération des paquets est très étoffée, et parfois peu lisible même pour un informaticien expérimenté. Les nombreux fichiers à générer et les lignes de commande à saisir peuvent en décourager certains.

Heureusement, il est désormais possible de passer par une interface graphique.

N'hésitez pas à commenter ce tutoriel Commentez .

- Titre : Debreate : création assistée de paquets Debian

- Auteur : GALODE Alexandre

- Parution : 10 janvier 2014

- Mise à jour : 10 janvier 2014

- Public visé :

- Licence : Le contenu de cet article est rédigé par GALODE Alexandre et est mis à disposition selon les termes de la Licence Creative Commons Attribution 3.0 non transposé. Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright ® 2013 Developpez.com.

Sommaire

- I. Introduction

- II. Installation

- III. Bonnes pratiques pour les projets

- IV. Utilisation

- IV-A. Informations basiques

- IV-B. Gestion des dépendances et des conflits

- IV-C. Gestion des fichiers du projet

- IV-D. Génération de scripts

- IV-E. Gestion du log de modification

- IV-F. Gestion de licence

- IV-G. Ajout du logiciel dans le menu système

- IV-H. Génération du .deb

- IV-I. Conversion éventuelle vers d'autres paquets

- V. Conclusion

- VI. Remerciements

I - Introduction

Les distributions Linux Debian sont parmi les plus répandues, et sont réputées pour leur stabilité. C'est notamment sur ces distributions que sont basés Ubuntu, Linux Mint, ou encore certains robots de la NASA.

Les paquets Debian sont connus pour faire partie des plus complexes à créer. En effet, il suffit de regarder de plus près la structure interne d'un .deb (tel qu'ici) pour se rendre compte que pour un projet volumineux, la création d'un paquet se complexifie rapidement.

Afin de simplifier la création de ces paquets, il existe un outil très pratique permettant de passer par une interface graphique : DebReate.

J'ai découvert Debreate tout à fait par hasard alors que je cherchais des informations sur la création des paquets Debian. Je commençais alors à vouloir déployer facilement mes logiciels open source.

Cet outil, peu connu, est développé par Jordan IRWIN. Composé de plusieurs écrans, il vous permettra d'effectuer finement les réglages afin de créer un .deb pleinement fonctionnel.

De plus, son IHM dispose d'une traduction française qui, même si elle n'est pas parfaite, vous rendra son utilisation agréable.

Enfin, cet outil vous permettra de sauvegarder vos paramétrages afin d'éviter de devoir tout ressaisir à chaque nouvelle version.

Ainsi, les utilisateurs de vos logiciels, et/ou vos clients auront simplement à utiliser un gestionnaire de paquets ou utiliser la commande dpkg pour installer ou mettre à jour votre code/logiciel.

Je vous propose un passage en revue de chacun de ces écrans, à travers la configuration d'un de mes logiciels : Pycalcar, une calculatrice monétaire paramétrable.

II - Installation

Pour l'installation, rendez-vous sur le site de l'auteur : Debreate.

Vous y trouverez alors un paquet Debian, plus un paquet de langue française.

Exécutez tout d'abord l'installation du paquet Debreate, puis celui de la traduction française. Vous trouverez alors Debreate dans le menu programmation.

À noter un petit bogue qui apparaît parfois, selon les distributions. Si le logiciel ne se lance pas à partir du menu système, essayez de lancer la commande debreate dans un terminal. Si vous obtenez un message en lien avec « self.md5 », il vous faudra alors modifier le fichier /usr/share/debreate/panbuild.py. Il faudra y remplacer self.md5 = _md5.MD5() par self.md5 = _md5.new().

III - Bonnes pratiques pour les projets

Depuis maintenant un peu plus d'un an que j'utilise ce logiciel, j'ai pu apprendre de quelques-unes de mes erreurs. Aussi, je me permets de vous indiquer ci-dessous ce qu'il en ressort. Il ne s'agit pas d'obligation, mais cela peut vous éviter des problèmes à la génération de votre paquet Debian.

- Le nom du dossier père, contenant votre projet, doit être en majuscules, et dans la mesure du possible sans espace.

- Le nom des fichiers en interne doit être en minuscules, avec éventuellement la première lettre du fichier ou de chaque mot composant le nom du fichier en majuscules. En interne, aucun dossier ne portera le même nom que le dossier père.

- Au sein de votre projet, seuls les fichiers exécutables seront déclarés comme tels.

À présent que votre projet est correctement structuré, rentrons dans le vif du sujet…

IV - Utilisation

IV-A - Informations basiques

Dans ce premier écran, on renseigne les informations basiques et indispensables du projet : nom du paquet, version, coordonnées du mainteneur, type d'architecture si particulière.

Viennent ensuite les informations non indispensables, mais fort utiles, telles la section où rattacher notre paquet (que je renseigne souvent à «  Python  »), la priorité du paquet (que je conseille de laisser à optionnelle sauf cas particulier), et enfin une description brève et détaillée du projet. Ces descriptions seront celles qui apparaîtront dans la logithèque ou dans votre gestionnaire de paquets. Il est donc important de bien les renseigner.

Attention à l'option Essentiel, en bas de l'écran. Cette option indique à l'OS si votre paquet est à considérer comme indispensable au système. Si vous indiquez YES, vous risquez de connaître quelques soucis en cas de désinstallation.

IV-B - Gestion des dépendances et des conflits

Cet écran permet de gérer les dépendances et les conflits de votre projet. Vous disposez d'une partie paramétrage en haut, et d'une partie affichage en bas. Cette dernière vous présente les configurations déjà effectuées.

Dans mon cas, j'ai « suggéré » de disposer de pygtk 2.24.0-3, car mon IHM est en pygtk. Cela fait que cette bibliothèque n'est pas obligatoire, même si elle est indispensable, en réalité, à mon logiciel.

Pour utiliser cet écran, vous indiquez un nom de paquet (attention à la casse), un symbole mathématique (=, <=, >=, <<, >>) et la version relative.

Au niveau des catégories, voici un descriptif complet des options :

Catégories

Description

Dépend de

Paquet obligatoire

Pre-Dépend de

Paquet obligatoire devant être installé avant notre paquet

Recommandé

Paquet recommandé qui sera installé par défaut

Suggestions

Paquet recommandé qui ne sera pas installé par défaut

Améliorations

Dixit le logiciel « Ce paquet peut être utile à un paquet amélioré »

Conflits

Paquet qui sera désinstallé si on installe notre paquet

Remplace

Met à jour le paquet nommé

Rompe

Idem Conflits + reparamétrage partiel système

Quant aux boutons, le bouton vert vous permettra d'effectuer un ajout en tant que nouvelle ligne à part entière, le jaune vous permettra d'effectuer un ajout en tant que OU exclusif sur la ligne sélectionnée, le bouton rouge de supprimer la ligne sélectionnée, et le bouton bleu d'effacer l'intégralité des paquets préconfigurés.

IV-C - Gestion des fichiers du projet

Dans cet écran, on configure les fichiers/dossiers que l'on désire livrer dans le .deb et où les installer. Cet écran est divisé en deux : à gauche notre PC local, à droite notre paquet Debian.

Il nous faudra tout d'abord choisir une destination parmi celles proposées, ou bien en définir une nous-mêmes, tel que je l'ai fait.

On choisira ensuite, sur la gauche, le dossier contenant notre projet, et on utilisera le bouton vert afin de faire un import de l'intégralité du contenu. Si des fichiers doivent être supprimés, on les sélectionnera, puis on utilisera le bouton rouge. Le bouton bleu, lui permettra d'effacer l'intégralité de la sélection.

Tout projet, quel qu'il soit, devra toujours comporter au moins un fichier comme étant exécutable. Les fichiers exécutables apparaîtront en rouge dans l'import, tel ici pycalcar.py.

IV-D - Génération de scripts

On va générer ici nos scripts préinstallation, postinstallation, prédésinstallation, postdésinstallation.

Ces scripts autorisent l'exécution potentielle de code supplémentaire lors de l'installation et/ou de la désinstallation.

On commence par cliquer sur le bouton flèche jaune, ce qui importe les scripts PYTHON exécutables.

On supprime alors les scripts potentiellement superflus et on appuie sur le bouton vert.

Les scripts sont alors générés. Les scripts post-install et pre-remove s'occupent entre autres des liens symboliques. Ces liens sont très importants, car ce sont eux qui permettent de lancer un logiciel quand vous saisissez simplement son nom dans un terminal.

Ces liens symboliques sont généralement créés dans /usr/bin/.

IV-E - Gestion du log de modification

Nous renseignons ici l'évolution du logiciel. Debreate possède pour cela un côté très sympathique: la sauvegarde de création de deb (menu fichier).

Ainsi d'un .deb à un autre, vous ne possédez qu'un minimum d'informations à modifier.

Un simple appui sur le bouton jaune, va permettre de rapatrier l'ensemble des informations précédemment saisies et nécessaires pour cet écran.

Il ne vous reste alors plus qu'à sélectionner le type d'urgence, et renseigner les « changements » de cette nouvelle version.

Ensuite, un appui sur le bouton vert complétera le changelog pour le paquet Debian.

IV-F - Gestion de licence

Dans cet écran on a juste à copier/coller le texte de la licence que l'on a choisie. Dans mon cas le texte de la GPL V3.

IV-G - Ajout du logiciel dans le menu système

Cet écran permet de paramétrer la création d'une entrée dans le menu système. Cela n'est utile que si on utilise un OS graphique. La plupart du temps, on se passera donc de cet écran pour les serveurs.

Pour les autres, il faut d'abord cocher la case créer un menu de lancement système.

Ensuite on renseignera les paramètres suivants

Paramètre

Description

Nom

Nom qui apparaîtra dans le menu

Exécutable

La commande à lancer. C'est le lien symbolique créé par le script post-install sous /usr/bin/. Dans notre cas ce sera pycalcar

Commentaire

C'est le contenu de la bulle d'aide qui apparaîtra lorsque l'utilisateur laissera le pointeur sur le nom du logiciel dans le menu

Icône

C'est le chemin complet de l'icône pour le menu. Attention, il faut ici considérer le logiciel comme installé. Ce sera donc un chemin absolu. Ce peut être un simple png

Type

On le laissera toujours, sauf exception, sur « Application »

Terminal

Sert à indiquer si on désire afficher ou non le terminal lors de l'exécution du script. À mettre à False dans le cas d'une application avec IHM, à True autrement

Notification de démarrage

permet d'indiquer au sein de l'OS si l'application démarre, un peu à l'image des info-bulles système

Encodage

On laissera toujours en UTF-8 pour éviter tout souci

Catégorie

Ce sont les catégories du menu dans lesquelles on désire voir apparaître notre logiciel. Attention, les noms des catégories ne sont pas traduits. Ainsi bureautique est en réalité office. Après avoir choisi une catégorie, on utilisera le bouton vert pour la valider

IV-H - Génération du .deb

Dernier, écran, il permet de générer le paquet Debian. Parmi les options, Créer un fichier md5sums, Détruit l'arbre de construction, Vérifie le paquet avec lintian, Installe le paquet après build.

Ces options, relativement claires, se passent d'explication. Personnellement, je n'utilise toujours que la seconde option, les autres ne fonctionnant pas toujours à la perfection.

Pour lancer la génération, appuyez sur le bouton vert et laissez-vous guider.

Vous voici alors en possession d'un paquet Debian.

IV-I - Conversion éventuelle vers d'autres paquets

Une fois le paquet créé, vous pouvez devoir, ou avoir envie, de générer des paquets pour d'autres distributions.

Pour cela, vous pouvez utiliser l'outil ALIEN, même si je ne le recommande pas forcément. En effet, la conversion peut avoir des effets de bord non prévus, voire aboutir à un paquet non fonctionnel.

Cependant, si vous désirez essayer, sachez que vous pouvez ainsi convertir des .deb en .rpm, .tgz, ou encore .pkg.

alien -r mon_paquet.deb pour convertir en .rpm (distribution Red Hat)

alien -t mon_paquet.deb pour convertir en .tgz (distribution Slackware)

alien -p mon_paquet.deb pour convertir en .pkg (distribution Solaris)

alien -d mon_paquet.rpm pour convertir en .deb depuis un .rpm

V - Conclusion

Si l'on considère le fait que Linux Mint et Ubuntu, sont également basés sur Debian, on se rend alors compte que créer un paquet Debian, c'est toucher une grosse partie de la communauté Linux.

Si vous rajoutez à cela le fait que les paquets Debian sont parmi les plus complexes à créer, on ne peut que comprendre le grand intérêt à disposer d'un logiciel permettant de créer rapidement et facilement, de manière conviviale, un paquet .deb.

Debreate remplit parfaitement ce rôle, et même s'il n'est pas parfait, on ne pourra que le recommander.

VI - Remerciements

Merci aux personnes suivantes pour leur aide pour cet article :

- Zoom61;

- ClaudeLELOUP.