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.
On installera:
apt install devscripts debhelper debmake dupload
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 <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
.
On ajoute le fichier à installer :
mkdir etc/ touch etc/foobar
Et on déclare ce fichier parmis ceux à copier lors de l'installation:
etc/* etc/
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 <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.
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....
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) ...
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.
Avant de commiter on nettoie les fichiers temporaires engendrés par le build :
dh clean