13 May 2012

Carl Chenet

Informations sur la future version stable de Debian Wheezy 7.0

Suivez-moi aussi sur Identi.ca : http://identi.ca/carlchenet

La publication de la première version alpha du Debian-Installer de la future version stable Debian Wheezy 7.0 par l’équipe du Debian-Installer du projet Debian  nous permet d’en apprendre un peu plus sur les fonctionnalités offertes par cette future version.

  • Pour Debian GNU/Linux :
    • Debian-Installer basé sur le noyau Linux 3.2.16
    • Ext4 sera le système de fichiers par défaut
    • /boot pourra être formaté à l’aide du système de fichiers BtrFS pour Grub2 et Lilo
    • Support par le Debian-Installer de NBD (Network Block Devices)
  • Pour Debian GNU/kFreeBSD
    • Debian-Installer basé sur le noyau kFreeBSD 8.3
    • Nombreuses améliorations dans le support de ZFS
  • Généralement au niveau du Debian-Installer :
    • Détection de davantages d’OS
    • Choix offert lorsque plusieurs images ISO sont détectées sur un média d’installation USB
    • Support de nouveaux matériels
    • Meilleur gestion du réseau

Vous pouvez accéder à la liste exhaustive des nouveautés de cette version alpha du Debian-Installer pour Wheezy. Un grand merci à toute l’équipe du Debian-Installer pour le travail crucial qu’ils effectuent.


13 May, 2012 10:21PM par Carl Chenet

Tuxicoman

Debian 6.0.5 est sortie

La nouvelle version de maintenance de Debian Squeeze (stable)est sortie. Elle intègre des mises à jour de sécurité et des corrections de bug.

De fait, les ISO d'installation de Debian stable sont mis à jour aussi afin d'avoir un système à jour dès la fin d'une nouvelle installation !

 

13 May, 2012 01:10PM par Tuxicoman

12 May 2012

Carl Chenet

Debian à Solutions Linux 2012

Suivez-moi aussi sur Identi.ca : http://identi.ca/carlchenet

L’association Debian France a réservé un stand pour représenter le projet Debian à Solutions Linux 2012 au sein du village associatif.

Cet événement se déroulera à Paris (CNIT à la Défense, Hall Marie Curie) les 19, 20 et 21 juin 2012. L’événement est en semaine (mardi, mercredi et jeudi) et nous cherchons donc à réunir une équipe pour assurer une présence constante sur le stand afin de pouvoir répondre aux questions du public pendant les trois jours.

Si vous connaissez le projet Debian et que vous êtes intéressés pour aider en étant présent sur le stand à un moment ou l’autre de l’événement, n’hésitez pas à vous inscrire sur la page du Wiki Debian dédiée à l’événement, à vous manifester dans les commentaires ou à me joindre directement.

Debian à Solutions Linux 2011

L’année dernière le public était venu nombreux et nous espérons qu’il en sera de même cette année.

 


12 May, 2012 12:15PM par Carl Chenet

10 May 2012

Olivier Berger (pro)

Appel à commentaires sur ADMS.F/OSS 0.3 : vocabulaire pour les méta-données décrivant les logiciels dans les forges

Je reprends ici une news que je viens de publier sur : Un vocabulaire pour les méta-données décrivant les logiciels paru pour appel à commentaires

La période de appel à commentaires du vocabulaire de méta-données ADMS.F/OSS v0.3 vient de commencer.

ADMS.F/OSS est un vocabulaire de méta-données permettant de décrire des logiciels libres ou open-source (F/OSS), qui doit permettre d’explorer, trouver et tirer des liens facilement vers des logiciels sur le Web. Les spécifications visent à réutiliser au maximum des spécifications existantes telles que DOAP, ADMS, et le Trove software map. La version actuelle de ADMS.F/OSS (version 0.3) a été élaborée entre janvier et avril par un groupe de travail qui comptait 45 personnes issuesde 14 pays différents et est proposée aux commentaires du public jusqu’au 2 juin.

Pour plus de détails, merci de vous référer à l’annonce complète en anglais : Vocabulary for software metadata released for public review

Si vous développez ou administrez des forges ou des catalogues de logiciels, alors, ceci vous concerne peut-être.

Merci d’avance.

P.S.: en ce qui me concerne, mes commentaires sur ce draft sont sur : https://joinup.ec.europa.eu/asset/adms_foss/topic/public-comments-admsf/oss-v03#comment-11982

10 May, 2012 03:45PM par Olivier Berger

Roland Mas

Le Debian Handbook est sorti !

Pour ceux qui vivaient dans une grotte récemment, la raison pour laquelle je vivais dans une grotte vient de se terminer : la traduction anglaise du Cahier de l'Admin Debian vient enfin de sortir, sous le titre de “The Debian Administrator's Handbook”. Et pas qu'un peu, puisqu'il est disponible :

  • En version papier chez Lulu ;
  • En consultation en ligne ;
  • En téléchargement aux formats PDF, Epub et Mobipocket ; vu que le site est un poil chargé en ce moment, il est conseillé d'utiliser les torrents (PDF, Epub, Mobipocket, HTML) ;
  • Et il est même disponible directement dans Debian, tant qu'à faire : apt-get install debian-handbook (uniquement dans unstable pour l'instant, mais il va certainement migrer vers les autres distributions).

Le dernier élément est important : le livre est libre (sous licences GPL-2+ et CC-BY-SA-3), et les contributions sont donc possibles et bienvenues.

Pour tous détails supplémentaires, le site web du livre : debian-handbook.info.

Les donations sont toujours possibles (et appréciées !), même après la fin officielle de la campagne de financement.

Raphaël et moi serons vraisemblablement aux RMLL de Genève en juillet, et ça serait bien le diable si nous n'arrivions pas à organiser une séance de dédicaces si le besoin s'en fait sentir…

10 May, 2012 12:47PM

Raphaël Hertzog

La traduction anglaise du Cahier de l’Admin Debian est disponible

The Debian Administrator's Handbook Cover Je suis vraiment content qu’on ait terminé ce projet. Roland et moi avons passé tellement de temps sur ce livre depuis décembre dernier… aussi bien pour la traduction à proprement parler que pour toutes les autres choses que l’on a tendance à oublier: une jolie couverture, une mise en page agréable et irréprochable pour le livre imprimé, la coordination du travail des relecteurs, s’enregistrer comme éditeur pour avoir un numéro ISBN, etc. Je reviendrai sûrement sur certains aspects de cette aventure dans de futurs articles.

En attendant, profitez pleinement de ce livre conforme aux principes du logiciel libre selon Debian:

Consultez l’annonce officielle (il y a une remise pour ceux qui achètent le livre papier dans les 8 premiers jours).

2 commentaires | Vous avez aimé ? Cliquez ici. | Ce blog utilise Flattr.

10 May, 2012 09:45AM par Raphaël Hertzog

09 May 2012

Tuxicoman

Maintenir le plugin Flash à jour sous Debian

Malgré les avancées du HTML5, le plugin Flash(tm) est parfois installé sous Linux pour se simplifier la vie.

La méthode la plus simple, sous Debian, est d'installer le paquet flashplugin-nonfree.

Celui-ci va télécharger et installer pour vous la dernière version du plugin Adobe Flash pour votre navigateur.

Il y a cependant un petit problème... aucune mise à jour du plugin n'est assurée. En effet, aucune nouvelle version du plugin d'Adobe ne vous sera pas proposée par Debian, même si des failles de sécurité sont corrigées.

Vous pouvez vérifier votre version en allant sur cette page. A l'heure d'aujourd'hui la dernière version est la 11.2.202.235

Pour mettre votre plugin Adobe à jour, il suffit de réinstaller le paquet flashplugin-nonfree. Il faut donc faire cela régulièrement et suivre soi-même les sortie du plugin d'Adobe.

Ce comportement de "non mise à jour" est détaillé dans ce rapport de bug Debian.

09 May, 2012 10:25PM par Tuxicoman

07 May 2012

David Curé

Client WMI et Debian Lenny amd64

Pour accèder à des informations de monitoring (voire plus) d'un serveur Windows, il est parfois utile de pouvoir utiliser WMI à partir d'un poste Linux.

L'outil wmic est disponible pour Debian Squeeze sur le site du projet. Devant aussi l'utiliser sous Debian Lenny amd64, je l'ai recompilé, et les paquets sont disponibles dans mon dépôt.


07 May, 2012 08:46AM par David (nospam@example.com)

04 May 2012

Tanguy Ortolo

Signing-party et conférence crypto

Statue of Saint Peter holding the heaven's key

Le lundi 21 mai au soir, à Paris, se tiendra une conférence organisée par Parinux, où j'expliquerai les principes de base de la cryptographie et leur application dans les systèmes SSL et PGP. Cette conférence sera suivie par une signing-party PGP et CAcert.

Pour le déroulement de la signing-party, je vous demanderai de :

  1. générer un paire de clefs si vous n'en avez pas déjà une ;
  2. m'envoyer votre clef publique et vous inscrire ;
  3. imprimer quelques exemplaires de votre empreinte de clef ;
  4. imprimer la liste des participants que je vous enverrai ;
  5. venir munis de tout cela ainsi que d'un stylo et d'une ou deux pièce d'identité.

Conférence

Cette conférence commencera à 18:45. Elle aura pour but de comprendre les principes et les enjeux des systèmes cryptographiques utilisés aujourd'hui. Pour cela, je donnerai :

  1. une brève description de l'histoire de la cryptographie ;
  2. une petite explication des principes mathématiques des cryptosystèmes asymétriques ;
  3. une explication des systèmes de certification ;
  4. une présentation pratique du système OpenPGP avec son implémentation libre GnuPG.

Signing-party

À l'issue de la conférence, vers 20:30, nous procéderons à une signing-party. Il s'agira pour les participants de vérifier mutuellement leur identité afin de certifier leurs clefs PGP.

Cette signing-party sera également l'occasion, pour les utilisateurs de l'autorité de certification SSL CAcert, de certifier leur identité dans le cadre de cette organisation.

Détails pratiques

Il vous est demandé de vous inscrire afin d'évaluer le nombre de participants.

Si vous n'utilisez pas encore PGP, vous pouvez générer une paire de clefs avec la commande suivante, ou en utilisant un outil graphique tel que ceux fournis avec les bureaux GNOME et KDE :

$ gpg --gen-key

