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