Tag - debian

Entries feed

Friday 1 January 2010

Nagios et les locales des plugins

Nagios a plein de fonctionnalités intéressantes, mais du côté de la localisation et des encodages de caractères c'est très mal géré. Par exemple on ne peut pas choisir l'encodage des pages web de l'interface (à moins de faire des bidouilles du côté du serveur HTTP), les caractères accentués sont supposés être en ISO-8859 et sont automatiquement convertis en codes HTML ce qui rend impossible leur affichage correct sur un système fonctionnant en UTF-8. Encore, ces problèmes n'affectent pas les fonctionnalités du logiciel. Par contre les plugins s'amusent à exécuter des commandes sans se soucier de la locale utilisée, si bien que la sortie dépend de la langue du système ! À partir de là, les pages de résumé ne ressemblent à rien, Nagiosgrapher marche une fois sur deux etc. Je n'ai pas trouvé comment remédier à ce problème sur le net; dans les rapports de bugs Debian correspondants, on va jusqu'à dire que c'est normal. J'ai essayé de changer la locale de Nagios dans son script init, mais celui-ci se fork et certains résultats sont en anglais alors que d'autres restent en français de manière complètement aléatoire.

Voici ma solution définitive à ce problème : recompiler Nagios avec la modification suivante dans le fichier base/checks.c :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
350,352d349
<       
<       char *current_locale;
<       char previous_locale[40];
762,768d758 
<                       /* Grapsus : run plugins with no locale */
<                       if(current_locale = getenv("LC_ALL"))
<                       {
<                               strncpy(previous_locale, current_locale, 40);
<                               previous_locale[39] = 0;
<                       }
<                       setenv("LC_ALL", "C", 1);
770,774d759 
<                       if(current_locale)
<                               setenv("LC_ALL", previous_locale, 1);
<                       else
<                               unsetenv("LC_ALL");
<                       /* End grapsus run plugins with no locale */

Avec ce patch, Nagios va se mettre en locale par défaut avant d'exécuter un plugin, de sorte que les résultats seront homogènes et facilement lisibles avec Nagiosgrapher.

Voici comment obtenir le code source sous Debian :

apt-get source nagios3
apt-get build-dep nagios3

Une fois le patch appliqué, on reconstruit le paquet avec :

dpkg-buildpackage -uc -us

Tuesday 22 December 2009

Compiler le dernier Wine sur Debian amd64

Pour une raison mystérieuse il n'y a pas de paquet ia32-libfreetype6-dev sur Debian Sid amd64. Voici comment j'ai procédé pour compiler la dernière version de Wine. Je suppose que vous avez déjà les autres paquets nécessaires (n'oubliez pas lib32asound2-dev pour ALSA), plus checkinstall qui permet de fabriquer un paquet Debian pour votre nouveau Wine. Ce paquet est non conforme certes, mais il se désinstalle proprement quand il le faut.

On va d'abord compiler une version 32 bits de freetype dans un dossier à part :

mkdir -p /usr/src/wine/freetype/freetype-i386
cd /usr/src/wine/freetype
wget http://sourceforge.net/projects/freetype/files/freetype2/2.3.11/freetype-2.3.11.tar.gz/download
tar -zxvf freetype-2.3.11.tar.gz
cd freetype-2.3.11.tar.gz 
CFLAGS=-m32 LDFLAGS=-m32 ./configure --prefix=/usr/src/wine/freetype-i386/ --host=i386
make && make install

Maintenant on peut compiler Wine et fabriquer un paquet Debian :

cd /usr/src/wine
wget http://sourceforge.net/projects/wine/files/Source/wine-1.1.35.tar.bz2/download
tar -jxvf wine-1.1.35.tar.bz2
cd /usr/src/wine/wine-1.1.35
PATH=/usr/src/wine/freetype-i386/bin/:$PATH ./configure --with-alsa --disable-tests
make depend && make
checkinstall -t debian

Edit : je compile ici Wine avec le pilote audio ALSA, mais il se peut que vous ayez besoin de Pulse, en particulier sur Ubuntu.

page 2 of 2 -