Pour faciliter le déroulement de cette signing-party, veuillez m'envoyer votre clef publique. Vous pouvez exporter votre clef dans un fichier avec la commande suivante (indiquez votre adresse à la place de celle de Tintin…), ou en utilisant un outil graphique :

$ gpg --armor --export tintin@example.com

Pour permettre aux participants tardifs de participer, il sera également utile de vous munir de morceaux de papier indiquant votre empreinte de clef ; vous pouvez en générer avec l'outil gpg-key2ps du paquet Debian signing-party, ou copier plusieurs fois la sortie de la commande :

$ gpg --fingerprint tintin@example.com

Le jour venu, vous aurez besoin à cette signing-party d'un exemplaire imprimé par vos soins de la liste des participants que je vous enverrai, ainsi que d'un stylo.

Pour les utilisateurs de CAcert, veuillez venir avec une bonne liasse de formulaires d'accréditation pré-remplis à votre nom (en tant que demandeur et en tant qu'accréditeur pour ceux qui ont assez de points pour cela).

04 May, 2012 05:59PM par Tanguy

Philippe Latu

Introduction aux systèmes GNU/Linux

Vue architecture système

L'édition 2012 de la première présentation d'une série de 6 sur l'introduction aux systèmes GNU/Linux est disponible à la rubrique présentations. J'ai essayé de rendre «le propos» plus attrayant que lors des éditions précédentes réalisées avec Magicpoint.

Cette nouvelle publication a entraîné une révision des règles de construction des documents. La génération du fichier PDF correspondant au document source ODP se fait par un appel direct à libreoffice dans une règle de Makefile.


$(MAIN_DIR)/pdf/%.pdf: %.odp
        @if [ -z $(libreoffice) ]; then echo 'libreoffice indisponible'; exit 1; fi
        # Génération du fichier imprimable PDF
        @$(libreoffice) --headless --invisible --convert-to pdf -outdir $(MAIN_DIR)/pdf $?

Pour la création des images associées à chaque vue, pdftoppm a été abandonné au profit de convert, un des outils de la famille imagemagick. Avec convert, il est possible de contrôler la qualité du rendu des photos et autres graphiques en les «échantillonnant» avec des résolutions différentes. Pour les présantations publiées ici, la règle est la suivante.

$(OUTPUT)/$(BASENAME)-00.png: $(MAIN_DIR)/pdf/$(BASENAME).pdf
        # Génération d'un fichier image par vue
        @if [ ! -d $(OUTPUT) ]; then mkdir $(OUTPUT); fi
        @convert -density 720 $? -resample 150 $(OUTPUT)/$(BASENAME)-%02d.png

Le temps de traitement est le seul défaut de cette méthode.

Toutes les règles de traitement sont données dans le fichier Makefile.Rules.


Voilà pour ce court billet. Comme pour tous les autres documents du site, si vous avez des remarques sur la forme et le contenu, n'hésitez pas !

Voir la présentation ...

04 May, 2012 05:15PM par Philippe Latu

01 May 2012

Raphaël Hertzog

Mes activités Debian en avril 2012

Voici le récapitulatif mensuel de toutes mes activités gravitant autour de Debian. Si vous faites partie des personnes ayant fait un don pour soutenir mon travail (186,38 €, merci à tous !), c’est l’occasion de constater ce que je fais de votre argent. Sinon, c’est toujours quelques nouvelles intéressantes sur l’avancement de mes différents projets.

Nouvelles de Dpkg

Pour la première fois depuis plusieurs années, il y a eu une nouvelle version de dpkg (1.16.3) dont le changelog ne mentionne pas mon nom. Les 3-4 commits que j’ai effectués ne méritaient pas une entrée de changelog. Je dois reconnaître qu’il m’a été assez facile de mettre dpkg de côté compte tenu de l’ambiance actuelle avec Guillem et de comment j’ai été occupé avec mes autres projets.

Faire profil bas pendant un certain temps ne peut pas faire de mal. Mais je n’ai pas l’intention d’arrêter de contribuer à dpkg. Au contraire même, c’est une activité que j’apprécie beaucoup (habituellement).

Travail d’empaquetage

J’ai mis en paquet la version 3.0.0 de SQL-Ledger, et plus tard dans le mois j’ai parrainé le paquets de LedgerSMB, un fork de SQL-Ledger qui — contrairement à ce dernier — est développé comme un vrai projet libre.

J’ai également empaqueté la version 0.56 de Zim, et mis à jour WordPress en version 3.3.2 avec ses nombreuses corrections de sécurité.

The Debian Administrator’s Handbook

Comme depuis plusieurs mois, la plus grande partie de mon temps a été consacrée à la traduction anglaise du Cahier de l’Admin Debian. La grande nouvelle est que le fond de libération a été complété (merci à l’École Ouverte Francophone qui a fait le don nécessaire pour compléter le fond). Cela veut donc dire que le livre sera publié sous des licences compatibles aux principes du logiciel libre selon Debian (GPL-2+ / CC-BY-SA 3.0) dès sa publication.

On espère le publier la semaine prochaine (c’est-à-dire entre le 7 et le 11 mai). La sortie PDF pour le livre imprimé est quasiment prête. Il reste du travail sur la sortie HTML/EPUB et on doit aussi prépaper la publication des sources…

Souhaitons que tout se déroule comme prévu.

Merci

Au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Debian Activities in April 2012.

Aucun commentaire pour le moment | Vous avez aimé ? Cliquez ici. | Ce blog utilise Flattr.

01 May, 2012 02:02PM par Raphaël Hertzog

30 April 2012

Emilien Macchi

Openstack Essex – Guide for Ubuntu 12.04

It has been a long time since I didn’t write something here.

But today, I’m proud to release my first documentation on OpenStack.

I’ve been working for three weeks with StackOps for my internship, and my work is about Quantum (Networking as a service in OpenStack).

 

It was quite difficult to have a working infrastructure because Quantum is only in « incubation » for Essex release. That’s why I release a documentation in which anyone can test this fabulous software.

You can find this documentation with all configuration files & scripts here.

Or read it directly here :

<iframe class="gde-frame" scrolling="no" src="http://docs.google.com/viewer?url=http://my1.fr/blog/wp-content/uploads/2012/05/How-to-setup-OpenStack-Essex.pdf&amp;hl=en_US&amp;embedded=true" style="width:100%; height:500px; border: none;"></iframe>

Download (PDF, 320.87KB)

 

Share & Enjoy !

N.B. : Thank’s to StackOps team for the welcome in Madrid.

Please let me know if you can find some mistakes, and of course I will correct it.

30 April, 2012 07:43AM par Emilien

25 April 2012

Vincent Bernat

XBMC Eden & Debian Wheezy

Il y a deux ans, je me suis monté un HTPC pour y faire tourner XBMC. À l’époque, j’étais parti sur une installation minimale de Ubuntu Lucid pour y installer les paquets officiels de l’équipe XBMC. Depuis, la version Eden a été publiée and XBMC a fait son apparition dans Debian unstable. C’était donc une excellente occasion de faire le saut.

Logo non officiel pour XBMC Eden

En bref : L’installation de XBMC sur une Debian Wheezy est extrêmement simple. La seule difficulté majeure est la configuration de la télécommande : soit le profil par défaut est satisfaisant, soit il est nécessaire de s’enfoncer des les arcanes pour y apporter les modifications nécessaires.

Ma configuration matérielle est la suivante :

  • un boîtier Antec Micro Fusion 350 comprenant un combiné récepteur infra-rouge/afficheur LCD SoundGraph iMON1,
  • une carte mère Zotac ION-ITX-D-E incluant un processeur Intel Atom 330 et une puce nVidia ION,
  • un amplificateur home cinéma Onkyo connecté via HDMI,
  • une télécommande Logitech Harmony 555.

Installation

Installer Debian Wheezy

L’installation d’une Debian Wheezy2 ne présente aucune difficulté. Obtenir une clef USB amorçable depuis l’image ISO de l’installeur Debian pour Wheezy est devenu très simple :

$ sudo dd if=debian-testing-i386-netinst.iso \
>         of=/dev/disk/by-id/usb...

L’installation s’est déroulée sans problème à l’exception de l’incapacité de GRUB de s’installer sur le disque. Il s’agit d’un bug connu ne se produisant qu’en présence de partitions LVM. J’espère que celui-ci sera corrigé pour la publication de Wheezy.

Cela n’a que peu de rapport avec XBMC, mais je voulais également en profiter pour tester systemd qui pourrait devenir l’init par défaut dans Debian (du moins dans Debian GNU/Linux). Voici un extrait du README.Debian :

systemd peut être installé aux côtés de sysvinit et, par défaut, ne change absolument rien au comportement du système. C’est voulu. Pour tester systemd, il convient d’ajouter init=/bin/systemd à la ligne de commande du noyau et de redémarrer. Une autre solution est d’installer le paquet systemd-sysv.

Le système final démarre en environ 15 secondes.

Configurer X

Le décodage vidéo dans le pilote nouveau en est encore à ses balbutiements. Il est donc encore nécessaire de se rabattre sur le pilote propriétaire de NVIDIA. Le fichier /etc/apt/sources.list doit être complété pour ajouter les dépôts contrib et non-free. Il faut ensuite installer les paquets xserver-xorg-video-nvidia, nvidia-vdpau-driver et xserver-xorg.

Voici le contenu de mon /etc/X11/xorg.conf.d/nvidia.conf :

Section "Device"
    Identifier     "NVidia ION"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    Option         "HWCursor" "False"
    Option         "NoFlip" "False"
    Option         "FlatPanelProperties" "Scaling = Native"
    Option         "DynamicTwinView" "False"
    Option         "ConnectedMonitor" "DFP-1"
    Option         "CustomEDID" "DFP-1:/etc/X11/edid.bin"
    Option         "NoLogo" "True"
EndSection

Section "Extensions"
    Option "Composite" "false"
EndSection

L’option CustomEDID permet d’indiquer au pilote d’utiliser l’EDID indiqué notamment si l’ampli est éteint. Il est possible d’obtenir celui adapté à votre ampli en utilisant la commande get-edid issue du paquet read-edid.

Installer XBMC

Grâce au travail d’Andrés Mejía, XBMC est désormais disponible officiellement dans Debian Wheezy. Pour l’installer, il suffit de taper aptitude install xbmc. J’ai placé ce fichier xbmc.service dans le répertoire /etc/systemd/system pour l’intégration de XBMC dans systemd :

[Unit]
Description = XBMC media center
After = syslog.target

