Outils pour utilisateurs

Outils du site


admin:procedures:creer_paquet_chapril

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 Wiki de Debian pour plus d'informations. Le manuel de référence 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.

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
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 <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
admin/procedures/creer_paquet_chapril.txt · Dernière modification: 2020/08/23 15:41 par fpoulain