====== Création d'un paquet Chapril ====== L'idée est de débianiser les confs et cripts pour faciliter leur application et leur maintenance. Maintenir un logiciel patché se fait par d'autres méthodes. Nous recommandons la lecture du [[https://wiki.debian.org/Packaging|Wiki de Debian]] pour plus d'informations. Le manuel de référence [[https://www.debian.org/doc/manuals/debmake-doc/|est ici]] ===== Dépendances de packaging ===== On installera: apt install devscripts debhelper debmake dupload ===== Création du paquet ===== On va créer un paquet « native » (i.e. qui ne dérive pas d'u packaging existant) ''foobar-chapril'' qui installe le fichier ''/etc/foobar''. mkdir foobar-chapril cd foobar-chapril debmake -n Notez que debmake s'attend à un suffixe avec ''-'' dans le nom. Sans quoi il va échouer. On obtient: . └── debian ├── changelog ├── compat ├── control ├── copyright ├── README.Debian ├── rules ├── source │ ├── format │ └── local-options └── watch Un des fichiers les plus importants est debian/control. On l'édite et on le complète. Source: foobar-chapril Section: admin Priority: optional Maintainer: Chapril Administrator Team Build-Depends: debhelper (>=11~) Standards-Version: 4.1.4 Homepage: http://admin.chapril.org Package: foobar-chapril Architecture: all Depends: ${misc:Depends}, ${shlibs:Depends} Description: Chapril joke. This package provide set of disrutiptive solutions to help Chapril admins to have a ready-to-use software collection. Il est aussi de bon ton d'éditer ''debian/copyright''. ===== Ajout du contenu ===== On ajoute le fichier à installer : mkdir etc/ touch etc/foobar Et on [[https://www.debian.org/doc/manuals/maint-guide/dother.en.html#install|déclare ce fichier]] parmis ceux à copier lors de l'installation: etc/* etc/ ===== Édition du changelog ===== Plutôt qu'éditer à la main ''debian/changelog'' on exécute dch Le format attendu de changelog ressemble à une succession de blocs avec l'élément le plus récent au dessus : foobar-chapril (0.1) stable; urgency=low * Initial release. -- François Poulain Sun, 23 Aug 2020 14:50:56 +0200 On veillera à donner une adresse pour laquelle on peut signer avec GPG. ===== Build ===== On build dans le dossier du paquet: debuild Vous devez être en capacité de signer cette version du paquet. Sans quoi ''debuild'' va s terminer avec une erreur : Now signing changes and any dsc files... signfile dsc foobar-chapril_0.1.dsc No Body gpg: « No Body » a été ignorée : Pas de clef secrète gpg: /tmp/debsign.c0GlLNVE/foobar-chapril_0.1.dsc: clear-sign failed: Pas de clef secrète debsign: gpg error occurred! Aborting.... ==== Essai en local ==== Vu la nocivité du paquet on peut l'essayer localement : $ sudo dpkg -i ../foobar-chapril_0.1_all.deb [sudo] Mot de passe de francois : Sélection du paquet foobar-chapril précédemment désélectionné. (Lecture de la base de données... 507123 fichiers et répertoires déjà installés.) Préparation du dépaquetage de ../foobar-chapril_0.1_all.deb ... Dépaquetage de foobar-chapril (0.1) ... Paramétrage de foobar-chapril (0.1) ... $ dpkg -S /etc/foobar foobar-chapril: /etc/foobar $ sudo dpkg -P foobar-chapril (Lecture de la base de données... 507128 fichiers et répertoires déjà installés.) Suppression de foobar-chapril (0.1) ... Purge des fichiers de configuration de foobar-chapril (0.1) ... ===== Upload sur le dépôt ===== Pour la première fois il va falloir configurer dupload: package config; $cfg{'chapril'} = { fqdn => "admin.cluster.chapril.org", method => "scpb", login => "apt", incoming => "/var/www/apt/reprepro/incoming/", }; Ensuite on passe par dupload pour l'envoi sur le dépôt: dupload --to=chapril ../foobar-chapril_0.1_amd64.changes Un cron se charge toutes les 5 minutes d'importer les nouveaux paquets. ===== Commit dans le git ===== Avant de commiter on nettoie les fichiers temporaires engendrés par le build : dh clean