[Service]
User = xbmc
Group = xbmc
Type = simple
ExecStart = /usr/bin/xinit /usr/bin/xbmc-standalone -- :0
Restart = on-failure

[Install]
WantedBy = multi-user.target

La commande systemctl enable xbmc.service permet d’activer ce service au démarrage. Il convient également d’autoriser l’utilisateur xbmc de lancer X. Pour se faire, il suffit d’exécuter dpkg-reconfigure -plow x11-common et d’autoriser tout le monde à lancer le serveur X. sudo peut constituer une alternative.

Configuration

Son

Bien que je souhaiterais utiliser PulseAudio, je veux également que la conversion stéréo vers 5.1 soit effectuée par l’ampli. Avec PulseAudio, l’ampli reçoit un signal sur six canaux et n’effectuera aucune conversion. J’opte donc pour l’utilisation directe d’ALSA.

Activer les sorties numériques constitue la première étape :

$ amixer scontrols | grep IEC958
Simple mixer control 'IEC958',0
Simple mixer control 'IEC958 Default PCM',0
Simple mixer control 'IEC958',1
$ amixer sset 'IEC958',0 unmute
$ amixer sset 'IEC958 Default PCM',0 unmute
$ amixer sset 'IEC958',1 unmute
$ sudo systemctl stop alsa-utils.service

L’ordre des différents canaux est incorrecte. Il est possible de le corriger avec le fichier /etc/asound.conf suivant où est déclarée une nouvelle sortie, hdmi2 :

pcm.hdmi2 {
  type asym
  playback.pcm {
    type plug
    slave.pcm "remap-surround51"
  }
}

pcm.!remap-surround51 {
  type route
  slave.pcm "hdmi"
  ttable {
    0.0= 1
    1.1= 1
    2.4= 1
    3.5= 1
    4.2= 1
    5.3= 1
  }
}

On indique ensuite à XBMC d’utiliser cette sortie au lieu de celle par défaut. La sortie hdmi classique doit cependant toujours être utilisée pour les signaux type AC3. La commande speaker-test -D hdmi2 -c 6 permet de vérifier le bon ordonnancement des canaux.

Afficheur LCD

L’afficheur LCD intégré dans le SoundGraph iMON est supporté par le module noyau imon ainsi que par le paquet lcdproc. Voici les modifications qu’il faut apporter au fichier /etc/LCDd.conf pour le faire fonctionner :

[server]
Driver=imonlcd
ServerScreen=off

[imonlcd]
Protocol=1
OnExit=2
Contrast=400

Télécommande

Il s’agit de la partie la plus complexe. J’utilise une télécommande universelle Logitech Harmony. Le support pour Linux est satisfaisant : la configuration s’effectue à travers le site web de Logitech et l’utilitaire congruity permet de pousser la configuration définie vers la télécommande.

Les télécommandes sous Linux

Avant Linux 2.6.36, la plupart des télécommandes infra-rouges nécessitaient LIRC :

  • Le pilote reçoit le signal du récepteur infra-rouge et le rend disponible via /dev/lirc.
  • lircd, avec l’aide d’un fichier de configuration décrivant le protocole utilisé par la télécommande, lit ce signal et le transforme en un code LIRC.
  • XBMC, connecté à lircd, reçoit le code LIRC et le transforme en une commande XBMC. Cette transformation est définie dans le fichier Lircmap.xml.
  • XBMC fait correspondre chaque commande à une action (telle que Play ou Fullscreen) à l’aide d’une table de correspondance également utilisée par les autres périphériques comme la souris, le clavier ou un joystick.

Depuis Linux 2.6.36, les télécommandes sont reconnues comme un périphérique d’entrée générique au même titre qu’un clavier :

  • Le pilote reçoit le signal du récepteur infra-rouge.
  • Un décodeur va transformer ce signal en un évènement (généralement l’appui d’une touche). La configuration du décodeur est effectuée à l’aide de ir-keytable.
  • X reçoit ces évènements et les transforment en évènements X destinés aux applications.
  • XBMC les reçoit et utilise la table de correspondance appropriée pour les transformer en actions.

Pour compliquer un peu les choses, il est toujours possible d’utiliser LIRC : lircd va recevoir les évènements en provenance du noyau et les transformer en codes LIRC.

De plus, le récepteur infra-rouge du SoundGraph iMON accepte deux protocoles différents : un protocole propriétaire et le protocole RC-6. Le pilote Linux sait gérer ces deux protocoles mais utilise par défaut le premier. Le protocole RC-6 est le protocole utilisé par de nombreuses télécommandes MCE.

J’espère n’avoir perdu personne jusqu’ici.

La façon simple

Il est possible d’obtenir une configuration fonctionnelle avec peu de configuration :

Télécommande Logitech Harmony
La télécommande doit être déclarée comme étant un Media Center PC de marque Microsoft: Windows Media Center SE.
Récepteur infra-rouge iMON
Il doit être configuré pour utiliser le protocole RC-6. Voir ci-dessous pour les détails.
LIRC
Dans /etc/lirc/hardware.conf, mettre DEVICE=/dev/input/by-id/usb-15c2_0038-event-if00 et DRIVER=devinput. Dans /etc/lirc/lircd.conf, mettre simplement include "/usr/share/lirc/remotes/devinput/lircd.conf.devinput".
XBMC
Une fois les autres éléments configurés, la télécommande doit fonctionner sans aucune configuration supplémentaire dans XBMC.

Pour utiliser le protocole RC-6, il faut installer le paquet ir-keytable et utiliser les commandes suivantes :

$ sudo modprobe rc-imon-mce
$ sudo ir-keytable -s rc0 -p rc-6 -c -w /lib/udev/rc_keymaps/imon_mce
Read imon_mce table
Old keytable cleared
Wrote 77 keycode(s) to driver
Protocols changed to RC-6

Pour rendre ce changement permanent, ajouter le module rc-imon-mce dans /etc/modules et créer le fichier /etc/udev/rules.d/90-imon.rules avec le contenu suivant :

# Override the keytable for iMON
ACTION=="add|change", SUBSYSTEM=="rc", DRV_NAME="imon", \
   RUN+="/usr/bin/ir-keytable -s $name -p rc-6 -c -w /lib/udev/rc_keymaps/imon_mce"

La façon compliquée

Si la configuration par défaut ne convient pas totalement et que l’on désire lier certains boutons à certaines actions, il y a deux grandes solutions possibles :

  1. Partir de la configuration décrite ci-dessus avec LIRC et définir les boutons supplémentaires à cinq endroits différents.
  2. Retirer LIRC et configurer la télécommande Logitech pour émuler un clavier Microsoft MCE.

La première option est particulièrement pénible. Il faut d’abord trouver un code non utilisé au niveau de la Logitech Harmony, s’il en reste. Ensuite, il faut s’assurer que ce code est bien défini dans la table utilisée par l’utilitaire ir-keytable. Dans le cas contraire, il est possible de l’ajouter mais cela nécessite de compiler un noyau avec des instructions de débogage pour le connaître. Ensuite, ce code doit être traduit dans le fichier lircd.conf. Il faut ensuite définir une traduction supplémentaire dans le fichier Lircmap.xml. Enfin, il faut définir l’action associée au niveau de XBMC.

L’autre solution n’est pas non plus idéale mais me semble plus simple. La première étape est de configurer la télécommande Logitech Harmony en tant que Microsoft MCE keyboard. Cela nous permet d’avoir beaucoup de touches disponibles. En raison de l’absence de touches multimédias, il faut redéfinir la configuration de la télécommande. Le plus simple est de suivre la configuration d’un clavier dans XBMC :

Bouton Commande Bouton Commande
Channel Down PageDown Stop X
Channel Up PageUp Skip back Comma
Prev Backspace Skip forward .
Up DirectionUp Play P
Down DirectionDown Rewind R
Left DirectionLeft Fast forward F
Right DirectionRight Star Delete
OK Enter Pound W
Menu C Red F1
Exit Esc Green F2
Guide Tab Yellow F3
Info I Blue F4

Malheureusement, le fichier de programmation fourni avec ir-keytable n’est pas complet. J’ai construit une version plus complète3. Avec cette configuration, la plupart des fonctionnalités de XBMC fonctionneront sans avoir à modifier d’autres fichiers.

Les touches supplémentaires peuvent être définies en écrivant une table de correspondance dédiée pour XBMC4. Voici un extrait de celle que j’utilise :

<keymap>
 <global>
  <keyboard>
    <end>XBMC.ShutDown()</end>
    <f1>XBMC.ActivateWindow(MusicLibrary)</f1>
    <f2>XBMC.ActivateWindow(Videos,TvShowTitles)</f2>
    <f3>XBMC.ActivateWindow(Videos,MovieTitles)</f3>
    <f4>XBMC.ActivateWindow(Weather)</f4>
  </keyboard>
 </global>
 <FullscreenVideo>
  <keyboard>
   <opensquarebracket>SubtitleDelayMinus</opensquarebracket>
   <closesquarebracket>SubtitleDelayPlus</closesquarebracket>
   <f6>xbmc.runscript(script.xbmc.subtitles)</f6>
  </keyboard>
 </FullscreenVideo>
</keymap>

FTP

Plutôt que d’utiliser SSH, je préfère déposer les nouveaux fichiers via FTP anonyme. vsftpd permet de répondre très simplement à ce besoin. Voici mon fichier de configuration :

listen=YES
xferlog_enable=YES
use_localtime=YES
setproctitle_enable=YES

secure_chroot_dir=/var/run/vsftpd/empty
nopriv_user=ftp
ftpd_banner=XBMC
hide_ids=YES

ftp_username=xbmc
anon_umask=022
anon_root=/home/xbmc/media
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_world_readable_only=YES

