Installer mpd sur un serveur Debian

L’excellent mpd est un logiciel permettant de jouer de la musique à l’aide de son ordinateur. En particulier, il adopte une architecture client/serveur permettant de varier les usages. Son installation sur Debian n’est vraiment pas des plus faciles. Je décris mon périple.

Objectif

Je voulais pouvoir faire du streaming à partir de mon serveur Debian. Le serveur mpd devait pouvoir être piloté à partir de mon téléphone fonctionnant sous Android. L’Android market comprend cinq clients. Deux ne fonctionnent pas du tout, Pmix et ThreeMPD. BitMPC et Droid MPD Client fonctionnent très bien mais ne permettent pas de lire le flux. Ce ne sont que des télécommandes. Reste alors MPDroid. Mais ce n’est pas une sinécure.

Galère

En bon petit utilisateur averti je lance tout simplement apt-get update && apt-get install mpd ncmpc. Je suis encore tout naïf et confiant, je me dis que tout va bien. Je configure /etc/mpd.conf, je lance une chanson sympa, la musique jaillit des enceintes.

Je passe au téléphone. Le lecteur natif d’Android ne lit pas le flux. J’installe MPDroid. Il m’indique au premier lancement que la lecture des fichiers ogg n’est disponible qu’à partir de Froyo. Cela tombe bien, j’utilise Gingerbread, CyanogenMod 7 pour être précis. La musique est là mais le lecteur est très instable. À chaque changement de chanson, MPDroid remplit à nouveau le cache et débute la lecture en plein milieu de la chanson. Pas génial.

Recherche

Puisque la lecture fonctionne bien avec la sortie alsa, j’ai orienté mes recherches vers MPDroid. En testant avec d’autres flux je me rends compte que seuls les flux au format MP3 fonctionnent correctement. Même si je préfère largement la méthode d’OGG pour séléctionner la qualité du flux, je vais devoir m’orienter vers le format propriétaire.

L’attaque des barbus

Pas de problème. Je change la variable encoder de /etc/mpd.conf pour lame. Je relance le serveur. L’encodeur n’est pas reconnu.

Hein?! Pas reconnu?! 99,99999% des ordinateurs encodant de la musique utilisent lame. J’ai l’impression d’avoir loupé quelque chose… Je réinstalle les paquets, j’inspecte les paquets installés. Je comprends bien vite que le support de lame n’est pas compilé dans le binaire de Debian. Il semble que lame soit sous le coup de brevets logiciels. Le célèbre encodeur n’est pas compatible avec le contrat social de Debian.

Bien décidé à écouter de la musique avec mon téléphone, je m’arme de mon gcc et décide de compiler lame et mpd. La procédure est assez habituelle : ./configure –enable-oggvorbis –enable-lame –enable-mpg123 –disable-alsa –disable-oss && make && make install. On relance mpd et en avant la musique!

Moralité

Je me mords encore les doigts de ne pas avoir choisi une distribution source pour mon serveur. On aime rarement administrer son serveur. Configurer sa machine principale aux petits oignons est un sport de geek. Faire de même avec son serveur, c’est moins drôle. Je m’étais dit qu’avec Debian, je n’aurais pas à mettre les mains dans le cambouis. Je pensais utiliser les configurations standards pour ne pas avoir de problème. Je me suis trompé. Les distributions binaires sont obligées de faire des choix cruciaux à la place des utilisateurs. Il arrive forcément un jour où cela ne correspond pas aux attentes. En particulier, le contrat social de Debian se révèle parfois trop strict. C’est une réelle protection pour l’utilisateur. Il est assuré d’avoir une distribution libre jusqu’au bout des ongles. C’est à double tranchant.

De même, je déteste lorsque je découvre dans les abymes d’une mailing list qu’une fonctionnalité a été désactivée parce que «Non, c’est pas bien, il ne faut pas faire cela». Les développeurs ont souvent de très bonnes raisons de faire ces choix. L’ennui, c’est que l’utilisateur le découvre souvent après une mise à jour et doit corriger le problème alors qu’il n’en a pas forcément le temps.

Gentoo me permet de faire tout les choix de compilation, il me prévient de tout les changements pouvant affecter mon système de manière claire et efficace. Je n’ai encore jamais vu cela ailleurs. Gentoo, c’est bien.

Addendum du 18/02/2012

Les problèmes dont je faisais état dans l’article sont maintenant réglés. Ouf, on va enfin pouvoir déguster de nouveaux bugs plus originaux. Eh oui, mon mpd ne décode plus le OGG Vorbis désormais. SAYNUL!!!

Premiers pas avec WordPress

Je découvre petit à petit WordPress et je suis assez bluffé. Le code est assez logique, il est assez facile de l’adapter. Je m’étais lancé dans la traduction en français de l’interface du site. Google n’étant pas forcément mon ami, je n’avais rien trouvé sur le web. J’ai donc fouiné.

