Archive for the ‘french’ Category

Autre exemple de migration Sarge->Etch [1]

Saturday, December 29th, 2007

Je n’ai pas oublié mon idée de bloguer sur des migrations Sarge->Etch qui le méritent. Voici donc un deuxième volet avec un petit serveur d’entreprise comprenant les services suivants : OpenLDAP (annuaire, authentification), PostgreSQL, NFS, messagerie (Postfix, Courier-IMAP, Amavisd-new, ClamAV, Bogofilter, DCC, Razor, SpamAssassin, Whitelister, Postgrey, Sympa), Apache/PHP (eGroupWare, webmail Horde, wwsympa, logiciels/sites sur mesure) ainsi qu’un certain nombre de logiciels/scripts sur mesure. J’ai donc profité des jours autour de Noël (période idéale pour les migrations de serveurs d’entreprise) pour m’attaquer à cette tâche.

Tout d’abord, je souligne que cette migration est particulière car j’en profite pour basculer sur du RAID (software) et il s’agit donc de réinstaller un système de base et de gérer les migrations “à la main” (tout en jetant un coup d’oeil sur certains maintainer scripts). Au passage, quelle horreur d’ajouter des disques supplémentaires dans un serveur D3LL format tour quand ça n’a pas vraiment été prévu : une seule paire de glissières, uniquement deux emplacements 3″5, alors que techniquement on pourrait mettre une bonne douzaine de disques… Bref, une fois les soucis matériel gérés (ah oui, la nappe SCSI et la terminaison prévues étaient foireuses), la nuit est bien avancée et je peux couper les services et me lancer dans une réinstallation de base puis re-brancher l’ancien disque et gérer service par service la migration. Voici la liste des points critiques et problèmes rencontrés :

– Au niveau du noyau, aucun problème en vue car je reste avec le même (un noyau personnalisé avec notamment le patch grsecurity). Néanmoins, un petit soucis avec la bibliothèque liblzo notamment utile à lynx (…utile à mutt pour voir les messages HTML et diverses pièces jointes) :

$ lynx
lynx: error while loading shared libraries: liblzo.so.1:
cannot enable executable stack as shared object requires: Permission denied

La solution est de “mettre un coup de pioche” dans la bibliothèque :

aptitude install prelink && execstack -c /usr/lib/liblzo.so.1.0.0

– OpenLDAP
Il faut bien gérer le passage du service slapd qui n’est plus lancé par root mais par un utilisateur openldap. Lors de la migration, il faut donc bien ajuster tous les droits (schémas LDAP, ré-injection des données avec slapadd, etc.) sinon slapd vous “segfault” dans la tête ; et ajuster le pidfile dans le slapd.conf (le mettre dans un répertoire /var/run/slapd/ où l’utilisateur openldap aura les droits pour créer le pidfile, et non plus simplement /var/run/).

– PostgreSQL
J’ai utilisé le paquet pour avoir une version 7.4 et minimiser les impacts potentiels lors de la migration car Sarge utilisait déjà une version 7.4. Un pg_dumpall dans le chroot de la machine arrêtée et un psql plus tard, aucun soucis à relever. Il a ensuite suffi de migrer les fichiers de configuration pg_*.

– Bind
Rien à sigaler de particulier, à part installer le paquet bind9, lancer mon fameux script chroot-bind.sh, et transférer l’ancienne configuration (named.conf, rndc.conf, etc.).

– Messagerie (Postfix, Courier-IMAP, Amavisd-new, ClamAV, SpamAssassin, Whitelister, Postgrey, Sympa)
Un gros morceau mais tout se passe bien dans l’ensemble pour ces logiciels extrêmement utilisés. Pas de soucis pour Postfix en reprenant l’ancien fichier main.cf. Pour info, j’utilise souvent debian-volatile (donc SpamAssassin, ClamAV et Postgrey en sont issus) et un Whitelister patché pour vérifier aussi les reverse DNS. À noter que pour pas mal de logiciels, je suis reparti de la configuration de Etch et j’ai importé mes modifications plutôt que de repartir de ma configuration pour Sarge (pour amavisd-new, il n’y a pas trop le choix de toute façon).