vsftpd n’est actuellement pas compatible avec systemd (voir le bug #670308). J’ai retiré le lien symbolique dans /etc/rc2.d et j’utilise le fichier vsftpd.service suivant :

[Unit]
Description=Vsftpd ftp daemon
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf
ExecReload=/bin/kill -HUP $MAINPID
ExecStartPre=-/bin/mkdir -p /var/run/vsftpd/empty

[Install]
WantedBy=multi-user.target

Divers

  1. Dans /etc/default/grub, réduire TIMEOUT à 0 permet d’obtenir un démarrage plus rapide.

  2. Activer le mécanisme « dirty regions » permet d’augmenter la réactivité de XBMC.

  3. aptitude install upower pm-utils permet à XBMC d’arrêter/suspendre la machine lui-même. Il est nécessaire de lui donner les droits nécessaires en créant le fichier /var/lib/polkit-1/localauthority/50-local.d/xbmc.pkla :

    [Actions for xbmc user]
    Identity=unix-user:xbmc
    Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.*
    ResultAny=yes
    ResultInactive=yes
    ResultActive=yes
    

  1. La lisibilité de l’afficheur LCD est désastreuse. Il est hautement préférable de s’orienter vers la version VFD. Le récepteur infra-rouge est également très médiocre et la télécommande plus que minimaliste. 

  2. Debian Wheezy n’est pas encore publiée. Si vous n’êtes pas familier avec Debian, il peut être assez pénible de maintenir une telle installation jusqu’au début du gel dans quelques mois. 

  3. Certaines touches ne sont pas présentes dans cette table. Par exemple, le point d’exclamation dispose d’un code dans le protocole RC-6 mais n’a pas de code spécifique au niveau du noyau. Il partage en effet la touche « 1 ». Il serait possible de l’affecter à un code arbitraire mais cela risque de rendre les choses difficiles à maintenir. 

  4. Par exemple, dans ~/.xbmc/userdata/keymaps/harmony.xml

25 April, 2012 06:29PM par Vincent Bernat

21 April 2012

Jean-Baptiste Hétier (djib)

Connexion Wifi très instable sous Linux

J'ai eu quelques soucis récemment sur deux PC suite à une mise à jour : ma connexion Wifi est devenue très instable, n'arrivant pas à « accrocher » le wifi ou se déconnectant en permanence.

Dans les logs (ou avec un dmesg) je retrouvais plein de fois la ligne :

 deauthenticating from 00:01:cb:3d:29:a3 by local choice (reason=3)

Visiblement le problème frappe pas mal de distributions (Debian, Fedora, Ubuntu, …) et on trouve pléthore d'explications sur internet : problèmes de gestion d'énergie de la carte wifi (power management), bug de NetworkManager, WPA2 mal supporté par le kernel, etc.

La solution qui a bien fonctionné pour moi, améliorant nettement la stabilité du wifi sur mes deux machines (sans toutefois empêcher quelques déconnexions intempestives) est de désactiver la gestion de l'IPv6 sur la carte Wifi.

Network Manager, configuration IPv6

Quand on recreuse les logs, on voit effectivement que la petite ligne suivante apparaissait aussi, comme pour donner un indice :

 no IPv6 routers present

En espérant que ça vous dépanne…

21 April, 2012 07:12AM par djib

19 April 2012

David Curé

Openshot 1.4.2 et debian squeeze

Et voici un backport de la version 1.4.2 d'Openshot, un superbe outil de montage vidéo, pour Debian squeeze amd64. Le paquet est disponible dans mon dépôt.

Bon montage vidéo.


19 April, 2012 09:23PM par David (nospam@example.com)

Tanguy Ortolo

Des urnes électorales

L'approche d'élections en France est l'occasion de se pencher sur les caractéristiques des urnes utilisées : elles ont l'air d'objets communs, mais malgré leur conception assez simple, elles respectent des caractéristiques particulières essentielles aux garanties de secret et de vérifiabilité.

Des garanties

Pour être plus précis, dans un scrutin public, chacun doit pouvoir (j'en oublie sans doute) :

  • voter sans que quiconque puisse déterminer le vote en question ;
  • détecter les fraudes (ajout, retrait ou modification de votes) ;
  • vérifier le décompte des votes.

Le système de vote actuel avec isoloir, feuille d'émargement, urne et comptage public fournit toutes ces garanties (à vrai dire, le secret du vote n'est pas applicable dans le cas marginal d'une unanimité), mais je vais ici m'attacher particulièrement aux caractéristiques des urnes elles-mêmes. Notons tout de même qu'il ne s'agit pas garanties absolues : dans le cas d'une fraude, ce qui est garanti, c'est qu'il sera possible de la détecter, pas qu'elle sera effectivement détectée.

Des urnes

Parmi leurs caractéristiques générales, les urnes utilisées sont transparentes et grandes :

Transparentes
Pour que chacun puisse constater ce que devient le bulletin de vote, et vérifier qu'il n'y a pas de mécanisme caché à l'intérieur, qui irait par exemple empiler les enveloppes dans l'ordre : un tel système permettrait à un observateur notant l'ordre de passage des électeurs de déterminer précisément le vote de chacun.
Grandes
Ou, pour être plus précis, grandes par rapport à la taille d'une enveloppe, afin que celles-ci puissent s'entasser dans le désordre : avec une petite urne, elles s'empileraient nécessairement dans l'ordre faute de place…

Conclusion

Quand vous irez voter, vérifiez bien ces caractéristiques de l'urne, et si vous constatez qu'elle est opaque, plaignez-vous !

Ce dernier conseil n'est pas seulement hypothétique, puisque certaines mairies ont réellement mis en place des urnes opaques : il s'agit d'ordinateurs de votes, dont le mécanisme interne est caché au public (quand bien même ils auraient le capot ouvert, on ne pourrait pas les vérifier pour autant), qui pourraient tout à fait noter l'ordre des votes, voire modifier ceux-ci. Peut-être le font-ils réellement d'ailleurs, mais il n'y a aucun moyen de le savoir…

19 April, 2012 08:49PM par Tanguy

18 April 2012

Roland Mas

La retraite à 10 ans

Petit billet rapide pour annoncer qu'après dix ans de bons et loyaux services, mirexpress vient d'être mis à la retraite. Il est remplacé par polymir, mon nouveau PC tout beau tout brillant et tout moderne. Comme en 2002, je l'ai pris nettement plus puissant que mes besoins actuels ne l'exigent, mais j'ai bien l'intention de le faire durer dix ans lui aussi, ne serait-ce que pour continuer à fournir un contre-exemple pour tous les gens qui pensent que leur ordinateur est forcément obsolète au bout de deux ans.

18 April, 2012 12:45PM

Florent Gallaire

Prince of Persia libéré !

Prince of Persia est un jeu vidéo culte qui a réellement marqué l’histoire des jeux vidéo, en particulier pour son innovante technique d’animation rotoscopique. Or sa version originelle, sortie sur Apple II en 1989, vient d’être libérée par Jordan Mechner.

C’est son père qui, il y a trois semaines, en faisant du rangement, a retrouvé dans un carton trois vieilles disquettes 3.5″, âgées de plus de 20 ans, dans lesquelles se trouvait encore le précieux code source du jeu.

Le code source, qui est maintenant disponible sur GitHub, est de l’assembleur pour 6502, un processeur utilisé sur une très grande variété de machines différentes, ce qui laisse pas mal d’espoir de voir apparaître de nouveaux portages. La riche documentation technique, fournie à l’époque par Jordan pour aider les développeurs effectuant les portages commerciaux, devrait alors être encore une fois d’un grand secours.

La disponibilité du code source rend les choses beaucoup plus simples, bien que la programmation en assembleur puisse paraître effrayante pour beaucoup de programmeurs “modernes”, et évite d’avoir recours au reverse engineering comme lors du superbe travail de portage de Prince of Persia sur Commodore 64, économisant ainsi beaucoup d’énergie et de talent.

Le choix de la licence utilisée n’est pas encore très clair, Jordan indiquant juste dans le README:

We did this for fun, not profit. As the author and copyright holder of this source code, I personally have no problem with anyone studying it, modifying it, attempting to run it, etc. Please understand that this does NOT constitute a grant of rights of any kind in Prince of Persia, which is an ongoing Ubisoft game franchise. Ubisoft alone has the right to make and distribute Prince of Persia games.

Je lui ai demandé des précisions sur son Twitter, moyen de communication qu’il semble privilégier, et j’espère qu’il répondra rapidement. En attendant, vous pouvez toujours jouer au clone Flash de POP :

<object class="flashmovie" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" height="300" id="fm_prince-of-persia_435036047" width="420"> <param name="movie" value="http://91.121.199.16/1980-games/flash4/jeux-action/jeux-flash/prince-of-persia.swf"/> <object data="http://91.121.199.16/1980-games/flash4/jeux-action/jeux-flash/prince-of-persia.swf" height="300" name="fm_prince-of-persia_435036047" type="application/x-shockwave-flash" width="420">

Flash n’est pas installé ? Tant mieux !

</object> </object>

Et ainsi réfléchir aux Ghz de CPU et aux Go de RAM que vous utilisez, alors que la version dont on a aujourd’hui le code source faisait que le Mhz du 6502 et ses quelques Ko de RAM suffisaient à obtenir le même résultat.

À l’époque où un jeu vidéo était une œuvre indissociable de son développeur, inventeur aussi bien de l’idée originale que du scénario, créateur aussi bien du code source que des graphismes ; et où chaque instruction assembleur utilisée était un trésor d’optimisation de code (when men were men and wrote their own device drivers)…

flattr this!

18 April, 2012 12:58AM par fgallaire

15 April 2012

Florent Gallaire

Zack 3.0

Stefano Zacchiroli (Zack) vient d’être re-réélu Debian Project Leader.

Il devance très largement Wouter Verhelst (déjà candidat malheureux en 2007 et 2010) et Gergely Nagy (déjà malheureux lui en 2004) :

Zack a annoncé pendant la campagne que ce troisième mandat consécutif de DPL serait son dernier. Souhaitons qu’il se déroule aussi bien, et même encore mieux !, que les deux premiers, et que Zack puisse mettre en œuvre au mieux son programme.

flattr this!

15 April, 2012 03:46PM par fgallaire

05 April 2012

Stéphane Blondon

Nombre de paquets et délai de publication dans Debian

Tout philosophe écologiste conviendrait aisément qu’il est plus difficile de bouger une baleine obèse qu’un canari chétif. Il en va des projets informatiques comme de mère Nature : plus la taille augmente et moins l’animal est véloce. Appliqué à une distribution Linux, le problème pourrait se résumer ainsi : plus le nombre de paquets est grand, plus les dépendances sont complexes et plus il y a des chances d’avoir des bugs. Cela provoque des délais de mise au point qui s’allongent. Pour les dernières publications de Debian, le délai entre deux verssions a été en moyenne de 2 ans mais il a grandement varié par le passé.

délai = f(paquets) ?

Voici le nombre de paquets et la temps passé entre la sortie et la sortie de la version suivante :

Buzz (1.1) : 474 paquets – 178 jours
Rex (1.2) : 848 paquets – 175 jours
Bo (1.3) : 414 paquets – 974 jours
Hamm (2.0) : 1.500 paquets – 228 jours
Slink (2.1) : 2.250 paquets – 502 jours
Potato (2.2) : 2.600 paquets – 703 jours
Woody (3.0) : 8.500 paquets – 1053 jours
Sarge (3.1) : 15.000 paquets – 671 jours
Etch (4.0) : 18.000 paquets – 679 jours
Lenny (5.0) : 28.000 paquets – 721 jours

Après le traumatisme de la douloureuse publication de Sarge (la durée de Woody est très importante parce qu’il a été difficile de sortir Sarge), ne pas faire trop durer la préparation des versions futures était dans toutes les têtes. Une image valant mille mots et économisant mon clavier, je vous invite à regarder ci-dessous.


Les croix rouges sont les premières publications (jusqu’à Woody incluse) ; les croix bleues sont Sarge, Etch et Lenny. Les courbes sont des estimations de régression pour chacun des deux ensembles.

Première période :

g(x) = 19,29 * sqrt(x * 0,45) - 113,34

Seconde période :

h(x)= 0,004 * x + 610

(En réalité, le logiciel ayant fait les calculs a ajouté plein d’autres chiffres après la virgule mais c’est probablement pour permettre au processeur de chauffer un peu plus. Ou pour tenter de m’impressionner.)

J’ignore si des résolutions officielles ont été prises après la publication de Sarge. En revanche, la volonté d’améliorer la communication entre des développeurs a été considérée comme une voie d’amélioration par plusieurs chefs de projet Debian successifs : par exemple, la volonté d’avoir des équipes pour maintenir des ensembles de logiciels plutôt qu’un personne seule, la facilitation des NMU. De même, certaines personnes a des postes clé ont été épaulées par d’autres développeurs Debian car c’était un goulot d’étranglement. À ma connaissance (qui est très parcellaire sur le sujet), les réponses se sont concentrées sur l’organisation humaine plutôt que sur les critères techniques, avec succès.

Sources

Le nombre de paquet et le calcul des durées de chaque version a été calculé à partir de l’historique de la distribution sauf pour Lenny. Le nombre de paquet étant absent de l’annonce lors de sa sortie, le nombre de paquets de Lenny a été récupéré en enregistrant la page listant l’ensemble des paquets de Lenny et un bon vieux grep "<dt><a href=" allpackages.htm |wc -l sur le fichier enregistré. Soit 28.057, arrondi à 28.000.

Les calculs de régression et la création du graphique ont été faites avec gnuplot (version 4.4 patchlevel 0, disponible dans testing actuellement) et le contenu des fichiers suivants :

Fichier de données pour la première période (debstat1.dat)

# stats Buzz à Woody
#nbre_paquets	délai_en_jours
474	178
848	175
974	414
1500	228
2250	502
2600	703
8500	1053

Fichier de données pour la seconde période (debstat2.dat)

# stats Sarge Etch Lenny
#nbre_paquets	délai_en_jours
15000	671
18000	679
28000	721

Script Gnuplot

set output "debian_relation_paquets_temps.png"

set xlabel 'Nombre de paquets'
set ylabel 'Délai de publication (en jours)'

g(x)=a*sqrt(x*b)+c
fit g(x) 'debstat1.dat' using 1:2 via a,b,c

h(x)=d*x+e
fit h(x) 'debstat2.dat' using 1:2 via d,e

plot "debstat1.dat" using 1:2 notitle, g(x) notitle, "debstat2.dat" using 1:2 notitle, h(x) notitle

Si certains sont intéressés par des informations supplémentaires sur les résultats de gnuplot (on ne sait jamais, il y a des malades partout) :

Pour la première fonction :
degrees of freedom (FIT_NDF) : 4
rms of residuals (FIT_STDFIT) = sqrt(WSSR/ndf) : 135.908
variance of residuals (reduced chisquare) = WSSR/ndf : 18470.9

Final set of parameters Asymptotic Standard Error
======================= ==========================

a = 19.294 +/- 1.858e+13 (9.629e+13%)
b = 0.453438 +/- 8.735e+11 (1.926e+14%)
c = -113.345 +/- 184.2 (162.5%)

Pour la seconde fonction :
final sum of squares of residuals : 7.61151
rel. change during last iteration : -2.9989e-14

degrees of freedom (FIT_NDF) : 1
rms of residuals (FIT_STDFIT) = sqrt(WSSR/ndf) : 2.7589
variance of residuals (reduced chisquare) = WSSR/ndf : 7.61151

Final set of parameters Asymptotic Standard Error
======================= ==========================

d = 0.00393525 +/- 0.0002866 (7.283%)
e = 610.317 +/- 6.041 (0.9899%)


05 April, 2012 10:44AM par ascendances

18 March 2012

Aurélien Jarno

10 years ago…

Date: Mon, 18 Mar 2002 18:22:10 +0000
From: James Troup <troup@samosa.debian.org>
To: “Aurelien Jarno” <aurelien@aurel32.net>
Cc: da-manager@debian.org
Subject: New Debian maintainer Aurelien Jarno

[ This is a long (automatically-generated) mail, but it contains
important information, please read it all carefully. ]

Dear Aurelien Jarno!

An account has been created for you on developer-accessible machines with username ‘aurel32′. The password for this account can be found encrypted with your PGP or GPG key and appended to this message. A list of machines available to Debian developers can be found at <URL:http://db.debian.org/machines.cgi>. Please take a minute now to familiarize yourself with the Debian Machine Usage Policy, available at <URL:http://www.debian.org/devel/dmup>

You have been subscribed to the debian-private mailing list as <aurel32@debian.org>. Please respect the privacy of that list and don’t forward mail from it elsewhere. E-mail to <aurel32@debian.org> will be forwarded to <aurelien@aurel32.net>. To change this, please see <URL:http://db.debian.org/forward.html> Also, please subscribe to debian-devel-announce, if you haven’t done so already.

We strongly suggest that you use your aurel32@debian.org address for the maintainer field in your packages, because that one will be valid as long as you are a Debian developer, even if you change jobs, leave university or change Internet Service providers. If you do so, please add that address to your PGP/GPG key(s) (using `gpg –edit-key “YOUR USER ID”‘) and send it to the keyring server at keyring.debian.org with `gpg –keyserver keyring.debian.org –send-keys “YOUR USER ID”‘.

You can find more information useful to developers at <URL:http://www.debian.org/devel/> (in particular, see the subsection titled “Debian Developer’s reference”).

We suggest that you subscribe to debian-mentors@lists.debian.org. This list is for new maintainers who seek help with initial packaging and other developer-related issues. Those who prefer one-on-one help can also post to the list, and an experienced developer may volunteer to help you. You can get online help on IRC, too, if you join the channel #debian-devel on irc.debian.org. Take a look at the support section on www.debian.org in order to find out more information.

You should have read these documents before working on your packages.

o The Debian Social Contract
<URL:http://www.debian.org/social_contract.html>

o The Debian Policy Manual
<URL:http://www.debian.org/doc/debian-policy/>

If you have some spare time and want to contribute it to Debian you may wish to take a look at the “Work-Needing and Prospective Packages for Debian GNU/Linux” also known as WNPP that can be found at <URL:http://www.debian.org/devel/wnpp/>

If you plan to make a Debian package from a not yet packaged piece of software you *must* announce your intention on the debian-devel mailing list to make sure nobody else is working on them.

The machine ftp-master.debian.org is our main archive server. Every uploaded package finds it’s way there (except for Packages covered by US crypto laws which go to non-us.debian.org) eventually. master.debian.org is the home of our bug tracking system. Project web pages and CVS archives are hosted on klecker.debian.org (aka cvs/www.debian.org), klecker is also our general shell server. Web pages should be placed in public_html on klecker and refered to by http://people.debian.org/~aurel32

You should use ssh to log into the machines instead of regular telnet or rlogin. Our LDAP directory is able to share ssh RSA keys among machines, please see <URL:http://db.debian.org/doc-mail.html> Otherwise when you first login a ~/.ssh directory will be created with the appropriate permissions. Please be aware of the security implications of using RSA authentication and ssh agents.

Finally, please take a minute to visit <URL:http://db.debian.org/>.
Login using the password information appended to this email, and update your personal information. The information is used to maintain your accounts on various Debian machines, and also to allow other developers and general users to find out more about you. Many of the fields are only visible to other registered Debian developers. This is also the only way to change your password. The passwd program does not yet work.

Welcome to the project!


The Debian New Maintainer Team

18 March, 2012 07:52PM par aurel32

16 March 2012

Rodolphe Quiédeville

2 backports squeeze pour les fans du nosql

Les deux derniers backports pour squeeze arrivés dans mon dépôt personnel sont destinés aux amateurs de NoSQL ; le serveur CouchDB et une librairie perl d'accès à mongoDB.

  • couchdb 1.1.1
  • libmongodb-perl 0.45

16 March, 2012 03:29PM par Rodolphe Quiédeville

12 March 2012

Julien Vehent

3.x Kernel, TCP and performances

Weekend project: optimizing the TCP stack for HTTP servers.
The graph below is a client side tcp window scaling (when the client downloads the HTML sent by the server). The client is a linux box running elinks, and I simply took a tcpdump of the connection between the client and the server.
fries_to_api_window_scaling.pngIt's interesting to compare the curve above with the same connection without keepalive:
tcp_api1_nokeepalive-vs-keepalive.pngKeepalive transfers more data, making the window scale faster. In the red connection, only 10,290 bytes of HTTP are received by the client. But in the green one, using keep-alive, 50,814 bytes are received in the same amount of time.

The goal ? Figuring out the good kernel parameters to optimize response time in a full HTTP environment. Almost all the systems interactions inside my work infrastructure are performed via HTTP REST APIs. Optimizing the TCP stack between servers becomes really interesting when building a page requires several HTTP request to multiple servers.

But the real goal is to write a new article in GLMF ;)

Another one: the graph below measures the window size on a nuttcp server between 2 ubuntu boxes (the nuttcp server being a VM). Both run 2.6.32 and no optimization other than the default Ubuntu ones has been done.

nuttcp_cloudstack_server_side-1331425904b.pngIn this last graph, the TCP window scales all the way up to 195,200 bytes. That's 3 times the maximum window size defined by RFC 793. This is made possible by RFC 1323 and its Window Scale option.

The window scale option defines a 16 bits field used to left-shift the window field of the tcp header. So if you have a window size of 16 bits set to one (value 65535 Bytes), then the window scale option allows to grow that to a 32 bits window size (or 4GB)

$ echo $(($((2**16)) << 16))
4294967296

Now how useful is that ? Well, the window size represents the size of the receiver's buffer communicated to the sender. But the role of the buffer is essentially to store data until the application can consume it (on the receiver's side), or until an ACK is received (on the sender's side).

The maximum amount on data that can be travelling on a network at a given time is called Bandwidth Delay Product (BDP). BDP is calculated by multiplying the bandwidth of the link with it's round trip time.

Example with a 50Mbips link over a WAN:

Bandwidth = 50 Megabits per seconds = 50*10^6 bits / seconds

RTT = 2.7 milliseconds = 0.0027 seconds

BDP = Bandwidth * RTT

BDP = 50*10^6 * 0.0027 = 135000 bits = 16875 bytes

(we multiply bits/seconds with seconds, so we obtain bits)

So 16,875 bytes is the maximum quantity of data that can be traveling at a given time between my two nodes when the link is full. Knowing that, that raises 2 questions:

   1. Why is my window growing all the way to 195,200 on the graph above ?

   2. How much margin does the buffer need to operate properly ?

And, I would add a third one, just for fun:

   3. What defines the rate of growth of the window ?

I have a beginning of answer for (1): the window scale option is a negotiation. Each endpoint announces what it support in the first packet is send. The client sends it in its SYN packet, and the server announces its own in the SYN,ACK packet.

The capture below displays the window scale options for the client and the server:
window_scale_option_announcement.png
The server announces a maximum window scale of 2**16 << 7 = 8,388,608 Bytes, but the server replies with a maximum of only 2**16 << 6 = 4,194,304 Bytes. Regardless, this is a lot larger than the maximum of 16,875 bytes above. So why is it growing so large ? ... more reading to do I guess :)

12 March, 2012 12:57PM par Julien Vehent

10 March 2012

Philippe Latu

Adresses IP réservées pour la documentation et les maquettes

Jusqu'à présent, je n'avais pas été très rigoureux sur le choix des adresses IP utilisées dans les documents publiés. J'ai corrigé cette erreur en utilisant les préconisations des RFC dédiées à cette question.

En plus du contexte strict de la documentation, il est aussi possible d'utiliser les adresses privées ou locales qui ne doivent pas être routées sur l'Internet.

Après avoir usé et abusé de la traduction d'adresses IPv4 ces dernières années, le fait d'utiliser des adresses IPv6 publiques routables dans une infrastructure de travaux pratiques semble «bizarre». Heureusement, le filtrage avec ip6tables permet de bloquer les accès depuis l'extérieur du périmètre. Du point de vue rédaction de documentation, on n'utilise que les adresses issues de son propre préfixe et on ne risque pas empiéter sur le plan d'adressage d'autrui.

Si vous êtes à la recherche de préfixes IPv6, la valeur des services tels que SixXS - IPv6 Deployment & Tunnel Broker ou Hurricane Electric Free IPv6 Tunnel Broker est inestimable. Le service SixXS distribue même gratuitement des préfixes /48 ; soit 65536 réseaux en /64. Voilà de quoi monter quelques maquettes d'interconnexion réseau.

10 March, 2012 04:06PM par Philippe Latu

07 March 2012

Guilhem Bonnefille

Compilation de broadcom-sta-source avec linux 3.2.0-1

Depuis la montée de version du noyau linux en 3.2.0-1, je n’avais plus de WiFi. Il s’avère que mon chipset WiFi est piloté par un module propriétaire nommé broadcom-sta empaqueté sous le nom broadcom-sta-source. Or, depuis la 3.2.0 ce dernier ne compile plus.
# m-a build build broadcom-sta
blablabla
blablabla error: unknown field 'ndo_set_multicast_list' specified in initializer
blablabla

En fouillant sur Internet, il s’avère qu’il s’agit d’un problème ancien, proche de celui-ci.

Le précédent run de m-a ayant laissé un modules/broadcom-sta déployé, j’ai fait la modification à la main dans src/wl/sys/wl_linux.c puis :
m-a -k linux-headers-3.2.0-1-686-pae -O build broadcom-sta

Le -k c’est parceque j’ai fait ça depuis un kernel fonctionnel.
Notez le -O demandant de ne pas redéployer les sources depuis le tarball.

Un dernier
dpkg -i broadcom-sta-modules-3.2.0-1-686-pae_5.100.82.112-4+3.2.6-1_i386.deb

Et zou, le monde est plus beau. Bon, il faudrait sans doute se faire un petit bug report chez Debian.

Edit :
Il y a bien un bug traçant le problème de compilation. Ce problème est considéré traité. Pourtant, il s’avère que la version sensée le corriger ne se déploit pas chez moi. En fait, il semble y avoir un bug de classification du paquet emportant les sources.

07 March, 2012 09:16PM par Guyou

05 March 2012

Vincent Bernat

De la non asynchronicité du protocole AgentX dans Net-SNMP

Une des façons les plus commodes pour ajouter un support SNMP est d’utiliser le protocole AgentX : une application se comporte comme un sous-agent et traitera les requêtes déléguées par un agent maître via ce protocole. L’implémentation la plus courante est celle de Net-SNMP.

En bref : Une application exploitant l’implémentation AgentX de Net-SNMP de manière asynchrone peut se bloquer à de nombreuses occasions en raison principalement de l’indisponibilité temporaire de l’agent maître. Une contre-mesure assez efficace est d’utiliser comme agent maître un agent dédié à cette tâche et déléguer le traitement des MIB à un sous-agent.

Test de disponibilité de l’agent maître

Net-SNMP exploite un modèle de programmation événementielle. Il fournit également des fonctions synchrones classiques mais celles-ci sont construites à partir des versions asynchrones. Il exploite sa propre boucle d’événements. Son implémentation d’AgentX semble alors un choix naturel pour ajouter un support SNMP dans une application asynchrone comme Keepalived, une solution de haute disponibilité et de répartition de charge.

Malheureusement, un sous-agent doit vérifier régulièrement si l’agent maître est toujours disponible. Cette opération est effectuée automatiquement du moment que vous utilisez la fonction run_alarms() qui va à son tour faire appel à agentx_check_session() :

/*
 * check a session validity for connectivity to the master agent.  If
 * not functioning, close and start attempts to reopen the session 
 */
void
agentx_check_session(unsigned int clientreg, void *clientarg)
{
    /* [...] */
    DEBUGMSGTL(("agentx/subagent", "checking status of session %p\n", ss));

    if (!agentx_send_ping(ss)) {
        snmp_log(LOG_WARNING,
                 "AgentX master agent failed to respond to ping.  Attempting to re-register.\n");
        /*
         * master agent disappeared?  Try and re-register.
         * close first, just to be sure .
         */
        agentx_unregister_callbacks(ss);
        agentx_close_session(ss, AGENTX_CLOSE_TIMEOUT);
        /* [...] */
        if (main_session != NULL) {
            /* [...] */
            main_session = NULL;
            agentx_reopen_session(0, NULL);
        }
        else {
            snmp_close(main_session);
            main_session = NULL;
        }
    } else {
        DEBUGMSGTL(("agentx/subagent", "session %p responded to ping\n",
                    ss));
    }
}

Ce code appelle directement ou indirectement les fonctions suivantes1 qui font ensuite appel à agentx_synch_response() :

  • agentx_send_ping()
  • agentx_open_session()
  • agentx_reopen_session()
  • agentx_close_session()
  • agentx_register()
  • agentx_unregister()
  • agentx_register_index()
  • agentx_unregister_index()
  • agentx_add_agentcaps()
  • agentx_remove_agentcaps()

agentx_synch_response() va attendre de manière synchrone une réponse de l’agent maître. Votre programme asynchrone va donc rester bloqué à ne rien faire pendant ce laps de temps. Par exemple, keepalived sera incapable d’envoyer les paquets VRRP nécessaires au bon fonctionnement du cluster.

Les fonctions préfixées par agentx_ ne font pas partie de l’API de NetSNMP et pourraient donc être corrigées. Plus facile à dire qu’à faire. De plus, il existe d’autres points de blocage enfouis dans NetSNMP. Ainsi, la connexion de bas niveau (TCP ou socket Unix) avec l’agent maître utilise la fonction connect() de manière synchrone. Cet aspect a de nombreuses ramifications difficiles à évoluer.

Voici quelques contre-mesures (partielles) :

  • Appeler agentx_check_session() moins souvent. Par défaut, cette fonction est invoquée toutes les 15 secondes. La désactiver complètement ou utiliser une valeur très élevée est déconseillé car le sous-agent ne se reconnectera pas à l’agent maître en cas de redémarrage de ce dernier. Voici comme porter l’intervalle à 20 secondes :

    netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID,
                       NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL, 120);
    
  • Ne pas appeler agentx_check_session() si l’agent maître a donné des signes de vie récemment, notamment en envoyant une requête à traiter. J’ai écrit un patch mettant en place une telle contre-mesure. L’ABI reste inchangée et il n’y a donc besoin que de recompiler les bibliothèques de Net-SNMP.

  • Utiliser des valeurs plus faibles pour le délai d’attente et le nombre d’essais. Par défaut, le délai d’attente est de 1 seconde et le nombre d’essais est fixé à 5. En raison de l’utilisation de plusieurs fonctions synchrones à la suite, il est possible de rester bloqué jusqu’à 30 secondes. Voici comment2 désactiver les essais supplémentaires et diminuer fortement le délai d’attente :

    static int
    snmp_setup_session_cb(int majorID, int minorID,
                  void *serverarg, void *clientarg)
    {
        netsnmp_session *sess = serverarg;
        sess->timeout = ONE_SEC / 3;
        sess->retries = 0;
        return 0;
    }
    
    void some_init_function()
    {
        /* [...] */
        snmp_register_callback(SNMP_CALLBACK_LIBRARY,
           SNMP_CALLBACK_SESSION_INIT,
           snmp_setup_session_cb, NULL);
        /* [...] */
    }
    