À mon grand bonheur, j’ai pu remarquer le support de GNU gettext par WordPress. Ni une, ni deux, je lance mon vim et le tout est traduit en une petite demi-heure. L’arborescence est assez logique mais, faute de documentation, je ne sais pas comment nommer mon fichier .mo. Je le place alors dans wp-include, un des répertoires à la racine du site, contenant les ressources du logiciel. Les mots sont traduits, je suis heureux.

Notons tout de même que certains mots n’ont pas encore leurs index dans le .pot.

C’est en discutant sur le canal IRC #wordpress des serveurs freenode qu’un sympathique utilisateur, anatolbroder, m’a indiqué que je ne devais vraiment pas toucher à ces répertoires. En vérité, WordPress est très modulaire et vous pouvez entièrement séparer les différentes extensions et thèmes du logiciel de base. J’attends la première mise à jour pour voir comment tout cela cohabite.

Résumons. Pour traduire le thème Eleven Twelve de WordPress, il faut éditer le fichier /wp-content/themes/twelveeleven/twelveeleven.pot. La syntaxe du fichier est très claire. Les phrases en anglais sont contenues dans les variables msgid. La ligne suivante définit la variable msgstr dans laquelle il faut indiquer la traduction correspondante. On renomme le fichier en fr_FR.po, un petit coup de msgfmt et voilà! Vous avez votre .mo prêt à être copié dans votre répertoire wp-content/themes/twelveeleven.

À toutes fins utiles, les fichiers de traduction : traduction_twentyeleven.tar.

Migration vers WordPress

Étant évidemment moins doué que l’immense communauté de WordPress, j’ai décidé de migrer le site vers ce logiciel. Je préférais mon système précédent, une batterie de script en zsh qui générait le site à la volée. C’était plus souple, la structure de données était compréhensible, l’implémentation était limpide.

Le revers de la médaille, c’est que je devais programmer chaque nouvelle fonctionnalité. Avec WordPress, tout fonctionne en cinq minutes. L’installation est un jeu d’enfant et les milliers de plugins sont disponibles en un clin d’oeil. Le détail qui tue, c’est l’application android permettant d’administrer le site. Elle est d’excellente qualité contrairement à ce que proposent les autres plate-formes.

Je ne me leurre pas. Cette créature est bien plus longue à charger que mon ancien site. Du coté du client, le code est affreux, absolument pas sémantique. Le magnifique projet du créateur du web est bel et bien mort. Du coté du serveur, je n’ai pas encore exploré les méandres de WordPress mais du peu que j’en ai vu, cela à l’air bien fait.

Le choix de ce logiciel a été mûrement réfléchi. J’avais tenté il y a peu de me lancer avec Drupal. Il a la réputation d’être apprécié des développeurs PHP. Je connais bien ce langage et je m’étais dit que ce logiciel me permettrait de bénéficier des apports de la communauté sans brider ma créativité. Grossière erreur! Cet infâme tas de code spaghetti saupoudré de concepts fumeux séduira sûrement plus l’amateur de casse-tête que l’ingénieur parcimonieux. Autant coder son framework.

De son coté Joomla gagne en popularité. Mes parents l’utilisent et le connaissent bien. C’était un avantage indéniable, ils auraient pu m’aider. L’installation est plus compliquée mais je parviens à mes fins. Je crée un petit article, je regarde la page d’accueil. Tout ce petit monde semble plutôt sympathique même si l’interface d’administration introduit son lot de concepts fumeux. Pour délibérer, je décide de jeter un coup d’oeil au code. Implémenter une petite fonction php de rien du tout implique un véritable parcours du combattant. Il faut éditer des fichiers XML illisibles et se plonger dans un framework abscond. On frôle ici l’obfuscation de code. Joomla atteint la prouesse d’être encore moins compréhensible que Drupal; la documentation est très pauvre. J’ai l’impression de faire face à une somme de hacks compilés au gré des versions.

J’aurais pu essayer CMSMadeSimple qui m’avait l’air tout à fait sympathique. Utilisant des logiciels libres depuis quelques années, je me dis finalement que le mieux, c’est encore de suivre les moutons et d’installer WordPress. Je ne suis pas déçu du résultat. Certes, WordPress est assez rigide quand on ne souhaite pas trop s’y plonger. Un développeur web confirmé aura plus vite fait de forger sa propre solution. WordPress fait une chose et le fait très bien : gérer des weblogs. À vouloir tout faire, les autres solutions de gestion de contenu ne sont que raccomodages de boûts de code sans travail particulier de conception.

La leçon que je tire de tous cela c’est qu’il est souvent payant d’utiliser ce que la majorité des gens utilise. C’est d’autant plus le cas avec les logiciels libres. Il y a un effet de réseau évident, propre à fonder des monopoles. Si soudainement WordPress cessait de fonctionner, des milliers d’entreprises à travers le monde s’empresseraient de corriger le problême et je bénéficierais de ces corrections. Par ailleurs, la présentation par défaut de WordPress est devenue une sorte de standard du web.