– Sympa
Là, ce fut un gros morceau de la migration, parce qu’il y a beaucoup de changements de la version 4 à la version 5. J’ai donc importé les configurations des listes et Sympa s’est débrouillé pour avaler tout ça et injecter les admins des listes dans PostgreSQL. Pour les archives, il faut bien penser à re-générer toutes les archives (par wwsympa) pour avoir le nouveau format car l’ancien s’affiche très mal (plein de variables sensées ne pas s’afficher apparaissent). Enfin, pour injecter les utilisateurs dans les tables user_table et subscriber_table (pour les listes qui n’utilisent pas LDAP ;), j’ai du ajouter la colonne robot_subscriber à la main avant d’injecter le tout. Mais après avoir bien ajusté la configuration et redémarré plusieurs dizaines de fois Sympa, tout marche ! Il ne reste plus qu’à activer fcgi, ajouter un petit patch trivial, refaire les couleurs (car l’interface web change complètement et les *_color deviennent des color_n) et tout roule ! Résultat ici.

– Apache/PHP
Afin de minimiser les impacts, j’ai choisi de rester en PHP4 (la migration en PHP5 se fera par la suite, une chose à la fois). Pour la migration des VirtualHosts (une bonne vingtaine), tout se passe plutôt bien à part le changement des directives pour l’authentification via LDAP déjà indiqué précédemment. Passons aux webapps. Pour eGroupWare, c’est vite vu car c’est géré indépendamment de Debian (il n’y a d’ailleurs pas de version d’eGroupWare pour Etch). De la même façon, pour les sites/logiciels développés sur mesure, rien à signaler. Reste le webmail Horde où les dernières versions apportent un ergonomie bien confortable (options intégrées dans la sidebar, dossiers virtuels, etc.) et une amélioration notable des performances IMHO. Je n’ai pas utilisé la version d’Etch mais directement la version de sid qui corrige un bug d’affichage pour Opera et IE7.

Dans l’ensemble, ce fut long, mais au final pas d’accrochage majeur. Les premiers retours des utilisateurs semblent concluants : tout marche aussi bien (voire mieux puisqu’il y a de nouvelles fonctionnalités/optimisations).

Debian BSP ce week-end

Tuesday, October 2nd, 2007

Ce week-end (29/30 septembre 2007) avait lieu une Debian BSP (Bug Squashing Party) à Dijon. Le principe est que des contributeurs Debian se réunissent dans la vraie vie et virtuellement (principalement par IRC) pour améliorer la qualité de la prochaine version stable. Concrètement, cela se passe en s’intéressant aux bugs de Debian en proposant des patches, éventuellement des NMU (Non Maintainer Upload) et en déclarant de nouveaux bugs trouvés à cette occasion.

Le bilan de ce week-end est d’une centaine de bugs corrigés dont 38 RC (Release Critical). Au menu, les classiques FTBFS (Fail To Build From Source), les soucis avec les Maintainer Scripts (postrm-depends-nonessential) ou encore les vérifications sur les builds successifs d’un paquet (qa-doublebuild). Les statistiques complètes des bugs ouverts/fermés à cette occasion sont disponibles sur le Wiki Debian.

Pour ma part, je n’ai participé que modestement à distance. J’ai notamment travaillé sur les paquets suivants : nc6 (netcat IPv6), rubrica (gestion de contacts pour GNOME), Nagios (fameux outil de monitoring), newpki-server (un petit serveur pour une PKI) et ldapdns (stockage des enregistrements DNS dans un annuaire LDAP). Je trouve toujours fort intéressant de se focaliser presque aléatoirement sur certains paquets. Outre le côté instructif, cela permet de se rendre compte que pas mal de paquets sont assez mal maintenus ou encore qu’une relative uniformisation des Maintainer Scripts serait judicieuse (pour l’instant, chacun fait un peu sa “sauce” dans son coin).

Un exemple de migration Debian Sarge->Etch [0]

Sunday, September 9th, 2007

Depuis qu’Etch est stable, j’ai effectué quelques migrations Debian Sarge->Etch sur des serveurs en production (un serveur mail en frontal qui m’a appris qu’il était préférable de rebooter sur un noyau sans patch Grsecurity avant de migrer, un serveur mail LDAP/Postfix/Courier/Horde, une dedibox et quelques autres) mais finalement assez peu. Ce week-end, j’avais prévu de mettre à jour mon serveur personnel, ce qui n’est pas forcément trivial car j’ai pas mal de services (web, mail, CVS, SVN, NFS, LDAP…), l’installation date de plus de 4 ans (Woody à l’époque) et plusieurs tests/bidouillages/backports sont en place.

Pourquoi attendre autant ? Théoriquement Sarge reste maintenu jusqu’en avril 2008, donc rien ne presse si l’on a pas besoin des nouveaux logiciels d’Etch. Et surtout, j’applique le principe de précaution d’attendre un certain temps afin d’avoir une grande quantité d’informations disponibles sur Internet (ressources Debian, moteurs de recherche, blogs). Enfin, autant j’ai assez de liberté pour mon serveur personnel, autant je ne suis pas le seul décisionnaire pour des serveurs d’entreprise utiles à plusieurs dizaines ou centaines d’utilisateurs.