Non réponse de l’agent maître

Pourquoi l’agent maître peut ne pas répondre aux requêtes ? snmpd utilise également la programmation événementielle et il va se bloquer à de nombreuses occassions. Voici deux exemples :

  • Les directives pass et pass_persist ne rendent pas la main avant que la commande à exécuter n’affiche une ligne complète.

    /* var_extensible_pass() in agent/mibgroup/ucd-snmp/pass.c */
    /*
     * valid call.  Exec and get output 
     */
    if ((fd = get_exec_output(passthru)) != -1) {
        file = fdopen(fd, "r");
        if (fgets(buf, sizeof(buf), file) == NULL) {
            fclose(file);
            wait_on_exec(passthru);
            /* [...] */
            continue;
        }
        /* [...] */
        fclose(file);
        wait_on_exec(passthru);
        /* [...] */
    }
    
  • L’implémentation de DISMAN-PING-MIB se bloque pendant le déroulement des pings vers l’hôte distant. Si ce dernier est inaccessible, snmpd peut se bloquer pendant de longues secondes. Un problème similaire existe pour DISMAN-TRACEROUTE-MIB.

Agent maître minimal

De plus en plus de code est exécuté par l’agent maître et donc la situation ne va pas aller en s’améliorant. Pour pallier à notre problème, nous allons intercaler un agent maître minimal. L’agent qui jouait jusqu’ici le rôle d’agent maître et servait un certain nombre de MIB va devenir un sous-agent. Les sous-agents existant se connecteront au nouvel agent maître.

