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