Bref, entrons dans le vif du sujet. Mes précautions sont d’effectuer des essais de migration avec un serveur de test, d’avoir des backups tout frais, de couper les services durant la phase de migration et de prévenir les utilisateurs à l’avance des perturbations. Ensuite, j’ai repris les Releases Notes, j’ai adapté mon sources.list puis :

# aptitude update && aptitude upgrade
# aptitude install initrd-tool

Pas de problème particulier à noter jusqu’ici. Ensuite, je dois mettre à jour mon noyau :

# uname -a
Linux serveur 2.4.27-3-k7 #1 Wed Dec 6 00:10:25 UTC 2006 i686 GNU/Linux
# aptitude install linux-image-2.6-k7

Comme prévu, udev a râlé un peu à cause de mon noyau 2.4, mais rien de bien grave. Par contre, cela s’est passé moins bien avec LILO qui a semblé un peu perturbé par tous ces changements :

# lilo
Warning: '/proc/partitions' does not match '/dev' directory structure.
Name change: '/dev/scsi/host0/bus0/target0/lun0/disc' -> '/dev/sda'
Fatal: VolumeID read error: sector 0 of /dev/sda not readable

Je n’avais pas le temps d’investiguer et j’ai décidé de tenter ma chance avec GRUB.

# aptitude install grub && grub-install /dev/hda/ && update-grub

La phase grub-install est très longue mais ça s’est bien passé lors du reboot à la fin de la mise-à-jour.

Ensuite, c’était la mise-à-jour de tout le reste des logiciels :

# aptitude dist-upgrade

Je vous fais grâce des messages/questions debconf et les mises-à-jour des conffiles (à ce sujet, pour info, j’ai pour réflexe de visualiser les différences avant de choisir de garder l’ancienne version ou pas, et je garde des notes pour y revenir en fin de mise-à-jour). Passons maintenant aux divers problèmes rencontrés :

– mod_security

Starting web server (apache2)...
apache2: Syntax error on line 116 of /etc/apache2/apache2.conf:
Syntax error on line 1 of /etc/apache2/mods-enabled/mod-security.load:
Cannot load /usr/lib/apache2/modules/mod_security.so into server:
/usr/lib/apache2/modules/mod_security.so:
cannot open shared object file: No such file or directory failed

Pour des raisons de licence, mod_security n’est plus dans Etch (on peut utiliser les packages upstream si on le souhaite).

– Authentification HTTP avec LDAP

Invalid command 'AuthLDAPEnabled', perhaps misspelled or defined by a module not included in the server configuration

J’ai du adapter mes configurations de la façon suivante :

#AuthLDAPEnabled on
AuthBasicProvider ldap
#AuthLDAPAuthoritative on
AuthzLDAPAuthoritative Off

– Apache-SSL

Syntax error on line 75 of /etc/apache-ssl/httpd.conf:
Invalid command 'TypesConfig', perhaps mis-spelled or defined by a module not included in the server configuration

Il s’agit d’un reste d’une fameuse migration Apache 1->2 ;) Ne l’utilisant plus, je me suis contenté de le supprimer et j’ai ouvert un petit bug pour améliorer le httpd.conf : #441447

– Bugzilla