Schema showing the use of a minimal master agent

Transformer snmpd en sous-agent est simple : il suffit d’utiliser le drapeau -X. Nous devons également désactiver certaines MIB selon le rôle de l’agent. Cela se fait avec le drapeau -I. L’agent minimal n’utilisera que les modules strictement nécessaires à son fonctionnement. Tous les autres modules3 seront servis par snmpd en tant que sous-agent.

$ MODS="snmp_mib,sysORTable,usmConf,usmStats,usmUser,vacm_conf,vacm_context,vacm_vars"
$ snmpd -Lsd -Lf /dev/null -u snmp -g snmp \
>   -C -c /etc/snmp/snmpd.master.conf \
>   -p /var/run/snmpd.master.pid \
>   -I $MODS
$ snmpd -Lsd -Lf /dev/null -u snmp -g snmp \
>   -p /var/run/snmpd.pid -X \
>   -I -$MODS

La configuration des accès et la directive master agentx doivent se trouver dans /etc/snmp/snmpd.master.conf. Les autres directives (telles que pass, pass_persist, load, sysname, …) doivent être dans /etc/snmp/snmpd.conf.

Il est désormais peu probable d’observer un bloquage de l’agent maître. Bien que le problème soit potentiellement toujours présent, sa surface est considérablement réduite. Il est possible d’étendre cette solution en saucissonnant snmpd en plusieurs sous-agents: l’un pour les directives comme pass et pass_persist, un autre pour la plupart des modules et un dernier pour les modules plus litigieux, tels que DISMAN-PING-MIB.


  1. agentx_reopen_session() appelle agentx_close_session() et agentx_open_session(). agentx_register() et les fonctions suivantes sont appelées par ces deux fonctions. 

  2. Les variables NETSNMP_DS_AGENT_AGENTX_TIMEOUT et NETSNMP_DS_AGENT_AGENTX_RETRIES ne sont utilisées que pour l’agent maître, pas pour un sous-agent. 

  3. La commande snmpd -Dmib_init -H permet d’obtenir la liste des modules. Le module smux, s’il est utilisé, doit être ajouté à l’agent maître. 

