- Détails
FreeBSD 5.3 est sorti, et j'ai bien évidemment mis à jour mon serveur, non sans mal...
Je n'ai pas eu de mal à mettre à jour le système en soi, grâce aux conseils du FreeBSD Project, et de FreeBSD Cheat Sheets. Je l'ai maintenant fait une bonne dizaine de fois, entre mon propre serveur et les serveurs du boulot. Rarement de problèmes. Et aucun problème qui ne soit réglé en moins de 30 min.
D'ailleurs, soit dit en passant, cette version de FreeBSD est importante, car c'est la première version de FreeBSD 5.x à avoir une branche STABLE. Ce qui veut dire qu'il a atteint un stade où il est considéré comme bon pour production. Oui, je faisais tourner toute ma vie sur le net avec une "beta". 🙂
La mise à jour du système s'est révélée plus importante qu'à ce quoi je m'attendais. Les modifications des fichiers de configuration et des scripts étaient moins nombreuses lors des mises à jour des précédents FreeBSD 5. Du coup, je me suis dit qu'il serait peut-être intéressant de mettre à jour certains ports. Les ports, c'est les logiciels de source tierce (et open source) pré-configurés pour se compiler et tourner sur FreeBSD. Ils sont généralement intercompatible entre les *BSD majeurs (FreeBSD, OpenBSD et NetBSD). C'est pratique, le port se débrouille pour résoudre les dépendances et récupérer les sources pour installer le logiciel. Presque rien à faire, si ce n'est adapter le fichier de configuration. 🙂
Donc je me dis que ça serait pas mal de mettre à jour Python, vu qu'il est le langage de base de Zope, sur lequel repose Plone, qui est le squelette de mon site. FreeBSD 5.3-STABLE est sensé être débarrassé des codes de debug, donc je me suis dit qu'en recompilant Python sur les nouvelles bibliothèques et avec le nouveau GCC, ça accélérerait l'exécution des programmes Python, comme Zope (en même temps, j'en sais trop rien, c'est peut-être des conneries, ce que je raconte 🙂).
Je me lance alors dans une mise à jour automatique de Python par l'utilitaire portupgrade
, qui permet de remplacer un port par une nouvelle version, tout seul comme un grand. L'installation finie, je relance Zope, et là, surprise, il ne démarre pas... Après un petit moment à me demander pourquoi, je me rends compte qu'il se plante au démarrage... 😕
En fait, Python se plante avec le message Fatal error 'Spinlock called when not threaded.' at line 83 in file /usr/src/lib/libpthread/thread/thr_spinlock.c
si je lance Zope. Si je lance un interprèteur Python tout seul, ça va... Mon ami Google m'explique en gros : c'est que le programme (Python) est rattaché à deux bibliothèques proposant des fonctions similaires, et qu'à l'appel d'une fonction particulière, la mauvaise bibliothèque répond et renvoie une erreur (l'explication est nulle, je sais, mais je suis pas assez calé en bibliothèque C et en threads pour tout comprendre... 😕).
La solution du problème réside à trouver le programme défectueux et de le recompiler proprement. Mais voilà, je ne sais pas comment. 🙂 Une solution simple est de recompiler tous les ports par portinstall -fa
. -f
pour forcer la réinstallation des ports (parce que portinstall
ne fait rien si un port est déjà à jour), et -a
, pour lui dire de traiter TOUS les ports installés. Et normalement ça se passe bien, parce que portinstall
vérifie les dépendances de chaque port et construit un arbre de dépendances pour le suivre pas à pas.
Inutile de dire que c'est long, ça m'a mis 6 heures environ à recompiler 190 ports (en même temps, ma pauvre Annis n'est pas un foudre de guerre...).
Le plus amusant, c'est qu'en fait, je n'avais pas besoin de faire tout ça : ce problème de bibliothèque doit être assez courant, parce qu'il existe un fichier de configuration, /etc/libmap.conf
, qui permet de spécifier et de forcer l'utilisation d'une certaine bibliothèque pour un certain programme, ou un groupe de programmes. En forçant donc mon Python à utiliser le libc_r
au lieu du libpthread
(me demandez pas, je ne sais pas, je crois que ça à voir avec si le programme est threadé ou pas), ça remarche nickel. 🙂
Néanmoins, je me suis tapé la mise à jour de tous mes ports, donc je suis super à jour, complètement bleeding edge. Je ne savais même pas qu'il y avait un Zope 2.7.3 de sorti. 🙂 (hé, je savais même pas qu'il y avait un Zope X3 !)
Enfin bon, je peux enfin aller me coucher l'esprit tranquille, mon serveur remarche.
- Détails
Des fois il y a des pubs drôles...
Ces temps-ci, il y a une pub pour un enregistreur de DVD de salon dans les rues. Je ne vais pas m'étaler sur un comparatif/test de l'appareil, je ne le connais, et je ne suis pas spécialement intéressé par ce type d'appareil.
La pub en question (flou "artistique" et reflets garantissant l'anonymat de l'annonceur inclus)
Mais cette pub est notable par le fait que les mecs qui ont fait la maquette de l'affiche n'ont pas regardé la photo, ou n'ont pas compris ce que voulait dire l'appareil :
No comment...
Finalement, c'est plutôt intelligent, ces petites bêtes-là. 🙂
- Détails
On se crève le cul au boulot, et notre travail n'est pas reconnu...
Je me suis moulé le cul en cube la semaine dernière après mon retour d'Oléron pour installer un front-end anti-virus et anti-spam pour notre Exchange 2000. J'ai utilisé Postfix, AMaViSD-new, SpamAssassin et ClamAV. Une bonne petite journée à compiler, installer, configurer, et entraîner (avec 1300 spams issus d'une boîte aux lettres hautement spammée chez nous), et peaufiner (à combien de score de spam on jette ?, quelles extensions on scanne ?, etc...).
Et j'étais super content ce week-end, en regardant le contenu des pires boîtes réceptrices de spams, j'ai vu que j'avais réussi dans mon entreprise, à débarrasser notre organisation de près de 90 % du spam reçu (je dis ça au pif, mais un seul spam en un week-end dans une boîte qui en reçoit des dizaines chaque jour, ça fait bien 90 %, voire plus 😉). Et hop je colle une news dans l'intranet, un peu genre pub de lessive (avec des superlatifs de partout quoi). Mission accomplished. 😉
Et ce matin, j'entends un collègue qui a parlé avec un de nos glorieux élus : "Hé, Machin il dit qu'il a entendu parler d'un truc sur le spam et qu'on devrait essayer, je lui dis que Chong Woo a déjà mis tout ça en place, mais il me répond que "ça marche pas bien"...
Ma réaction (à l'échelle) : "WHAT ?!"
Le pire, c'est que ce glorieux élu fait partie du top ten des spammés, et que justement, j'ai vérifié, il n'en a pas eu un seul pendant tout ce long week-end. PAS UN SEUL. Je saurai à l'avenir que ( "pas un seul spam" == "100 % d'efficacité" ) == "ça marche pas très bien"
. 😕
D'ailleurs, en parlant d'Oléron, c'est encore plus fort : je disais avant qu'on avait agité des antennes à Oléron dans le vent. Bah le mec chargé de l'entretien (un connard confirmé) a appelé mon chef pour lui dire qu'on avait mobilisé ses gars (2 mecs, sympas, eux !) pour un "résultat presque nul" !
Mon chef l'a proprement engueulé, parce qu'il n'a aucune compétance pour évaluer le travail qu'on a fait. En plus, l'objectif principal, connecter le site à Oleane via LS et reconfigurer la tête de pont et le réseau interne, a été atteint avec succès. Mais bon, paraît que ce mec est un chiant fini et qu'il faut pas chercher.
C'est pas facile tous les jours, entre les "ça marche pas très bien" et "résultat presque nul", je me demande ce que je fais de la journée... Du surf ? P'têt bien, ouais... 😉
- Détails
J'abandonne une tradition sur mes sites depuis bien 5 ans : je ne tape plus les caractères accentués en code html...
Depuis que je sais ce qu'est le W3C, et que j'ai lu les spécifications HTML4.0 et XHTML1.0, j'ai toujours essayé de respecter au plus près ces recommendations. Et une de celles-ci est d'écrire les caractères accentués en codes html, pour que l'affichage soit correct pour tous les codages de caractères dans le monde.
Un texte avec les caractères accentués en codes html, ça donne ça :
Ça, c'est un exemple de texte avec caractères accentués : c'est un peu chiant à taper.
Et je tapais mes pages de cette façon. Dans le bloc-notes. 🙂 Mais depuis, je suis passé à Plone. Et ça m'a tout ruiné. Parce que c'est fait par des gens dont la langue ne comporte pas d'accents. Et donc tout plein de champs ne supportent pas les codes html, car ils contiennent du texte brut. Ça comprend les titres, les descriptions, les titres de rubriques et j'en passe. Donc au final ça ne sert pas à grand chose que je me casse le cul, vu que de toute façon, il y aura toujours des caractères accentués non ASCII dans la page.
Donc je tape les accents tel quel dans les pages, maintenant. Je ne désespère pas d'être complètement W3C compliant un jour. 😉