Could not execute `/etc/bugzilla/localconfig'! ;
make sure permissions are ok. at /usr/share/perl5/Bugzilla/Config.pm line 161.
Compilation failed in require at /usr/share/bugzilla/lib/checksetup.pl line 505.
BEGIN failed--compilation aborted at /usr/share/bugzilla/lib/checksetup.pl line 505.
ERROR: Unable to find /usr/share/bugzilla/debian/params.new

Je n’arrive plus à repoduire ce problème après avoir désinstallé et réinstallé Bugzilla avec dbconfig. On va donc considérer cela comme une solution.

-Authentification LDAP avec Courier

Le fichier authldaprc a légèrement changé de syntaxe :

#LDAP_SERVER  127.0.0.1
#LDAP_PORT 389
LDAP_URI ldap://127.0.0.1

– Serveur NFS

Afin que le service NFS fonctionne correctement, j’ai du temporairement ajouter des autorisations sur udp/817, udp/896 et tcp/4984 sur le firewall du serveur. Je dois probablement revoir mes diverses options pour forcer les ports de mountd, lockd & co. (RPCMOUNTDOPTS, RPCSTATDOPTS et les options lockd.tcpport, lockd.udpport). Vu que cela “juste marche” pour l’instant, j’ajusterai ces paramètres “plus tard”.

– Onduleur sur le port série

Le logiciel Nut ne fonctionnait plus, mais c’était simplement une question de droits sur le périphérique /dev/ttyS0

– Problèmes mineurs

J’obtiens des messages récurrents du kernel :

parport0: FIFO is stuck
parport0: BUSY timeout (1) in compat_write_block_pio
DMA write timed out

Ils sont du à un ancien CUPS qui traînait dans le coin pour une imprimante sur le port parallèle plus branchée depuis un certain temps…

J’ai du remettre Vim en éditeur par défaut :

#  update-alternatives --config editor

Voilà pour cette migration. Rien d’extraordinaire, mais je trouve intéressant de prendre la peine de noter les petits problèmes rencontrés (ne nécessitant pas forcément un rapport de bug) sur mon blog afin d’informer (voire aider ;) d’autres personnes qui pourraient avoir des soucis similaires. Un bon complément des Releases Notes. Je vais essayer de le refaire pour d’autres migrations, et n’hésitez pas à faire de même !

Transtec Levio 210 sous Linux

Monday, June 11th, 2007

Suite au décès de mon précédent ordinateur portable, il a fallu trouver rapidement un remplaçant. Je souhaitais un ultraportable léger, avec une bonne autonomie et bien supporté par Linux. Ayant entendu parler d’une nouvelle gamme d’ordinateurs portables distribués par Transtec, et après étude de l’existant, mon choix s’est porté sur le Transtec Levio 210 : écran 12″, 2 kgs, puces Intel (CPU Intel Core 2 Duo, carte vidéo i945 et carte Wi-Fi 3945ABG), le tout préinstallé sous SUSE Linux (donc assez compatible Linux ;-) pour environ 800 EUR ! Après quelques mois d’utilisation (sous Debian évidemment), tout ce dont j’ai besoin fonctionne et j’en suis très heureux notamment grâce au suspend2(ram|disk) qui marche parfaitement et me change la vie : sympa les uptimes de 30 jours avec un laptop. Vous trouverez sur mon site une page récapitulant sa compatibilité Linux (listée par TuxMobil).

Pense-bête pour les problèmes réseau courants

Tuesday, May 29th, 2007

Si toi aussi, lorsque tu te retrouves devant un problème réseau étrange (ou plutôt derrière un routeur boîteux), tu tentes systématiquement les astuces les plus courantes mais que tu oublies pendant plusieurs minutes celle qui s’applique (comme par hasard), voici le faux script magique pour ta machine Linux :
http://www.gcolpart.com/hacks/rezal-repair

Certes, tu vas me dire que si tu es sur cette page, c’est que tu n’as pas de problème réseau, mais justement, sois prévoyant, just wget it!

Note : ceci sera très utile aux membres du PLUG avec la connexion bancale Club Internet que l’on a lors des réunions mensuelles.

Migration eGroupWare 1.0 vers 1.2

Wednesday, May 9th, 2007

Evolix, société où je travaille, utilise en interne le logiciel eGroupWare depuis presque 2 ans. En fait, jusqu’ici, nous utilisions uniquement le module de calendrier pour gérer les rendez-vous et emplois du temps de chacun. Il faut dire que la version en place, version 1.0 (en paquets pour Debian sarge), possède d’autres modules intéressants pour Evolix, comme le module de gestion de projets, mais ça n’est pas du tout abouti (peu d’interaction avec le module calendrier en particulier). Mais sur eGroupWare 1.2, le module projet a été ré-écrit et offre des fonctionnalités très attendues, comme ces fameuses interactions avec les modules calendrier et Infolog (gestion des tâches/appels/notes).

En juillet 2006, la loooooongue migration vers eGroupWare 1.2 a donc été entreprise. Il y a eu des problèmes techniques à gérer : du code Javascript loin d’être parfait, des bugs étranges selon les versions PHP/(My|Postgre)SQL/LDAP et une migration des données à gérer « à la main » (voir mes scripts de migration du calendrier 1.0 vers 1.2 sous PostgreSQL) ; et il a également fallu faire la gestion (humaine) du changement, ce qui ne fût pas le plus facile ! À vrai dire, même dans une petite boîte et même lorsque les évolutions sont flagrantes (rapidité, ergonomie, fonctionnalités), le pilotage d’un projet de migration n’est pas forcément aisé. D’ailleurs, à ce sujet, la conduite du changement peut parfois apparaître comme une tâche triviale et accessible à tous mais les divers projets que j’effectue me renforcent dans l’idée que l’on ne s’improvise pas comme expert dans ce domaine, et seule des expériences concrètes sont gages de qualité. Et sur ces belles paroles, je retourne gérer mon emploi du temps de ministre sur mon eGroupWare 1.2 désormais migré définitivement depuis quelques jours !

Migration des listes du PLUG

Saturday, May 5th, 2007

Les listes de diffusion du PLUG ont changé de serveur. Hébergées depuis plusieurs années par clubs.gyptis.org (serveur perso. de José Mans), elles sont désormais sur ks36307.kimsufi.com (serveur dédié chez OVH loué par plusieurs amis). Voici les changements :

  • Un domaine spécial lists.plugfr.org est désormais utilisé,
  • La gestion des listes n’est plus faite avec Sympa (qui générait pas mal d’erreurs) mais par Enemies of Carlotta. Certes, on perd l’interface web « sympa » (mais elle était peu utilisée) mais on y gagne en souplesse d’administration (tout se passe par mail et en ligne de commande),
  • Les archives sont désormais 100% publiques (accessibles sous peu).

À noter que, pour éviter d’être intrusif, tout le monde a été désabonné des listes. Chacun doit donc se réabonner ! Pour les détails, voir ici. Si certains trouvent cela trop violent, je répondrais que si une personne ne fait pas « l’effort » d’envoyer un mail vide pour se réabonner, je ne vois pas l’intérêt d’être abonné. À noter que vous pouvez toujours me demander de vous abonner en direct ou sur IRC, si c’est trop compliqué pour vous…

Les limites de Wikipedia ?

Wednesday, May 2nd, 2007

Wikipedia est une encyclopédie consultable sur le web. Avec des milliers de sujets traités dans plusieurs langues, c’est devenu l’un des sites les plus visités au monde. Je l’utilise d’ailleurs quasi-quotidiennement, souvent comme point de départ de recherches plus poussées.

Le principe de base Wikipedia est de permettre à chacun d’écrire/compléter/corriger les articles. Mais cela entraîne un certain nombre de problèmes (conflits, objectivité, qualité, etc.) que les solutions en place (prise de décision, comité, médiation, arbitrage…) ont du mal à résoudre. Je ne vais pas ici parler des conflits géopolitiques ou des articles de piètres qualités, mais plutôt des critères d’admissibilité d’un article.

En effet, des contributeurs se chargent en permanence de demander la suppression des articles qu’ils jugent indésirables, ce qui entraîne une période de demande d’appréciations puis une suppression définitive si les avis négatifs l’emportent. Or, ce mécanisme de modération peut laisser de côté certains articles intéressants. Prenons un exemple concret : j’ai récemment ajouté un article sur le PLUG, le LUG de Marseille. Le principe des LUG (Linux User Group) est plutôt connu dans la communauté des logiciels libres et celui de Marseille (2e ville de France), l’un des premiers en France, semble à sa place dans Wikipédia vu que d’autres LUG français (Montpellier, Bordeaux) et d’ailleurs (GLUA, SVLUG, PLUG, etc.) sont présents (et que la présence du PLUG dans Wikipedia en français se résume pour l’instant à un article… pornographique). Bref, à peine l’article créé que sa suppression est demandée et quelques avis superficiels plus tard, l’article est viré !

Et même après avoir relu en long et en large les critères d’admissibilité des associations, cette décision reste bien décevante. D’ailleurs, j’en ai profité pour mettre en ligne la page supprimée sur wikipedia.plugfr.org : ça ne sera pas perdu pour tout le monde !

Présentation sur Debian Etch au PLUG

Sunday, April 22nd, 2007

Suite à une présentation succinte sur la sortie de Debian Etch au cours de la réunion du PLUG d’avril 2007 (transformée en Etch Release Party pour l’occasion), voici les slides que j’ai utilisé :

Slides PLUG Debian Etch (format HTML/S5)

Note : ces slides ont été réalisés en moins d’une heure, soyez indulgent !

Ne pas manquer la correspondance pour Etch

Tuesday, April 17th, 2007

Comme le témoigne le bug #419688, des utilisateurs ont manqué la correspondance du train pour Etch (ils sont restés dans le TGV testing, devenu lenny/sid depuis la dernière gare) en ne changeant pas assez vite leur sources.list de testing vers etch (ou stable). L’erreur classique est de faire une mise-à-jour en testing avant de modifier son sources.list, car c’est déjà trop tard et sera de plus en plus irrémédiable.
À garder en tête si vous voyez des bugs pour des erreurs de dépendances dans Etch !