05 March, 2012 05:02PM par Vincent Bernat

17 February 2012

Stéphane Blondon

Comparatif grep, ack et grin

Sur le ring, grep dominait et le public l’acclamait. Mais deux petits nouveaux, ack et grin, avaient enfilé leurs plus belles tenues de super-stars du catch pour lui ravir sa ceinture de champion et le cœur des développeurs. Vont-ils y arriver ? C’est ce que vous saurez en lisant cet article !

Parfois, un programmeur veut connaître l’ensemble des occurrences d’un symbole dans un programme (une variable, une classe, etc.). La solution la plus évidente est d’utiliser grep mais, pour peu qu’il y ait d’autres fichiers dans le répertoire du projet, de nombreux faux positifs vont apparaître, rendant le travail d’analyse fastidieux. Par exemple, s’il existe des copies créées automatiquement par un éditeur de texte, les fichiers des dépôts (.svn, .hg, fichier binaire, etc.). À Yaal, nous utilisons Python. Avec virtualenv, les fichiers de dépôt, les fichiers .pyc produits automatiquement, la documentation, etc. les résultats de grep sont plus ou moins truffés de faux positifs.

Il est bien évidemment possible d’exclure ce genre de fichier en multipliant les commandes (| grep -v a_exclure). Mais l’augmentation des lignes à éliminer rend la commande toujours moins pratique. Pour contourner cela, la suite logique est de transformer la commande en un script shell. Cependant, d’autres programmes comme ack et grin visent déjà à résoudre ce problème. L’objectif de cet article est de montrer quelques spécificités de chaque outil.

Les différents outils

Voici une présentation succincte des trois adversaires :

  • grep : l’outil Unix classique qui servira de référence ;
  • ack : outil écrit en Perl visant à faire des recherches, orienté pour des développeurs. Ce logiciel est disponible dans Debian et dérivées par l’intermédiaire du paquet ack-grep. La commande est aussi ack-grep. Le changement de nom est dû au fait qu’il existait déjà un paquet du nom de ack. Dans la suite de l’article, on mentionnera simplement ack ;
  • grin : outil écrit en Python ayant le même but que ack. Il n’est pas disponible dans Debian. Étant donné qu’il est disponible dans Pypi (les dépôts de paquets Python, équivalant au CPAN de Perl), grin peut être installé avec pip install grin. Le paquet python-pip doit être préalablement installé. Puisqu’il n’y a pas de page de manuel, la documentation à utiliser est celle de grin --help et la page de documentation sur le dépôt Python.

Que le match commence !

Usage

Recherche dans un fichier

grep MOTIF FICHIER
ack-grep MOTIF FICHIER
grin MOTIF FICHIER

Dans chaque cas, MOTIF peut être une expression rationnelle (par exemple [fF]év vaut fév ou Fév).

Voici un exemple de résultats que l’on peut obtenir :

stephane@foehn:~/src/strdatetime$ grep [Ff]év translation.py
u"janv", u"févr", u"mars",
u"janvier", u"février", u"mars",
u"Janvier", u"Février", u"Mars",
stephane@foehn:~/src/strdatetime$ ack-grep [Ff]év translation.py
u"janv", u"févr", u"mars",
u"janvier", u"février", u"mars",
u"Janvier", u"Février", u"Mars",
stephane@foehn:~/src/strdatetime$ grin [Ff]év translation.py
translation.py:
   19 : u"janv", u"févr", u"mars",
   26 : u"janvier", u"février", u"mars",
   30 : u"Janvier", u"Février", u"Mars",

La sortie de grep et d’ack sont identiques, alors que grin fournit le nom du fichier et le numéro de lignes.

Recherche récursive

La plupart du temps, l’objectif est de chercher dans tout une arborescence de répertoire. C’est le fonctionnement par défaut pour ack et grin.

grep -r MOTIF . #ou rgrep
ack-grep MOTIF
grin MOTIF

La sortie produite par grep et ack évolue pour ajouter le nom du fichier et les lignes. grep met tout sur une ligne alors qu’ack a une sortie identique à celle de grin. grin produit une sortie toujours structurée de la même manière (cf. l’exemple du paragraphe précédent).

Alors que la différence de vitesse lors de l’analyse d’un seul fichier ne se sent pas, elle devient sensible lors d’une recherche récursive. Quelques tests rapides (et sans prétention d’exhaustivité ou de représentativité) donnent des résultats bien plus lents pour ack et grin.

grep : 0,3 s
ack-grep : 1,7 s
grin : 2,8 s

Cependant, ajouter des tubes pour exclure des résultats obtenus avec grep dans le but d’éliminer des résultats (et donc arriver à un résultat comparable avec ce qui est obtenu avec ack ou grin) augmentera le temps passé et donc réduira l’écart avec les deux autres outils.

Recherche insensible à la casse

grep -i MOTIF FICHIER
ack-grep -i MOTIF FICHIER
grin -i MOTIF FICHIER

Même syntaxe que dans les cas précédents, juste l’option -i en plus. Aucune surprise ici. Pas la peine d’en rajouter. Passez au paragraphe suivant. Faut-il vraiment que j’arrête d’écrire ce paragraphe pour vous arrêtiez de le lire ?!

Recherche en ignorant certains types de fichiers

Cette fonctionnalité est très utile pour ne pas chercher dans des fichiers sans intérêt :

grep -r --exclude=*.sh  --exclude=*.h "interpreted as " .
ack-grep --type=nohh --type=noshell  "interpreted as "
grin --skip-exts .h,.sh  "interpreted as "

Ici, on exclut les fichiers d’en-tête de code C (*.h) et les scripts shell (*.sh). grep et grin recherchent directement une correspondance de motif alors qu’ack permet des exclusions de types ou d’extension. Les types sont basés sur les noms d’extension de fichiers (avec la correspondance de motif). Par exemple, le type shell correspond à .sh, .bash, .csh, .tcsh, .ksh et .zsh. La définition d’un type de fichier est conçu pour être facilement extensible.

Par défaut, ack et grin exclut les répertoires et les fichiers sans intérêt. L’option d’exclusion permet d’en ajouter de nouveaux. La liste des fichiers exclus par défaut n’est pas identique entre ack et grin donc les résultats peuvent différer un peu. Par exemple, c’est le cas des fichiers .texi, exclus par ack, mais pas par grin.

Recherche en ignorant certains répertoires

grep -r --exclude-dir DIR1 --exclude-dir DIR2 MOTIF .
ack-grep --ignore-dir DIR1 --ignore-dir DIR2  MOTIF
grin --skip-dirs DIR1,DIR2 MOTIF

Ces commandes permettent d’exclure DIR1 et DIR2 de la recherche. grin ajoute les répertoires enlevés à la liste des répertoires qu’il exclut automatiquement.

Ajout des lignes de contexte

Les options sont toutes identiques et ont le même comportement.

-A, --after-context 
-B, --before-context
-C, --context  #avant et après

Comme à chaque fois, grin affichage systématiquement le numéro des lignes.

Affichage limité aux fichiers correspondants

grep -r -l MOTIF.
ack-grep -l MOTIF
grin -l MOTIF

C’est donc l’option -l ou --files-with-matches à chaque fois.

