Table des matières
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.
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.
- debian/control
Source: foobar-chapril Section: admin Priority: optional Maintainer: Chapril Administrator Team <noc@chapril.org> 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 déclare ce fichier parmis ceux à copier lors de l'installation:
- debian/install
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 :
- debian/changelog
foobar-chapril (0.1) stable; urgency=low * Initial release. -- François Poulain <email_valide@gpg-users.tld> 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
debuild
va s terminer avec une erreur :
Now signing changes and any dsc files... signfile dsc foobar-chapril_0.1.dsc No Body <nobody@noone.tld> gpg: « No Body <nobody@noone.tld> » 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:
- ~/.dupload.conf
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