Industrialiser l’installation manuelle d’un paquet Debian


Cas d’école : libpam-mysql pour Debian Wheezy

Le paquet libpam-mysql, dans sa version Wheezy, est buggé. Il ne gère pas les authentifications avec un mot de passe haché via une fonction OpenSSL (MD5 ou SHA1) :

pam_mysql - non-crypt()ish SHA1 hash is not supported in this build.

La cause du bug est indéterminée à ce jour, mais il suffit de recompiler le paquet (sans même le patcher) pour que tout fonctionne correctement.

Récupérer les sources du paquet

Une ligne de type « deb-src » dans le fichier « /etc/apt/sources-list » , puis un « apt-get source libpam-mysql » fait l’affaire.

Recompiler le paquet

Il faut installer les dépendances des sources du paquet. Certaines, par exemple, sont « libpam0g-dev » et « libmysqlclient-dev » .

D’autres paquets sont nécessaires pour recréer une archive Debian, comme « dpatch » .

Une fois que tout est installé, il faut éditer le fichier « debian/changelog » et rajouter le commentaire de la modification. C’est ici que le numéro de version du paquet est géré. Par exemple, j’ai rajouté :

pam-mysql (0.7~RC1-4-elysiria1) unstable; urgency=low

  * Recompile

-- Christian Simonetti <jc@elysiria.fr>  Mon, 26 May 2014 09:30:00 +0200

Enfin, l’exécution de « dpkg-buildpackage » à la racine du répertoire de sources « pam-mysql » fera tout pour vous, et génèrera le « .deb » dans le répertoire parent.

Installation du paquet Debian

Installation manuelle

Un simple « dpkg -i libpam-mysql_0.7~RC1-4-elysiria1_amd64.deb » pourrait convenir. Toutefois, on parle ici d’industrialisation, et un système de monitoring pourrait relever le fait que ce paquet ne provient d’aucun référentiel Debian. Par exemple, Xymon me dit :

Other updates (1): apt-get install libpam-mysql libpam-mysql (0.7~RC1-4 0.7~RC1-4+b3)

Création d’un référentiel Debian maison

« reprepro » est le logiciel de gestion de référentiel Debian que j’ai installé.

Pour le configurer, il suffit de créer un répertoire de base qui contiendra tous les paquets Debian, puis un sous-répertoire « conf/ » qui contiendra un fichier texte « distributions » . Par exemple, voici le mien :

Origin: Elysiria
Label: Elysiria
Suite: stable
Codename: wheezy
Version: 7.5
Architectures: amd64
Components: main
Description: Debian patches for Elysiria

Enfin, on insère le paquet préalablement compilé avec la commande :

$ reprepro -Vb /repertoire_racine_referentiel/ includedeb wheezy ~/libpam-mysql_0.7~RC1-4-elysiria1_amd64.deb

Si besoin de retirer le paquet, la commande est également simple :

$ reprepro -Vb /repertoire_racine_referentiel/ remove wheezy libpam-mysql

Reconfiguration Apache

Un VirtualHost supplémentaire est nécessaire :

<VirtualHost *:80>
 ServerName debian.elysiria.fr
 DocumentRoot /repertoire_racine_referentiel/
</VirtualHost>

Reconfiguration APT

Il suffit de rajouter une ligne du genre :

deb http://debian.elysiria.fr/debian/ wheezy main

 Références

How to Setup a Debian Repository

Howto Reprepro

Guide du nouveau responsable Debian


Laissez un commentaire

Votre adresse e-mail ne sera pas publiée.