Affichage limité aux fichiers non correspondants

grep -r -L MOTIF .
ack-grep -L MOTIF  # = -l -v
#rien pour grin !

L’option -L (ou --files-without-matches) permet de n’afficher que les fichiers sans l’occurence MOTIF pour grep et ack. grin a bien une option de ce nom mais son comportement est complètement différent. L’aide de la commmande signale que ce paramètre permet d’afficher le nom du fichier avec la correspondance. Ce qui est le comportement par défaut. Je ne comprend pas l’intérêt de cette option, trompeuse de surcroît.

Inversion de la sélection

grep -v MOTIF FICHIER
ack-grep -v  MOTIF FICHIER
#rien pour grin !

Pas d’option équivalente à -v pour grin. Rien ! Nada ! Zéro ! Que dalle ! ∅ !

Intégration avec un éditeur

ack dispose d’un paramètre --column pour qu’un éditeur de texte se place directement sur la première occurence.

La documentation d’ack précise que l’outil est intégrable avec Vim, Emacs et TextMate. Je n’ai testé aucune de ces possibilités.

grin dispose d’un paramètre --emacs qui affiche le nom du fichier, le numéro de la ligne et son contenu sur la même ligne pour faciliter l’analyse « par exemple avec emacs » :

stephane@foehn:~/src/strdatetime$ grin Fév
./tests.py:
  122 :         d_fr = strdatetime.strdatetime(u"Févr", "%b", lang="fr")
  136 :         d_fr = strdatetime.strdate(u"Févr", "%b", lang="fr")
./translation.py:
   30 : u"Janvier", u"Février", u"Mars",
stephane@foehn:~/src/strdatetime$ grin --emacs Fév
./tests.py:122:         d_fr = strdatetime.strdatetime(u"Févr", "%b", lang="fr")
./tests.py:136:         d_fr = strdatetime.strdate(u"Févr", "%b", lang="fr")
./translation.py:30: u"Janvier", u"Février", u"Mars",

Je suis très dubitatif sur le choix de nommage des options dans grin mais cette option me semble vraiment intéressante.

Configuration

Il est possible d’enregistrer des préférences pour qu’elles soient utilisées à chaque fois.

grep est le plus limité. Si l’utilisateur enregistre un fichier FICHIER avec tous les motifs de noms de fichier (possibilité d’utiliser les caractères jokers de l’interprète de commande) qu’il veut exclure, il peut les faire prendre en compte en utilisant --exclude-from=FICHIER. C’est limité mais cette fonctionnalité reste probablement sous-exploitée.

ack prend en compte un fichier de configuration .ackrc dans lequel on peut ajouter les options à lancer systématiquement. Simple et efficace. Certains paramètres sont aussi accessibles grâce à des variables d’environnement.

grin utilise une variable d’environnement $GRIN_ARGS. Elle doit valoir une chaîne de caractère qui inclut les paramètres à ajouter par défaut. Fonctionnel mais moins élégant que le fichier de configuration d’ack.

Conclusion

Pour une utilisation dans le cadre de développement logiciel, ack me semble le plus adapté. Par contre, le fait qu’il n’affiche pas toutes les informations sur la même ligne empêche sa sortie d’être réutilisable facilement. grin me semble moins bon mais évite cet écueil (avec --emacs) et affiche toujours les lignes, ce qui peut s’avérer assez pratique.

grep est plus généraliste et possède plus d’options. Il reste donc indispensable et a l’avantage d’être toujours disponible sur le système, ce qui n’est pas le cas des deux autres.

Je n’ai fait qu’aborder les fonctionnalités qui me semblaient les plus courantes, chacun en possède d’autres et sont à portée de man. Explorez-les !

Versions utilisées :
grep (GNU grep) 2.10
ack-grep 1.92
grin 1.2.1


17 February, 2012 02:55PM par ascendances

Benoit Peccatte

Linux embarqué

Aujourd'hui une pub éhontée pour un livre. Je ne connais même pas l'auteur personnellement, mais la maison d'édition me l'a envoyé gratuitement, ça prouve qu'il est bien non ?

Il s'agit de Linux embarqué. Pour une fois, ne vous attendez pas à trouver des lignes de commande, des howto ou ce genre de détails. Il s'agit bien d'un livre technique, mais dons le but est de vous faire choisir (ou pas) linux comme plateforme pour l'embarqué.

Il vous pose les bonnes questions et vous aide à y répondre. Quel modèle de développement ? Temps réel ou non ? Investissez-vous sur le long terme ? Et ce n'est qu'après avoir étudié le sujet que vous saurez s'il est judicieux de choisir linux.

Mais une fois que vous avez choisi linux, pensez-vous vraiment que cela suffise à votre succès ? Gilles Blanc vous explique comment vous préparer, ce que vous devez savoir, comment organiser le projet. Tout ce qu'il faut à l'intention du chef de projet.

Ce livre permet aux gens de faire un choix avisé, de savoir quelles sont les raisons de ce choix et comment. C'est grâce ça que vous pourrez soutenir ce choix tout au long du projet. Il permettra de transformer un projet sur l'embarqué en succès. Et il est probable que parmi ces projets un certain nombre utiliseront linux. Et comme tout le monde devrait le savoir, un projet réussi est un bien meilleur ambassadeur du libre qu'un geek dans son coin.

En conclusion, même si je ne recommanderais pas ce livre à ma grand-mère, je pense qu'il a une énorme valeur pour la progression du logiciel libre. Je le recommande à tout chef de projet ou ambassadeur du logiciel libre qui voudrait lancer un produit avec du linux embarqué.

Si vous avez aimé, il y a aussi :

  1. Terminal linux
  2. Arrêtez de l’appeler GNU/Linux
  3. Trucs et astuces pour la console linux
Tags:

17 February, 2012 08:00AM par peck

09 February 2012

Benoit Peccatte

Strate NTP

Niveau :      
Résumé : ntp.conf ; fudge

Pour vérifier le bon fonctionnement de votre démon ntp, vous êtes amené à taper la commande suivante qui liste les source de temps utilisées :

$ ntpdc -p

Cette commande met une étoile face à la source de référence utilisée pour la synchronisation. Le choix se fait entre autre en fonction du stratum de la source. Je rappelle que les serveurs NTP disposant d'une source de temps matérielle fiable (horloge atomique) ont pour stratum 1. Ceux qui se synchronisent sur eux, 2, et ainsi de suite.

Étant donné qu'il y a un grand nombre de serveurs publics de strate 2 et 3, vous devriez avoir accès à des serveurs de strate 4, ou au pire 5. Mais si le serveur a une strate plus élevée, il se peut que l'horloge choisie ne soit plus le serveur, mais l'horloge locale qui a une strate définie par défaut à 5 sur certaine distributions.

Et là c'est le drame, vous n'êtes plus synchronisés !

Pour résoudre ce problème, il y a plusieurs méthodes, se résumant toutes en la configuration des serveurs de temps :

# ntp.conf

# mettre l'option prefer sur le serveur voulu
serveur xxx.com prefer
# réduire la strate du serveur
fudge xxx.com stratum 4

# augmenter la strate de l'horloge locale
# 127.127 pour les horloges non réseau
# 1.0 pour l'horloge système
fudge 127.127.1.0 stratum 10

Si vous avez aimé, il y a aussi :

  1. Il faut laisser le temps au temps
  2. Verrou virtuel
Tags:, ,

09 February, 2012 08:10AM par peck

31 January 2012

Emilien Macchi

Test de la Beta HP Cloud Services

Grâce à une personne très gentille, j’ai la chance de pouvoir tester le nouveau Cloud d’HP qui sera bientôt disponible à tous.

Pour rappel, HP se lance dans le Cloud public avec l’arrivée d’HP Cloud Services qui propose tout comme ses concurrents (RackSpace, IBM, …) un cloud de type IaaS (Infrastructure As A Service).

 

Je me suis donc précipité sur l’invitation, et j’ai créé mon compte afin de tester tout ça.

Pour tout vous avouer, ce qui m’a le plus motivé à tester le produit, c’est évidemment le fait qu’il soit basé sur OpenStack.

Je vous rapporte donc ce que j’ai testé, et les différentes fonctionnalités que j’ai appréciées ou celle que je n’ai pas vues.

 

Résultats du test :

- Compute :

  • 2 clusters localisés à l’ouest des USA (pour l’instant).
  • Pour ma part, aucun problème de latence.
  • 6 tailles de serveurs (j’ai testé la standard.xsmall ainsi que la standard.large)
  • Plusieurs images disponibles, toutes basées sur Linux (Ubuntu, CentOS)
  • 1 IP publique par VM ! Pour le coup, j’ai vraiment été surpris.
  • la gestion des VMs peut se faire via API (avec euca2ools) sinon depuis le dashboard d’HP qui est plutôt bien fait.
  • On accède aux VMs par SSH (avec la clé privée qu’il faut télécharger), et le terminal est bien renseigné (facturation, ressources consommées, charge en temps réel…)
  • Voici mes critiques : impossibilité de faire des snapshots des VMs (pour l’instant j’imagine), pas moyen pour le moment de créer des volumes, et de les attacher aux VMs (avec la fonction de snapshot si possible).
  • Ensuite, j’aurais bien apprécier de pouvoir migrer les VMs entre cluster, mais je n’ai pas eu de réponse d’HP concernant cette fonctionnalité… A voir donc si ce sera possible dans l’avenir.

 

- Cloud storage :

  • L’interface Web intègre une gestion de son Cloud Storage.
  • Les fonctionnalités sont rudimentaires : Envoyer / Télécharger des fichiers depuis cet espace.
  • J’imagine que derrière tout ça se cache le module Swift (OpenStack Storage) donc rien à dire de ce coté, si ce n’est qu’on ne connaît pas encore la limite de stockage pour l’offre de base, et il n’y a pas encore de fonction de partage de fichier. Bref, c’est une Beta !!
  • Cela-dit, je suis plutôt content qu’une interface web soit enfin développée pour gérer du cloud storage avec Swift. Remarquez sur la capture d’écran que l’interface est plutôt simple mais assez complète pour l’instant.

 

Bien sûr, ces remarques n’engagent que moi-même, et je suis ouvert à toute discussion.

Dans tous les cas, je suis très heureux de voir OpenStack continu d’être adopté par les plus grands de ce monde… Pourvu que ça dure !!!

 

31 January, 2012 08:15PM par Emilien