January 21, 2016

Carl Chenet

Le danger Github

Alors que le projet CPython (implémentation historique du projet Python) a annoncé son passage chez Github (avec quelques restrictions, nous reviendrons là-dessus), il est plus que jamais important de s’interroger sur les risques encourus d’utiliser un logiciel propriétaire dans notre chaîne de création du Logiciel Libre.

Des voix critiques s’élèvent régulièrement contre les risques encourus par l’utilisation de Github par les projets du Logiciel Libre. Et pourtant l’engouement autour de la forge collaborative de la startup Californienne à l’octocat continue de grandir.

codercatL’octocat, mascotte de Github

Ressentis à tort ou à raison comme simples à utiliser, efficaces à l’utilisation quotidienne, proposant des fonctionnalités pertinentes pour le travail collaboratif en entreprise ou dans le cadre d’un projet de Logiciel Libre, s’interconnectant aujourd’hui à de très nombreux services d’intégration continue, les services offerts par Github ont pris une place considérable dans l’ingénierie logicielle ces dernières années.

Quelles sont ces critiques et sont-elles justifiées ? Nous proposons de les exposer dans un premier temps dans la suite de cet article avant de peser le pour ou contre de leur validité.

1. Points critiques

1.1 La centralisation

L’application Github appartient et est gérée par une entité unique, à savoir Github, inc, société américaine. On comprend donc rapidement qu’une seule société commerciale de droit américain gère l’accessibilité à la majorité des codes sources des applications du Logiciel Libre, ce qui représente un problème pour les groupes utilisant un code source qui devient indisponible, pour une raison politique ou technique.

github-logo

De plus cette centralisation pose un problème supplémentaire : de par sa taille, ayant atteint une masse critique, elle s’auto-alimente. Les personnes n’utilisant pas Github, volontairement ou non, s’isolent de celles qui l’utilisent, repoussées peu à peu dans une minorité silencieuse. Avec l’effet de mode, on est pas « dans le coup » quand on n’utilise pas Github, phénomène que l’on rencontre également et même devenu typique des réseaux sociaux propriétaires (Facebook, Twitter, Instagram).

1.2 Un logiciel privateur

Lorsque vous interagissez avec Github, vous utilisez un logiciel privateur, dont le code source n’est pas accessible et qui ne fonctionne peut-être pas comme vous le pensez. Cela peut apparaître gênant à plusieurs points de vue. Idéologique tout d’abord, mais peut-être et avant tout pratique. Dans le cas de Github on y pousse du code que nous contrôlons hors de leur interface. On y communique également des informations personnelles (profil, interactions avec Github). Et surtout un outil crucial propriétaire fourni par Github qui s’impose aux projets qui décident de passer chez la société américaine : le gestionnaire de suivi de bugs.

windowsWindows, qui reste le logiciel privateur par excellence, même si d’autres l’ont depuis rejoint

1.3 L’uniformisation

Travailler via l’interface Github est considéré par beaucoup comme simple et intuitif. De très nombreuses sociétés utilisent maintenant Github comme dépôt de sources et il est courant qu’un développeur quittant une société retrouve le cadre de travail des outils Github en travaillant pour une autre société. Cette fréquence de l’utilisation de Github dans l’activité de développeur du Libre aujourd’hui participe à l’uniformisation du cadre de travail dudit développeur.

L'uniforme évoque l'armée, ici l'armée des clonesL’uniforme évoque l’armée, ici l’armée des clones

2. Validité des points critiques

2.1 Les critiques de la centralisation

Comme dit précédemment, Github est aujourd’hui la plus grande concentration de code source du Logiciel Libre. Cela fait de lui une cible privilégiée.  Des attaques massives par dénis de service ont eu lieu en mars et août 2015. De même, une panne le 15 décembre 2015 a entraîné l’indisponibilité de 5% des dépôts. Idem le 15 novembre. Et il s’agit des incidents récents déclarés par les équipes de Github elles-mêmes. On peut imaginer un taux d’indisponibilité moyen des services bien supérieur.

githubdown

2.2 Les critiques relatives à utiliser un logiciel privateur

Cette critique, avant tout idéologique, se heurte à la conception même que chacun des membres de la communauté se fait du Logiciel Libre, et en particulier d’un critère : contaminant ou non, qu’on résume en général par GPL versus MIT/BSD.

 

bsdvsgpl

Les défenseurs du Logiciel Libre contaminant vont être gênés d’utiliser un logiciel propriétaire car ce dernier ne devrait pas exister. Il doit être assimilé, pour citer Star Trek,  car il est une boîte noire communicante, qui met en danger la vie privée, détourne nos usages à des fins commerciales, gêne ou contraint la liberté de jouir entièrement de ce qu’on a acquis, etc.

gplv3

Les pendants d’une totale liberté sont moins complexés dans leur utilisation des logiciels privateurs puisqu’ils acceptent l’existence desdits logiciels privateurs au nom d’une liberté sans restriction. Ils acceptent même que le code qu’ils développent aboutissent dans ces logiciels, ce qui arrive bien plus souvent qu’on ne le croit, voir à ce sujet la liste à couper le souffle des produits commerciaux reposant sur FreeBSD. On peut donc voir dans cette aile de la communauté du Logiciel Libre une totale sérénité à utiliser Github. Et ce qui est cohérent vis-à-vis de l’idéologie soutenue. Si vous êtes déjà allé au Fosdem, un coup d’œil dans l’amphithéâtre Janson permet de se rendre compte de la présence massive de portables Apple tournant sous MacOSX.

FreeBSD, principal projet des BSD sous licence MITFreeBSD, principal projet des BSD sous licence BSD

Mais au-delà de cet aspect idéologique pur et pour recentrer sur l’infrastructure de Github elle-même, l’utilisation du gestionnaire de suivi de bugs de Github pose un problème incontournable. Les rapports de bugs sont la mémoire des projets du Logiciel Libre. Il constitue le point d’entrée des nouveaux contributeurs, des demandes de fonctionnalités, des rapports de bugs et donc la mémoire, l’histoire du projet qui ne peut se limiter au code seul. Il est courant de tomber sur des rapports de bugs lorsque vous copiez/collez votre message d’erreur dans un moteur de recherche. Mémoire précieuse non seulement pour le projet lui-même, mais aussi pour ses utilisateurs actuels et à venir.

Github propose d’extraire les rapports de bugs via son API, certes, mais combien de projets anticiperont une éventuelle défaillance de Github  ou un retournement de situation arrêtant brusquement le service ? Très peu à mon avis. Et comment migrer vers un nouveau système de suivi de bugs les données fournies par Github ?

L’exemple de l’utilitaire de gestion de listes de choses à faire (TODO list) Astrid, racheté par Yahoo! il y a quelques années reste un très bon exemple de service ayant grandi rapidement, largement utilisé et qui a fermé du jour au lendemain, proposant pendant quelques semaines seulement d’extraire ses données. Et il s’agissait là d’un simple gestionnaire de tâches à faire. Le même problème chez Github serait dramatiquement plus difficile à gérer pour de très nombreux projets, si on leur laisse la possibilité de le gérer. Certes le code reste disponible et pourra continuer de vivre ailleurs, mais la mémoire du projet sera perdue, alors qu’un projet comme Debian approche aujourd’hui les 800000 rapports de bugs. Une vraie mine d’or d’informations sur les problèmes rencontrés, les demandes de fonctionnalités et le suivi de ces demandes. Les développeurs du projet CPython passant chez Github ont anticipé ce problème et ne vont pas utiliser le système de suivi de bugs de Github.

Proposed Debian LogoDebian, l’un des principaux projets du Logiciel Libre avec autour de 1000 contributeurs officiels

 

2.3 L’uniformisation

La communauté du Logiciel Libre oscille sans cesse entre un besoin de normes afin de réduire le travail nécessaire pour l’interopérabilité et l’attrait de la nouveauté, caractérisée par l’intrinsèque besoin de différence vis-à-vis de l’existant.

Github a popularisé l’utilisation de Git, magnifique outil qui aujourd’hui touche des métiers bien différents des programmeurs auxquels il était initialement lié. Peu à peu, tel un rouleau compresseur, Git a pris une place si centrale que considérer l’usage d’un autre gestionnaire de sources est quasiment impossible aujourd’hui, particulièrement en entreprise, malgré l’existence de belles alternatives qui n’ont malheureusement pas le vent en poupe, comme Mercurial.

git-logo

Un projet de Logiciel Libre qui naît aujourd’hui, c’est un dépôt Git sur Github avec un README.md pour sommairement le décrire. Les autres voies sont totalement ostracisées. Et quelle est la punition pour celui qui désobéit ? Peu ou pas de contributeurs potentiels. Il semble très difficile de pousser aujourd’hui le contributeur potentiel à se lancer dans l’apprentissage d’un nouveau gestionnaire de sources ET une nouvelle forge pour chaque projet auquel on veut contribuer. Un effort que fournissait pourtant tout un chacun il y a quelques années.

Et c’est bien dommage car Github, en proposant une expérience unique et originale à ses utilisateurs, taille  à grands coups de machette dans les champs des possibles. Alors oui, sûrement que Git est aujourd’hui le meilleur des système de gestion de versions. Mais ça n’est pas grâce à cette domination sans partage qu’un autre pourra émerger. Et cela permet à Github d’initier à Git les nouveaux arrivants dans le développement  à un ensemble de fonctionnalités très restreint, sans commune mesure avec la puissance de l’outil Git lui-même.

Centralisation, uniformisation, logiciels privateurs et bientôt… fainéantise ?

Le combat contre la centralisation est une part importante de l’idéologie du Logiciel Libre car elle accroît le pouvoir de ceux qui sont chargés de cette centralisation et qui la contrôlent sur ceux qui la subissent. L’aversion à l’uniformisation née du combat contre les grandes firmes du logiciel souhaitant imposer leur vision fermée et commerciale du monde du logiciel a longtemps nourri la recherche réelle d’innovation et le développement d’alternatives brillantes. Comme nous l’avons décrit, une partie de la communauté du Libre s’est construit en opposition aux logiciels privateurs, les considérant comme dangereux. L’autre partie, sans vouloir leur disparition, a quand même choisi un modèle de développement à l’opposé de celui des logiciels privateurs, en tout cas à l’époque car les deux mondes sont devenus de plus en plus poreux au cours des dernières années.

 

L’effet Github est donc délétère au point de vue des effets qu’il entraîne : la centralisation,  l’uniformisation, l’utilisation de logiciels privateurs comme leur système de gestion de version, au minimum. Mais la récente affaire de la lettre « Cher Github… » met en avant un dernier effet, totalement inattendu de mon point de vue : la fainéantise. Pour les personnes passées à côté de cette affaire, il s’agit d’une lettre de réclamations d’un nombre très important de représentants de différents projets du Logiciel Libre qui réclament à l’équipe de Github d’entendre leurs doléances, apparemment ignorées depuis des années, et d’implémenter de nouvelles fonctionnalités demandées.

Mais depuis quand des projets du Logiciel Libre qui se heurtent depuis des années à un mur tentent-ils de faire pleurer le mur et n’implémentent pas la solution qui leur manquent ? Lorsque Torvald a subi l’affaire Bitkeeper et que l’équipe de développement du noyau Linux n’a plus eu l’autorisation d’utiliser leur gestionnaire de versions, Linus a mis au point Git. Doit-on rappeler que l’impossibilité d’utiliser un outil ou le manque de fonctionnalités d’un programme est le moteur principal de la recherche d’alternative et donc du Logiciel Libre ? Tous les membres de la communauté du Logiciel Libre capable de programmer devrait avoir ce réflexe. Vous n’aimez pas ce qu’offre Github ? Optez pour Gitlab. Vous n’aimez pas Gitlab ? Améliorez-le ou recodez-le.

gitlabLogo de Gitlab, une alternative possible à Github

Que l’on soit bien d’accord, je ne dis pas que tout programmeur du Libre qui fait face à un mur doit coder une alternative. En restant réaliste, nous avons tous nos priorités et certains de nous aiment dormir la nuit (moi le premier). Mais lorsqu’on voit 1340 signataires de cette lettre à Github et parmi lesquels des représentants de très grands projets du Logiciel Libre, il me paraît évident que les volontés et l’énergie pour coder une alternative existe. Peut-être d’ailleurs apparaîtra-t-elle suite à cette lettre, ce serait le meilleur dénouement possible à cette affaire.

Finalement, l’utilisation de Github suit cette tendance de massification de l’utilisation d’Internet. Comme aujourd’hui les utilisateurs d’Internet sont aspirés dans des réseaux sociaux massivement centralisés comme Facebook et Twitter, le monde des développeurs suit logiquement cette tendance avec Github. Même si une frange importante des développeurs a été sensibilisée aux dangers de ce type d’organisation privée et centralisée, la communauté entière a été absorbée dans un mouvement de centralisation et d’uniformisation. Le service offert est utile, gratuit ou à un coût correct selon les fonctionnalités désirées, confortable à utiliser et fonctionne la plupart du temps. Pourquoi chercherions-nous plus loin ? Peut-être parce que d’autres en profitent et profitent de nous pendant que nous sommes distraits et installés dans notre confort ? La communauté du Logiciel Libre semble pour le moment bien assoupie.

cat-sleeping-fireplaceLe « lion » devant la cheminée

21 January, 2016 11:00PM by Carl Chenet

January 13, 2016

Feed2tweet 0.2 : pouvoir de la ligne de commande

Feed2tweet a été publié en version 0.2 ! Cette application prend en entrée un flux RSS et envoie les différentes entrées sur le réseau social Twitter. Elle est auto-hébergée, codée en Python 3, sous licence GPLv3 et documentée.

Feed2tweet est déjà en production sur plusieurs sites web dont le Journal du hacker, site participatif et communautaire d’informations sur le Logiciel Libre et opensource, dans le cadre duquel il a été développé originellement.

logo-journal-du-hacker

Feed2tweet n’est pas apparu ex nihilo et a été divergé d’un précédent projet nommé rss2twitter, plus mis à jour depuis 2013, afin d’être plus évolutif et pour y ajouter des fonctionnalités.

Les nouveautés

Plusieurs options pour la ligne de commande ont été contribuées par Antoine Beaupré (@theanarcat), à savoir :

  • option -r ou —dry-run pour simuler l’exécution de Feed2tweet
  • option -d ou —debug pour activer les informations de debug
  • option -v ou —verbose pour suivre les étapes de l’exécution de Feed2tweet
  • option –cachefile pour configurer l’emplacement du fichier de cache
  • option —hashtaglist pour configurer l’emplacement du fichier des marques à mots multiples (voir documentation)
  • option -r ou —rss pour définir l’uri de la source du flux  RSS

Plusieurs corrections de bugs importants sont également au menu.

Et vous ? L’utilisez-vous ? Ou utilisez-vous ce type de programme ? Si oui n’hésitez pas à nous en parler, nous proposer des évolutions, rapporter des bugs ou pousser des nouvelles fonctionnalités ;)

 


13 January, 2016 11:00PM by Carl Chenet

hackergotchi for Tanguy Ortolo

Tanguy Ortolo

Réprimander un pollueur

Je n'aime pas les incivilités, et parmi celles-ci, le dépôt d'ordures sur la voie publique. Ce sentiment est aujourd'hui largement partagé, et certaines villes commencent d'ailleurs à réprimer ces comportements.

Il est toutefois un type particulier d'ordure que beaucoup de gens jettent sur la route sans même y penser : les mégots de cigarettes. Il s'agit bien d'ordures, de surcroît très polluantes, et leur place est dans un cendrier ou une poubelle. Leur dépôt sur la voie publique est passible d'une amende de 68 euros.

Mégots de cigarette

4 × 68 = 272 euros d'amende

Réprimander un fumeur-pollueur

J'étais à vélo. Un feu est passé au rouge, la voiture devant moi s'y est arrêtée, et son conducteur a jeté un mégot par la fenêtre. Je me suis avancé à son niveau, ai ramassé ce mégot, et l'ai remis dans la voiture par la fenêtre toujours ouverte : « C'est interdit de jeter des ordures sur la voie publique, Monsieur. »

Il n'y a pas à dire, ça défoule. Et ça énerve beaucoup le malappris concerné : « Ça [ne] va pas non, connard ? Petite bite ! » Prévoyant, j'avais déjà commencé à m'éloigner.

Conseils

Dans certaines villes, la police commence tout juste à réprimer le dépôt de mégots par des piétons, mais à ma connaissance, rien n'est encore fait pour les automobilistes, bien qu'ils n'aient aucune excuse, leur véhicule pouvant être muni d'un cendrier. Il est donc utile de les réprimander soi-même, mais sans jamais se livrer à des dégradations, parce qu'il s'agit de promouvoir le respect et non de rendre justice : une phrase et une restitution du mégot suffit.

Le pollueur étant par définition un être peu civilisé, cette action peut l'énerver et le conduire à tenter d'exercer des représailles. Il est donc important de faire cela dans des conditions qui permettent d'éliminer ce risque :

  • À vélo ou patins à roulettes, afin qu'il ne puisse pas vous rattraper s'il descend de sa voiture dans le but de vous frapper (c'est un comportement assez fréquent, qui mérite une amende pour tentative de coups).
  • Dans une rue bordée de trottoirs plantés d'arbres ou munis de barrières anti-stationnement, afin de pouvoir se mettre à l'abri s'il décide d'utiliser sa voiture dans le but de vous percuter (j'ai déjà vu ce genre de comportement après avoir réprimandé un chauffard pour un autre motif, et ça mérite un emprisonnement pour tentative d'homicide).
  • Pour un pollueur qui n'a pas l'air d'une brute trop décérébrée pour être récupérable pour la société, qui pourrait être vraiment dangereux.

En cas de problème, souvenez-vous que contrairement à vous, le pollueur a une voiture, donc une immatriculation qui permet de l'identifier ; n'hésitez pas à le lui rappeler.

Conclusion

Bien que le pollueur lui-même puisse être considéré comme une ordure pour son comportement, il peut être recyclé pour avoir une seconde vie, respectueuse de la société et de l'environnement.

13 January, 2016 12:26PM by Tanguy

January 12, 2016

Carl Chenet

Étendre votre réseau Twitter avec Retweet 0.8

Pour rappel si vous n’avez pas lu mes précédents billets sur le sujet,  Retweet est une application  permettant de retweeter tous ou certains statuts d’un compte du réseau social  Twitter vers un autre compte.

Retweet est codé en Python 3 et sous licence GPLv3.

Le principe est de s’appuyer sur un compte Twitter existant avec suffisamment d’utilisateurs pour faire connaître un autre compte moins connu en retweetant tous les tweets ou certains des tweets émanant de ce second compte.

Retweet prend désormais de nombreux critères, comme la présence de marques (tags) spécifiques pour interdire ou considérer le statut à retweeter, le nombre de retweets qu’a déjà un statut ou l’âge du tweet pour le retweeter ou non.

Retweet est en production sur plusieurs sites, dont le Journal du hacker et LinuxJobs.fr, le job board de la communauté du Logiciel Libre et de l’opensource.

linuxjobs-horizontale

Nouveautés

Cette version 0.8 de Retweet intègre les nouveaux critères applicables aux statuts du compte source :

  • older_than : ne retweete un statut que s’il est plus vieux qu’une durée exprimée en minutes
  • younger_than : ne retweete un statut que s’il est plus jeune qu’une durée exprimée en minutes
  • nouvelle option de la ligne de commande -l ou –limit permettant de ne considérer que les n derniers statuts du compte source

Vous utilisez Retweet ? N’hésitez pas à laisser vos remarques dans les commentaires !


12 January, 2016 11:00PM by Carl Chenet

January 04, 2016

Récapitulatif 2015

Cette année a sans nul doute été une de mes grandes années de contributions au Logiciel Libre. Afin de me remémorer le chemin parcouru, je vais prendre les sujets dans l’ordre.

1. Le Journal du hacker

J’en parle très souvent sur ce blog, je suis le fondateur du Journal du hacker, un site communautaire participatif à la Hacker News, principal site américain du genre. Sauf que contrairement à Hacker News, nous utilisons un logiciel libre.

Rejoint depuis par une équipe des plus dynamiques, nous avons cette année :

  1. changé de nom (de Journal du pirate vers Journal du hacker)
  2. mis en place le nouveau nom de domaine (de infos.mytux.fr vers http://www.journalduhacker.net)
  3. développé les comptes Twitter et Diaspora* du Journal du hacker
  4. fait connaître le projet aussi largement que possible
  5. développé des outils pour nos besoins (j’en reparle plus bas)
  6. et surtout surtout nourri le site au quotidien, merci à toute l’équipe pour ça !

logo-journal-du-hacker

2. LinuxJobs.fr

Un projet me trottait dans la tête depuis longtemps : réaliser un site d’emploi spécialisé dans la communauté francophone du Logiciel Libre et de l’opensource. 2015 est l’année qui allait me voir lancer le projet. Tout a bien commencé par une communication réussie sur LinuxFR. Le projet a eu plusieurs phases et m’a emmené dans une direction bien différente que celle où je pensais aller les premiers temps. Plusieurs étapes se sont succédés :

  1. analyse de l’offre existante
  2. le choix d’une solution, bien évidemment un logiciel libre
  3. travailler avec le développeur amont pour améliorer/corriger son programme
  4. travailler main dans la main avec la communauté FOSS pour fournir un outil qui l’intéresse
  5. créer les comptes Twitter et Diaspora* de LinuxJobs.fr et les alimenter
  6. développer des outils pour automatiser la plupart des tâches
  7. communiquer de façon transparente, par exemple grâce au nouveau blog de LinuxJobs.fr
  8. faire grandir la communauté des utilisateurs

Le résultat de ce travail est loin d’être achevé mais il me semble en bonne voie. La nouvelle version de LinuxJobs.fr rendue publique ce lundi 4 janvier 2016 avec le support des flux RSS pour les catégories et les villes va permettre de faire gagner les utilisateurs en indépendance et d’automatiser la communication des nouvelles offres publiées encore davantage.linuxjobs-horizontale

2. Twitter Out Of The Browser

Afin de faire connaître sur Twitter le Journal du hacker, puis plus récemment mon nouveau projet LinuxJobs.fr, j’ai dû développer différents outils autour de Twitter. Pour commencer, face à l’isolement et la difficulté à faire connaître aujourd’hui un nouveau projet via Twitter, j’ai codé rapidement un outil faisant une chose et la faisant bien : Retweet.

2.1 Retweet

Retweet est un logiciel développé sur Github (étoiles appréciées :) ) en Python 3.4 et sous licence GPLv3 a permis de retweeter les nouvelles postées sur le Journal du hacker vers mon compte personnel Twitter @carl_chenet . L’opération faisait d’une pierre deux coups : fournir des nouvelles en relation avec les sujets sur lesquels je tweete d’habitude à un public intéressé et nombreux. Et en retour leur faire connaître le Journal du hacker. Aujourd’hui nous avons dépassé les 800 membres du compte Twitter du Journal du hacker !

Le logiciel s’est enrichi de nouvelles fonctionnalités afin de répondre à différentes contraintes améliorant l’efficacité des retweets et je suis très content du chemin parcouru.

2.2 db2twitter

Le logiciel propulsant LinuxJobs.fr ne proposait pas au départ de flux RSS. J’ai donc dû me creuser la tête pour être capable d’extraire les offres d’emploi de la base de données et les poster automatiquement sur le compte Twitter de LinuxJobs.fr où la communauté d’abonnés allait croissante.

Quand vous travaillez seul sur un projet au départ, chaque tâche automatisée est une tâche dont on peut dédier le temps qu’on passait à la réaliser à faire autre chose.

J’avais donc besoin d’un logiciel qui allait chercher des informations dans une base de données, formait un tweet avec ses informations et postait le tweet en question sur Twitter. Rapidement je codais la réponse à ce problème : db2twitter, qui fit son apparition sur Github (étoiles appréciées :) ). Comme Retweet il est codé en Python 3.4 et sous licence GPLv3. Je poussais mon travail sur ce logiciel bien plus loin que ce que j’imaginais au départ, en le rendant assez flexible pour un usage général, adaptable à de nombreuses bases de données grâce à SQLAlchemy et en le documentant correctement.

Aujourd’hui db2twitter continue de parfaitement remplir son office pour LinuxJobs.fr et s’enrichit à chaque version de nouvelles fonctionnalités.

2.3 Feed2tweet

Depuis quasiment le premier jour, le Journal du hacker utilisait un programme permettant de transformer le flux RSS des nouveautés vers le compte Twitter du Journal du hacker.

L’équipe m’avait remonté des limitations du logiciel, en particulier sur le traitement des mots-dièse (hashtags). J’avais étudié le projet mais ce dernier semblait arrêté depuis 2013. Face à cette impossibilité de faire évoluer le logiciel avec son développeur amont originel, j’ai pris la décision de bifurquer du projet originel vers un nouveau projet : Feed2tweet

Feed2tweet, codé en Python 2 et sous licence GPLv3, encore sur Github (étoiles appréciées :) ), vise à être le contraire de ce qu’était son code originel : un bout de code sans documentation et inmaintenable. La première version a apporté des corrections importantes sur le traitement des mots-dièse et l’amélioration du fichier de configuration.

Après la version 0.1, j’ai immédiatement reçu plusieurs contributions. Le besoin d’améliorer ce logiciel était vraisemblablement là depuis longtemps. Nous travaillons en ce moment avec plusieurs développeurs afin de sortir une prochaine version offrant de nombreuses améliorations.

2.4 Twitterwatch

Lorsque vous automatisez une chaîne de traitement, il est de la plus grande importance de savoir quand cette chaîne est rompue. Car typiquement sans surveillance humaine, vous pouvez mettre littéralement des heures à vous en apercevoir. Suite à un incident de ce type où j’ai constaté que la chaîne de traitement était rompue depuis plus de 12 heures, j’ai pris la décision d’écrire un programme vérifiant l’âge du dernier tweet posté sur le compte du Journal du hacker et déclenchant une alerte le cas si besoin.

Twitterwatch était né. Codé en Python 3.4 sous licence GPLv3 et présent sur Github (étoiles appréciées :) ), il est encore un peu jeune et se limite à l’essentiel mais remplit déjà parfaitement son office en spammant ma boîte e-mail quand le dernier des tweets sur le compte Twitter du Journal du hacker est qualifié comme trop vieux. Ce qui indique donc un problème dans la chaîne de traitement.

3. Contributions au projet Debian

Étant développeur Debian, il était hors de question de laisser des programmes si intéressants hors de Debian ;p

C’est pourquoi j’ai inclus cette année Retweet et db2twitter dans les dépôts officiels Debian. J’ai essayé de mettre à jour les paquets régulièrement, même si j’ai pris un peu de retard en cette fin d’année. Une bonne résolution à prendre de plus pour 2015 :) Feed2tweet et Twitterwatch sont des projets encore très récents, mais les paquets Debian ne vont pas tarder à arriver.

Mes autres contributions pour Debian ont principalement consisté en des rapports de bugs afin de remonter des problèmes aux différents mainteneurs des paquets concernés qui sont tracés dans mes différents billets sur le sujet :

Je suis plutôt sur une bonne pente pour la publication de mes billets qui parlent de mes contributions au Libre et j’espère que je vais réussir à continuer dans cette voie.

4. Articles pour GNU/Linux Magazine France

Cela faisait bien longtemps (plusieurs années en fait) que je ne trouvais plus le temps d’écrire pour GNU/Linux Magazine France mais plusieurs opérations intéressantes effectuées pour des clients de mon activité d’infogérance MyTux m’ont donné l’occasion d’écrire quelques articles intéressants pour GLMF. J’aimerais poursuivre en 2016.

5. En conclusion

Un très long billet donc qui détaillait une année bien chargée en contribution à la communauté du Logiciel Libre et de l’opensource. J’espère avoir écrit des outils qui seront utiles à d’autres que moi et surtout que ces personnes se manifesteront pour créer une dynamique positive à chacune des projets en question. Le Libre c’est bien, mais à deux ou plus, c’est encore mieux.

Je reste donc à l’affût de tous les retours que l’on me fait sur mes différents projets. Toute critique est bonne à prendre tant qu’elle est constructive, et rien n’est aussi constructif qu’une bonne Push Request ;) Que ce soit dit pour 2016 !

 

 


04 January, 2016 11:00PM by Carl Chenet

hackergotchi for Raphaël Hertzog

Raphaël Hertzog

Mes activités libres en décembre 2015

Mon rapport mensuel couvre une grande partie de mes contributions au logiciel libre. Je l’écris pour mes donateurs (merci à eux !) mais aussi pour la communauté Debian au sens large parce que cela peut donner des idées aux nouveaux venus et que c’est également un des moyens les plus effectifs de trouver des volontaires pour travailler sur les projets qui me tiennent à cœur.

Debian LTS

Ce mois-ci ce sont 21,25 heures de travail sur Debian LTS qui ont été subventionnées. Elles ont été consacrées aux tâches suivantes :

  • J’ai envoyé un premier patch, puis la mise à jour de ce dernier, pour modifier DAK afin qu’il puisse envoyer les emails d’acceptation/rejet au signataire de l’upload, plutôt qu’au mainteneur. Les détails sont disponibles dans le ticket n°796784;
  • J’ai envoyé des correctifs de compatibilité MySQL 5.5 pour phpmyadmin et postfix-policyd. Nous allons ainsi pouvoir proposer MySQL 5.5 comme une option de mise à jour depuis MySQL 5.1 (cf. la DLA 359-1);
  • J’ai publié la DLA 361-1 concernant bouncycastle, après avoir obtenu le feu vert de l’amont;
  • J’ai publié la DLA 362-1 concernant dhcpd, corrigeant trois vulnérabilités CVE;
  • J’ai publié la DLA 366-1 concernant arts, corrigeant une vulnérabilité CVE;
  • J’ai publié la DLA 367-1 concernant kdelibs, corrigeant une vulnérabilité CVE;
  • Je me suis occupé du support LTS une semaine entière;
  • J’ai parrainé l’envoi de foomatic-filters pour la DLA 371-1;
  • J’ai créé les rapports de bogue n°808256 et n°808257 pour obtenir le retrait de libnsbmp et libnsgif. Des vulnérabilités CVE ont affecté récemment ces deux paquets, restés inutilisés dans Debian depuis leur introduction il y a 6 ans…
  • J’ai publié la DLA 372-1 annonçant la fin du support de virtualbox-ose;
  • J’ai mis à jour le dépôt Git de debian-security-support pour prendre en compte le changement précédent, et pour m’occuper également de plusieurs problèmes en attente;
  • J’ai publié la DLA 376-1 concernant mono, corrigeant une vulnérabilité CVE;
  • J’ai ajouté à python-django les premiers tests DEP-8, qui vont nous permettre de nous assurer qu’une mise à jour de sécurité ne casse pas le paquet.

Distro Tracker

Je me suis particulièrement concentré sur tracker.debian.org ce mois-ci. J’ai terminé la bascule de l’interface email de packages.qa.debian.org vers tracker.debian.org, et j’ai annoncé ce changement sur la liste debian-devel-announce.

Quelques problèmes ont résulté de ces modifications. Problèmes qui ont rapidement été corrigés (comme par exemple le n°807073), ainsi que d’autres petits soucis que je fus seul à voir, et qui furent générés par des emails de spam absurdes (saviez-vous que l’objet d’un email ne peut pas comporter de caractère « nouvelle ligne », mais que ce dernier peut être encodé et replié sur plusieurs lignes ?).

En lien avec ce qui précède, j’ai corrigé plusieurs services de sorte à ce qu’ils envoient leurs emails directement à tracker.debian.org, plutôt que de compter sur les anciens emails (ces derniers sont retransmis pour l’instant, mais ce serait bien de nous en débarasser dans le futur). J’ai également mis à jour (avec l’aide de Lucas Nussbaum) le service qui retransmet au suiveur les bogues Launchpad. J’ai aussi envoyé un patch pour mettre à jour les alias @packages.debian.org (il n’a pas encore été appliqué), tout comme j’ai mis à jour la configuration de tous les scripts de notification des commits Git dans les projets Alioth collab-maint et python-modules (de nombreux restent à faire). J’ai demandé au Merge-O-Matic d’Ubuntu d’utiliser les nouveaux emails également (cf. le ticket LP n°1525497). DAK et le suiveur de bogues Debian doivent encore être mis à jour, dans la mesure où personne n’a encore réagi à mon annonce… Enfin, last but not least, j’ai mis à jour plusieurs pages de wiki qui dupliquaient les instructions de mise en place des notifications de commit envoyées aux suiveurs de paquets.

Pour continuer sur cette lancée, j’ai choisi de traiter un bogue critique de longue date pour la publication, et affectant tracker.debian.org (le n°789183). Pour se faire, j’ai mis à jour la base de code afin de me baser sur la version 4 de la librairie bootstrap de Twitter, en lieu et place de la version 2. J’ai du changer la librairie d’icônes, dans la mesure où glyphicons n’est plus fournie avec bootstrap, et que la licence associée à la version indépendante ne permettait pas son utilisation. J’ai opté pour les Octicons de Github. Tout en faisant cela, j’ai réalisé de très nombreuses petites améliorations (clôturant quelques bogues en passant), et je pense que le résultat est plus agréable à utiliser.

J’ai aussi trié de nombreux bogues et corrigé quelques petits problèmes, comme la liste incomplète des architectures (n°793547), ou une page utilisée uniquement par les utilisateurs ayant JavaScript désactivé, ou bien encore les liens invalides pour des paquets utilisant encore CVS (uh, cf. le n°561228).

Travaux divers d’empaquetage

Django Après avoir ajouté quelques tests DEP-8 (dans le cadre de mes travaux Debian LTS, cf. ci-dessus), j’ai découvert que la version actuelle d’unstable ne passait pas avec succès sa suite de tests…j’ai donc créé un rapport de bogue pour l’amont (ticket n°26016), en y attachant le patch correspondant. Et j’ai poussé pour que python-bcrypt soit mis à jour dans Debian vers une nouvelle version compatible avec Django 1.9 (cf. le n°803096). J’ai également corrigé un petit problème affectant Django (cf. le ticket 26017 et ma demande d’intégration qui a été acceptée).

J’ai demandé aux responsables de la publication de considérer l’acceptation de la dernière version 1.7.x dans Jessie (cf. le n°807654), mais je n’ai reçu aucune réponse à ce jour. Sachant que je ne suis pas le seul à attendre un retour, c’est une situation quelque peu ennuyeuse… Nous disposons encore de quelques semaines avant la sortie de la prochaine version mineure, mais pour une fois je m’y suis pris en avance et j’aimerais recevoir un retour dans un délai raisonnable.

Last but not least, j’ai commencé à maintenir la version LTS actuelle (1.8.x) dans jessie-backports.

Tryton J’ai mis à jour Tryton vers la version 3.8 et découvert un bogue que j’ai consigné dans le rapport n°806781. J’ai parrainé 5 nouveaux modules Tryton pour Matthias Behrle (qui est mainteneur Debian), ainsi qu’un correctif de sécurité (corrigeant la vulnérabilité CVE-2015-0861).

Cahier de l’Admin Debian J’ai poussé une nouvelle version vers unstable et demandé (aux responsables de la publication) la permission de pousser un rétroportage de celle-ci vers Jessie. De cette manière, Jessie disposerait d’une version de ce paquet documentant Jessie, et non Wheezy… Au contraire de mon autre demande concernant Django, celle-ci devrait faire consensus, mais je n’ai là non plus reçu aucun retour à ce jour, cf. le n°807515.

Divers J’ai créé le rapport de bogue n°808583, concernant sbuild qui a cessé de fonctionner avec Perl 5.22. J’ai traité le rapport n°807860 concernant publican : j’ai trouvé le ticket amont correspondant et découvert un moyen de contourner le problème avec l’aide de l’amont (tous les détails ici).

Travaux liés à Kali

J’ai remonté un bogue sur le canal #debian-apt lié à un calcul erroné de la taille du téléchargement (dont le résultat atteignait 18 Eb !), ce qui a entraîné sa correction dans la version 1.1.4. Sans ce correctif, il n’était plus possible d’installer un méta-paquet dont la taille excédait 2Gb. Or nous avons un méta-paquet kali-linux-all dans ce cas, qui est régulièrement installé dans un test Jenkins.

J’ai ajouté le support des catcha dans Distro Tracker, et activé cette fonctionnalité sur pkg.kali.org.

J’ai créé le rapport de bogue n°808863 concernant uhd-host. Il n’était pas possible d’installer ce paquet dans un environnement chrooté géré par systemd-nspawn, et où /proc était en lecture seule. Ce contexte d’utilisation est celui que nous avons commencé à utiliser pour tester la procédure de dist-upgrade d’une version de Kali vers la suivante…

Merci

Rendez-vous au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Free Software Activities in December 2015 contribuée par Weierstrass01.

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

04 January, 2016 08:43AM by Raphaël Hertzog

December 27, 2015

Carl Chenet

Liens intéressants Journal du hacker semaine #52

Pour la 52ème semaine de 2015, voici 5 liens intéressants que vous avez peut-être ratés, relayés la semaine précédente par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

quadrature

logo-journal-du-hacker

Red_hat_logo

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets.

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)


27 December, 2015 09:45PM by Carl Chenet

December 07, 2015

hackergotchi for Raphaël Hertzog

Raphaël Hertzog

Mes activités libres en novembre 2015

Mon rapport mensuel couvre une grande partie de mes contributions au logiciel libre. Je l’écris pour mes donateurs (merci à eux !) mais aussi pour la communauté Debian au sens large parce que cela peut donner des idées aux nouveaux venus et que c’est également un des moyens les plus effectifs de trouver des volontaires pour travailler sur les projets qui me tiennent à cœur.

Debian LTS

Ce mois-ci ce sont 21,25 heures de travail sur Debian LTS qui ont été subventionnées. Elles ont été consacrées aux tâches suivantes :

  • Du 2 au 8 novembre, je me suis occupé du support LTS : triant les nouvelles vulnérabilités CVE, créant des rapports de bogue, et répondant aux échanges sur les listes de diffusion. J’ai poussé 26 commits vers le suiveur de sécurité. Alors que j’analysais la CVE-2015-7183, j’ai découvert d’autres copies embarquées de nspr (ce qui a eu pour conséquence la création du n°804058). J’ai également ajouté un commentaire à la discussion sur le correctif amont pour la CVE-2015-5602, qui semblait incomplet en l’état;
  • J’ai préparé et publié la DLA-339-1 concernant libhtml-scrubber-perl, corrigeant une vulnérabilité CVE;
  • J’ai préparé et publié la DLA-350-1 concernant eglibc, et issue d’un rétroportage non-trivial, corrigeant une vulnérabilité CVE;
  • J’ai préparé et publié la DLA-353-1 concernant imagemagick et corrigeant deux failles de sécurité non encore déclarées comme CVE (j’en ai marqué une comme n’affectant pas Squeeze);
  • J’ai ajouté un troisième patch à ma mise à jour – toujours en suspens – de bouncycastle, suite à sa revue par l’auteur amont. Ce dernier m’a demandé de retarder encore cette mis à jour, dans l’attente d’autres correctifs connexes qui devraient arriver;
  • J’ai initié la correction de la DLA-352-1, en identifiant les commits amont qui corrigeaient cette faille de sécurité;
  • J’ai passé un peu de temps à contrôler les tickets assignés depuis longtemps mais sans aucun progrès visible depuis, dans l’espoir de les débloquer (libvncserver, pound, quassel).

Cahier de l’Admin Debian

Maintenant que la version anglaise pour Debian 8 Jessie a été finalisée (j’ai envoyé le paquet vers Debian unstable), je concentre mes efforts sur la version française. Le livre a été intégralement traduit et nous sommes maintenant en train de finaliser la version papier, que les éditions Eyrolles vont, comme pour les précédentes éditions, publier.

Paris Open Source Summit

J’étais présent à Paris les 18 et 19 novembre derniers pour l’Open Source Summit de Paris. J’ai aidé à tenir le stand Debian France durant deux jours (avec l’aide de François-Régis et plusieurs autres personnes).

François-Régis Vuillemin, Juliette Belin and Raphaël HertzogFrançois Vuillemin, Juliette Belin and Raphaël Hertzog

Nous avons eu la visite sur notre stand de Juliette Belin, qui a créé le thème et les illustrations de Debian 8 Jessie. Nous manquions de goodies mais nous avons organisé une loterie pour gagner 12 des exemplaires de la version française de mon livre.

Travaux d’empaquetage Debian

Django Après deux mois de travaux préparatoires sur les dépendances inverses, j’ai poussé Django 1.8 vers unstable, et augmenté la criticité des bogues restants. J’ai par la suite poussé une nouvelle version mineure amont (1.8.6). Je me suis également occupé d’un bogue critique touchant la publication, tout d’abord en ouvrant un rapport auprès de l’amont, puis en écrivant et soumettant à l’amont un patch. J’ai enfin envoyé vers les dépôts Debian la version 1.8.7-2 accompagnée de mon patch.

Un autre petit correctif que j’avais soumis a été rejeté, car la page du manuel est générée via Sphinx. J’ai donc du remonter un bogue concernant Sphinx (visible ici). Dans l’intervalle, une solution de contournement a été trouvée.

NMU pour apt-xapian-index Il y a très longtemps, j’ai remonté un bogue critique pour la publication concernant ce paquet (le n°793681). Mais le mainteneur ne s’en est pas occupé. Fort heureusement Sven Joachim a préparé un envoi en tant que non-mainteneur, et je n’ai eu qu’à pousser son travail. Cela a eu pour conséquence un autre problème causé par des changements dans la complétion Bash. Problème que Sven a rapidement corrigé, et dont j’ai poussé une deuxième fois le travail quelques jours plus tard.

Gnome-shell-timer J’ai transféré le n°805347 vers le problème gnome-shell-timer n°29, mais gnome-shell-timer a été abandonné par l’amont. Sur une suggestion de Paul Wise, j’ai essayé de faire en sorte que cette sympathique extension soit intégrée dans gnome-shell-extensions. La requête a été rejetée. Y a-t-il quelqu’un de compétent en Javascript qui souhaiterait adopter ce projet en tant que développeur amont ? Il s’agit d’un projet requérant un faible travail de maintenance, avec une base utilisateurs conséquente et fidèle.

Divers J’ai corrigé le bogue n°804763 affectant zim, qui était la conséquence d’un mauvais patch spécifique à Debian. J’ai parrainé l’envoi de pylint-plugin-utils_0.2.3-2.dsc de Joseph Herlant, afin de corriger un bogue critique pour la publication. J’ai créé le rapport n°806237 concernant lintian. J’ai également créé d’autres rapports de bogues pour l’amont, en lien avec mes travaux sur Kali : un concernant sddm, un autre concernant john.

Autres travaux en relation avec Debian

Distro-Tracker J’ai finalement intégré le travail d’Orestis Ioannou concernant le bogue n°756766, qui apporte la possibilité de naviguer parmi les infos précédentes de chaque paquet.

Installeur Debian J’ai implémenté deux petites fonctionnalités que nous souhaitions avoir dans Kali : j’ai corrigé le bogue n°647405, ce afin de disposer d’un moyen de désactiver les lignes « deb-src » dans les fichiers sources.list générés. J’ai également créé le rapport de bogue n°805291, dont l’objet est de savoir comment permettre à la préconfiguration de l’invite de commande du kernel de prendre le pas sur celle d’initrd… la correction en est triviale et cela fonctionne déjà dans Kali. Il me suffit juste de pousser la modification dans Debian, j’espérais juste une validation d’un responsable Debian avant de l’envoyer.

Merci

Rendez-vous au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Free Software Activities in November 2015 contribuée par Weierstrass01.

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

07 December, 2015 10:55AM by Raphaël Hertzog

November 09, 2015

Mes activités libres en octobre 2015

Mon rapport mensuel couvre une grande partie de mes contributions au logiciel libre. Je l’écris pour mes donateurs (merci à eux !) mais aussi pour la communauté Debian au sens large parce que cela peut donner des idées aux nouveaux venus et que c’est également un des moyens les plus effectifs de trouver des volontaires pour travailler sur les projets qui me tiennent à cœur.

Debian LTS

Ce mois-ci ce sont 13,25 heures de travail sur Debian LTS qui ont été subventionnées. Elles ont été consacrées aux tâches suivantes :

  • J’ai préparé et publié la DLA 330-1, corrigeant deux vulnérabilités CVE affectant unzip;
  • J’ai préparé une mise à jour de bouncycastle corrigeant la vunérabilité CVE-2015-7940 (après avoir demandé l’assignation d’un numéro CVE, personne ne l’ayant fait auparavant). Je n’ai pas encore publié la DLA correspondante, car j’attends une revue de code par un des auteurs amont. Il s’agit d’un code de chiffrement Java qui n’était absolument pas trivial à rétroporter, je souhaite donc être certain de n’avoir rien cassé. Les patchs sont accessibles via le rapport de bogue n°802671 que j’ai ouvert;
  • J’ai testé la mise à jour vers MySQL 5.5 avec de multiples paquets et fait part de mes découvertes sur la liste de diffusion debian-lts.

J’ai également initié une discussion sur les travaux que les contributeurs rémunérés pouvaient entreprendre s’ils avaient un peu de temps disponible, dans la mesure où le niveau de financement actuel peut nous permettre d’investir un peu de temps sur autre chose que les mises à jour de sécurité.

Cahier de l’Admin Debian

J’ai passé pas mal de temps à la finalisation de la mise à jour du livre pour Jessie, à la fois pour ce qui est du contenu et ce qui concerne la mise en page de la version papier.

Debian Handbook: cover of the jessie edition

Divers travaux Debian

GNOME 3.18. J’ai envoyé une nouvelle version de gnome-shell-timer compatible avec GNOME Shell 3.18, et créé les rapports de bogue n°800660 et n°802480 concernant une ennuyeuse régression de gnome-keyring… J’ai réalisé de nombreux tests avec le mainteneur Debian (Dmitry Shachnev, merci à lui !) et les développeurs amont (cf. ici et ). Mises à part ces régressions, j’aime beaucoup GNOME 3.18 !

Migration de l’équipe python-modules vers Git. Après la migration vers Git, et puisque la politique de l’équipe impose maintenant l’utilisation de git-dpm pour tous ses membres, j’ai fait quelques essais avec ce dernier sur le paquet python-django, alors que je poussais sa version 1.8.5 vers experimental. Et le moins que je puisse dire est que je ne suis pas satisfait du résultat. J’ai rapporté 3 bogues synthétisant les problèmes que j’ai rencontrés avec git-dpm : n°801666 (aucun moyen de définir les noms de branches amont depuis le dépôt), n°801667 (aucun moyen satisfaisant de fusionner différentes branches d’empaquetage) et n°801668 (la création du tag amont n’est pas immédiate lors de l’import du tarball). Ces trois-là ne sont qu’une sélection parmi d’autres bogues ridicules déjà remontés tels que le n°801548 (ne marche pas avec des tags amont pré-existants et parfaitement valides).

Empaquetage Django. J’ai créé des rapports de bogue pour tous les paquets ayant des dépendances de compilation vers python-django qui échouaient à la compilation avec Django 1.8, et j’ai informé les mainteneurs que j’enverrai Django 1.8 vers unstable début novembre (ce qui est déjà fait). J’ai ensuite moi-même corrigé python-django-jsonfield, car le Distro Tracker dépend directement de ce paquet.

A la suite de cette remontée de bogues en masse, j’ai demandé une amélioration du paquet devscripts, et plus précisément du script « mass-bug » (cf. le n°801926). Et puisque j’ai utilisé « ratt » pour recompiler les paquets, j’ai créé une demande d’évolution pour ce nouvel outil également.

Mise à jour vers Tryton 3.6. J’ai mis à jour mon installation de Tryton vers la version 3.6, et créé le rapport de bogue n°803066 pour remonter le mauvais fonctionnement du script d’init SysV. Ce qui m’a rappelé que le processus de nomination au statut de Développeur Debian de Matthias Behrle (le mainteneur du paquet tryton) était à l’arrêt, du fait d’un bogue dans l’infrastructure NM. J’ai donc contacté l’équipe NM et nous avons trouvé un moyen de relancer le processus…

Distro Tracker. J’ai continué mon travail de refactorisation du processus de gestion des emails entrants (branche people/hertzog/mailprocessing). C’est à peu près finalisé et je dois maintenant l’éprouver dans un environnement de test, avant d’être capable de le déployer sur tracker.debian.org.

Cherche traducteur et relecteur pour le livre « Free Culture » de Lawrence Lessig

Ce n’est pas strictement lié à Debian, mais je voulais relayer un appel à l’aide de Benoît Guillon (l’auteur de dblatex qui m’a beaucoup aidé lorsque je travaillais sur la version anglaise du cahier de l’admin Debian) qui s’est lancé dans la traduction française du livre « Free Culture » de Lawrence Lessig.

Il cherche donc des relecteurs et des traducteurs et s’est associé avec Petter Reinholdtsen (un développeur Debian de longue date, qui travaille sur la traduction norvégienne du même livre) pour gérer cette traduction dans son dépôt git.

La traduction est géré sous Transifex:
https://www.transifex.com/pere/free-culture-lessig/

Le livre est sous licence Creative Commons (mais avec une restriction pour l’usage commercial apparemment). Le brouillon actuel est disponible ici.

N’hésitez pas à vous mettre en relation avec Benoît si vous êtes intéressé et/ou si vous voulez plus d’informations.

Merci

Rendez-vous au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Free Software Activities in October 2015 contribuée par Weierstrass01.

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

09 November, 2015 10:01AM by Raphaël Hertzog

October 15, 2015

hackergotchi for Charles Plessy

Charles Plessy

La pente glissante.

Étape par étape, on glisse vers le fond :

  1. Il faut s'exprimer durement avec ceux qui ont tort.
  2. On s'exprime durement quand on a raison.
  3. Quand on pense qu'on a raison, on est s'exprime durement.
  4. On a tort et on s'exprime durement.

Notons tout de même qu'on peut toucher le fond sans être vulgaire ou insultant. Dans tout grand projet comme Debian, on finit par trouver quelques gens qui savent être très oppressants, tout en restant très « corrects ». Debian est vaste, et il est facile de les éviter, mais dès que l'on s'essaye à des contributions qui collent à des mots-clés tels que « comité », « code », « charte », « délégation », etc., il vaut mieux ressortir la bonne vielle peau dure du placard où on l'avait rangée après l'adoption de notre nouveau code de conduite...

15 October, 2015 12:57PM

October 09, 2015

hackergotchi for Tanguy Ortolo

Tanguy Ortolo

Consultation République numérique : article anti-DRM

Le gouvernement français a lancé une consultation publique pour le projet de loi République numérique. Cela me semble une bonne occasion pour tenter de concrétiser une idée que j'ai depuis quelques années.

Contexte

Certaines œuvres sont vendues avec des verrous numériques, qui posent plusieurs problèmes, qui peuvent essentiellement se résumer à ceci : l'acheteur ne dispose pas vraiment de ce qu'il a acheté. L'organisation responsable du fonctionnement de ce verrou numérique peut par exemple mettre fin à l'utilisation de cette œuvre. Pire encore, les œuvres équipées de verrous numériques reposant sur le bon fonctionnement d'un service distant cesseront nécessairement de fonctionner lorsque celui-ci sera arrêté, or si on recense plusieurs exemples de services ayant pris fin, je n'ai pas connaissance de services dont le fonctionnement serait éternel.

Ceci ne concerne pas seulement les œuvres verrouillées, mais également les jeux vidéos ne disposant que d'un mode de jeu en ligne dépendant d'un service fourni par leur éditeur.

Projet d'article

L'idée est donc de considérer qu'une vente d'œuvre sous forme numérique est censée permettre à l'acheteur de l'utiliser sans limite de lieu, de temps et d'équipement, et que s'il se retrouve dans l'incapacité de le faire à cause d'un verrou numérique, il ne s'agissait pas d'une vente, et que si elle était présentée comme telle, il s'agissait alors d'une escroquerie.

Une telle obligation, et une telle sanction en cas de manquement, ferait évidemment courir un grand risque juridique aux fournisseurs d'œuvres verrouillées présentant leur offre comme une vente. La fourniture d'œuvre verrouillée devrait alors être explicitement présentée comme ce qu'elle est vraiment, à savoir une location à durée éventuellement indéterminée.

Le texte

Je n'ai jamais appris à rédiger des articles de loi, c'est donc probablement très mauvais : si vous avez des suggestions de modifications avant que je ne soumette ça dans la consultation République numérique, dites-le-moi en commentaire.

La fourniture d'une œuvre de l'esprit sous forme numérique est assimilée à une vente dès lors qu'elle est présentée comme telle, par l'utilisation de termes du champ sémantique de la vente, tels que « acheter », « vendre » ou « acquérir ». La fourniture d'une œuvre de l'esprit sous forme numérique n'est pas assimilée à une vente dès lors qu'elle est explicitement présentée comme une location, à durée déterminée ou non, comme un prêt à durée déterminée ou non, ou comme un don, par l'utilisation exclusive de termes du champ sémantique de ces notions.

Lors de la vente d'une œuvre de l'esprit sous forme numérique, le vendeur fournit à l'acheteur un moyen technique, permettant la représentation de cette œuvre sans limite de lieu, de temps et d'équipement, tel qu'une fichier numérique dans un format standard et ouvert.

Après la vente d'une œuvre de l'esprit et sans limite de temps, lorsque l'acheteur, ou le propriétaire ultérieur par voie de vente d'occasion ou de succession, est dans l'impossibilité de représenter cette œuvre suite à l'arrêt d'un service nécessaire au fonctionnement d'une mesure technique de protection, au dysfonctionnement d'un service nécessaire au fonctionnement d'une mesure technique de protection, à une limite imposée par une mesure technique de protection ou toute autre raison non imputable à l'acheteur ou au propriétaire, la vente est assimilable à une escroquerie.

09 October, 2015 04:32PM by Tanguy

October 06, 2015

Florent Gallaire

Erlang passe sous licence Apache 2.0

Le langage de programmation Erlang est passé sous licence Apache 2.0, à l’occasion de la sortie de sa version 18.0 le 24 juin dernier.

Au commencement un logiciel propriétaire, Erlang avait été libéré par Ericsson en 1998 sous Erlang Public License, une version modifiée de la licence Mozilla.

L’abandon total d’un Copyleft déjà faible me semble anecdotique dans ce changement de licence. En revanche, le passage d’un important logiciel libre d’une licence spécifique à une licence très populaire participe d’un mouvement de consolidation des licences de logiciel libre, permettant une compréhension plus claire des obligations y afférentes et donc une meilleure sécurité juridique.

Pour le choix d’une licence sans Copyleft, ou « permissive », la licence Apache 2.0 est à recommander, tout comme le fait la Free Software Foundation, car elle est plus complète que ses concurrentes, en particulier concernant les brevets.

La consolidation des licences libres est une évolution positive à mon sens, et l’exemple d’Erlang pourrait peut-être inspirer Python ou d’autres logiciels libres ayant leur propre licence…

06 October, 2015 01:44AM by fgallaire

October 04, 2015

hackergotchi for Raphaël Hertzog

Raphaël Hertzog

Mes activités libres en septembre 2015

Mon rapport mensuel couvre une grande partie de mes contributions au logiciel libre. Je l’écris pour mes donateurs (merci à eux !) mais aussi pour la communauté Debian au sens large parce que cela peut donner des idées aux nouveaux venus et que c’est également un des moyens les plus effectifs de trouver des volontaires pour travailler sur les projets qui me tiennent à cœur.

Debian LTS

Ce mois-ci ce sont 8 heures de travail sur Debian LTS qui ont été subventionnées. Ce temps a été consacré en grande partie au tri de vulnérabilités CVE (ces 3 derniers jours, sachant que je suis de « guichet LTS » cette semaine). J’ai poussé 14 commits vers le suiveur de sécurité cette semaine. Parmi ceux-ci se trouvaient plusieurs vulnérabilités CVE pour lesquelles aucune investigation n’avait été réalisée au préalable. J’ai en conséquence contrôlé le statut de ces dernières dans Wheezy et Jessie, en plus de Squeeze.

Hors temps rémunéré, j’ai écrit et envoyé le résumé de la session de travail ayant eu lieu durant la DebConf. J’ai également essayé d’initier une discussion sur une mise à disposition de mysql-5.5 dans Squeeze-LTS. Nous avons de plus mis en place lts-security@debian.org, afin de mieux gérer les mises à jour placées sous embargo.

Cahiers de l’Admin Debian

Debian Handbook: cover of the jessie editionJ’ai consacré ce mois-ci un temps conséquent à mon livre. La mise à jour du contenu est terminée, et maintenant nous en sommes à la relecture, avant la préparation de l’édition papier. J’ai également commencé sa traduction en français. Vous pouvez aussi aider à sa relecture.

En travaillant sur le livre, j’ai remarqué que snort ainsi que la politique SE Linux de référence avaient été retirés de Jessie. J’ai envoyé un email à leurs mainteneurs pour leurs conseiller de les proposer a minima via jessie-backports… Ces paquets sont relativement importants/populaires, et c’est bien dommage de ne pas les avoir dans Jessie.

J’espère avoir fini la mise à jour du livre dans deux semaines !

Distro Tracker

J’ai passé beaucoup de temps à revoir la gestion des emails dans Distro Tracker. Ce travail n’étant pas encore fini, je n’ai encore rien à montrer. Ceci étant dit, j’ai poussé un correctif important concernant les souscriptions emails (cf. le n°798555). En substance, toute souscription à un paquet contenant un tiret était cassée. Cela montre que le nouveau suiveur n’est pas encore largement utilisé pour ce qui est de l’abonnement aux emails…

J’ai également intégré un patch d’Andrew Starr-Bochicchio (le n°797633), qui améliore la description des items d’action WNPP. J’ai également passé en revue un autre patch soumis par Orestis Ioannou permettant la consultation des anciennes nouvelles (cf. le n°756766).

J’ai créé le rapport de bogue n°798011 concernant bugs.debian.org, demandant qu’un nouveau champ d’en-tête X-Debian-PR-Severity soit ajouté aux emails BTS sortants. Ainsi, Distro Tracker peut filtrer les emails par sévérité, et permettre aux utilisateurs de ne souscrire qu’aux emails concernant les bogues critiques pour la publication.

Travaux Debian divers

J’ai rapporté de nombreux bogues ce mois-ci, dont la quasi-totalité est liée à mon travail sur Kali :

  • 3 bogues concernant debootstrap : le n°798560 (demande d’une option --suite-config), le n°798562 (permettre de partager le code des scripts de bootstrap) et le n°7985604 (demande d’ajout des scripts de bootstrap liés à Kali);
  • 3 demandes de nouvelles versions amont : une pour gpsd (n°797899), une pour valgrind (n°800013) et une pour puppet (n°798636);
  • n°797783 : sbuild échoue sans message d’erreur lorsqu’il n’est pas possible d’écrire dans /var/lib/sbuild en chroot ;
  • n°798181 : gnuradio : certains fichiers mettent beaucoup trop longtemps à compiler (j’ai du demander un give-back sur un autre build daemon afin de m’assurer que gnuradio revenait dans testing. Julien Cristau a suggéré qu’il serait préférable de corriger le paquet, de sorte qu’un seul fichier ne mette pas plus de 5 heures à compiler…);
  • n°799550 : libuhd003v5 a perdu son suffixe v5…

Merci

Rendez-vous au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Free Software Activities in September 2015 contribuée par Weierstrass01.

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

04 October, 2015 01:05PM by Raphaël Hertzog

September 30, 2015

hackergotchi for Charles Plessy

Charles Plessy

\"Debian

# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2015-09-30 02:04+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: Plain text #, no-wrap msgid "\n" msgstr "" #. type: Plain text #, no-wrap msgid "\n" msgstr "" #. type: Plain text #, no-wrap msgid "\n" msgstr "" #. type: Plain text #, no-wrap msgid "\n" msgstr "" #. type: Plain text msgid "" "La semaine dernière, un collègue me demandait si j'avais abandonné Debian et " "Linux, car il me voyait utiliser un ordinateur portable VAIO. En effet, " "cette marque a la réputation de ne pas être un terrain fertile pour y " "installer Linux. Je m'étais d'ailleurs promis il y a quelques années de ne " "jamais en rachter après avoir découvert que le BIOS de mon Sony VAIO " "VGC-LT71DB (un ingégré tout-dans-l'écrant de bureau) était volontairement " "bridé pour empêcher l'activation de la virtualisation. Mais depuis, VAIO " "est devenu indépendant de Sony. Alors, encouragé par la lecture du [blog de " "Norbert " "Preining](https://www.preining.info/blog/2014/03/debian-linux-sony-vaio-pro-13/) " "j'ai décidé de re-tenter l'aventure avec un [VAIO Pro13 | " "mk2](https://vaio.com/products/pro_mk2/). Il faut dire que la machine était " "très tentante, sutout pour son poids léger, d'environ 1 kg seulement." msgstr "" #. type: Plain text msgid "" "La machine est livrée avec Windows 8 pré-installé en japonais. En premier, " "j'ai démarré Windows pour repartitionner la mémoire de masse. Je n'ai pas " "réussi à changer la langue alors une partie de l'opération s'est faite à " "moitié à l'aveuglette, mais j'ai réussi à éviter de devoir créer un compte " "utilisateur chez Microsoft. Ensuite le repartitionnement avec les outils de " "base de Windows s'est très bien passé grâce aux multiples tutoriels " "disponibles en ligne. Merci Microsoft pour cette agréable surprise, qui " "pourrait presque me faire oublier que sur un ordinateur neuf avec un Core i7 " "et 8 GiB de mémoire vive, Internet Explorer a planté net à la première " "visite de site web du journal [Le Monde](http://lemonde.fr)..." msgstr "" #. type: Plain text msgid "" "Ensuite, je suis rentré dans le BIOS en appuyant sur F3 et F4 en même temps " "(il m'a fallu éplucher tout le manuel pour trouver comment faire), et j'y ai " "activé la virtualisation, désactivé le lancement sécurisé (_Secure Boot_) et " "permis le démarrage sur port USB. J'ai ensuite [installé " "Jessie](https://bugs.debian.org/797311) avec l'installeur `20150422+deb8u1`, " "sans rencontrer aucun problème. Résutlat: un multi-boot Debian / Windows en " "UEFI en place sans aucun effort ; je suis très impressionné. Je n'utilise " "pas Windows mais je vais le garder quelques temps au cas où un problème " "matériel arriverait dans les premiers mois." msgstr "" #. type: Plain text msgid "" "Au final, je suis très satisfait. Il reste néanmois quelques petits ennuis " "qui de l'espère vont s'améliorer au fil des mises à jour. En premier lieu, " "[le clavier ne se réveille pas après " "hibernation](https://bugs.debian.org/797392). Ça veut dire que si je rabat " "l'écrant, je ne peut plus rien faire. En attendant une solution, l'outil de " "personnalisation de GNOME permet de remplacer l'hibernation par une simple " "extintion de l'écran. Pour le moment, la batterie se vide en quatre heures, " "probablement parce que [la platforme Broadwell n'est pas encore bien prise " "en charge](http://mjg59.dreamwidth.org/34868.html). L'écran a une bonne " "résolution, trop bonne pour mes yeux myopes et certains logiciels ne " "respectent pas la taille par défaut des fontes, que j'ai augmentée pour mon " "confort. À part ça, j'adore cette machine et j'espère la garder longtemps." msgstr ""

30 September, 2015 02:05AM

September 13, 2015

hackergotchi for Raphaël Hertzog

Raphaël Hertzog

Mes activités libres en août 2015

Mon rapport mensuel couvre une grande partie de mes contributions au logiciel libre. Je l’écris pour mes donateurs (merci à eux !) mais aussi pour la communauté Debian au sens large parce que cela peut donner des idées aux nouveaux venus et que c’est également un des moyens les plus effectifs de trouver des volontaires pour travailler sur les projets qui me tiennent à cœur.

Debian LTS

Ce mois-ci ce sont 6,5 heures de travail sur Debian LTS qui ont été subventionnées. Elles ont été consacrées aux tâches suivantes :

  • J’ai préparé et publié la DLA-301-1, corrigeant 2 vulnérabilités CVE dans python-django;
  • J’ai effectué une semaine de « guichet LTS », triant les vulnérabilités CVE. J’ai poussé 11 commits vers le suiveur de sécurité.

En plus de ces activités, j’ai également présenté Debian LTS à la DebConf 15 de Heidelberg, et coordonné une session de travail concernant nos plans pour Wheezy. Jetez un œil aux enregistrements vidéo :

DebConf 15

C’est avec grand plaisir que j’ai participé à la DebConf 15, après avoir manqué la DebConf 14 l’année dernière. Je n’ai pas spécialement beaucoup travaillé là-bas, mais j’ai participé à beaucoup de discussions et c’est avec une motivation renouvelée pour travailler sur Debian que j’en suis revenu, ce qui est toujours bien. :-)

En ce qui concerne le travail réalisé durant la DebConf, je ne peux revendiquer que deux uploads de schroot pour corriger l’absence de support du nouveau système de fichier overlay qui remplace « aufs » dans le noyau Debian officiel, et un peu d’activités sur le Distro Tracker (notamment la correction d’un bogue que certaines personnes rencontraient lorsqu’elles étaient connectées via le SSO Debian).

Bien que les nombreuses discussions auxquelles j’ai participé durant la DebConf ne puissent être qualifiées de « travail », elles contribuent de manière certaine à ébaucher la structure des activités à mener dans le futur :

En tant que développeur Kali, j’ai participé à de multiples sessions concernant les distributions dérivées (notamment le panel des dérivés de Debian).

Je me suis également intéressé à la discussion concernant « Debian dans l’informatique professionnelle », animée par Michael Meskes (Directeur Général de Credativ). Il a exposé un certain nombre de problèmes auxquels les utilisateurs peuvent être confrontés lorsqu’ils envisagent d’utiliser Debian, et nous allons essayer de faire quelque chose pour y remédier. Attendez-vous à de prochaines nouvelles et discussions à ce sujet.

Martin Krafft, Luca Filipozzi, et moi avons eu une discussion avec le Chef de Projet Debian (Neil) au sujet de la transformation/réanimation du programme des partenaires Debian. Rien n’est encore arrêté, mais au moins la dynamique initiée par le précédent Chef de Projet (Lucas) est relancée.

Travaux Debian divers

Parrainage J’ai parrainé un envoi (NMU) pour Daniel Stender concernant pep8, comme il s’agissait d’un prérequis pour prospector…que j’ai également parrainé, étant donné que toutes les dépendances requises étaient enfin disponibles dans Debian ! \o/

Empaquetage Autre envoi en tant que non-mainteneur (NMU) : libxml2 2.9.2+really2.9.1+dfsg1-0.1 corrigeant trois problèmes de sécurité et un bogue critique pour la publication, affectant publican.
Dans la mesure où il n’y a plus eu de correctifs amont depuis plus de 8 mois, je suis revenu à la version 2.9.1. Ce qui est conforme aux nouvelles contraintes édictées par les responsables de la publication… un paquet dans unstable devrait migrer vers testing relativement rapidement, il n’est pas acceptable de le garder non corrigé pendant des mois.

Maintenant que ce bogue ennuyeux a été corrigé, je peux de nouveau envoyer une nouvelle version amont de publican. J’ai donc préparé et envoyé la version 4.3.2-1, ce qui constitue mon premier envoi constitué des sources uniquement (« source only upload »). Cette publication a demandé plus de travail que je ne prévoyais, et ce ne sont pas moins de trois bogues que j’ai remontés à l’amont (nouveau chemin d’installation pour la complétion Bash, une demande de mise à disposition des sources d’un fichier javascript « minifié », et la suppression d’un fichier .po pour un code langue invalide).

Problèmes GPG avec les cartes à puces De retour de la DebConf, lorsque j’ai voulu signer des clés, j’ai de nouveau été confronté à un problème rendant impossible l’usage de mes deux smartcards l’une après l’autre, sans tout d’abord supprimer les amorces de la clé privée. Ce n’est pas un problème nouveau, mais j’ai décidé qu’il était temps de le remonter à l’amont. Ce qui fut fait via le ticket n°2079 sur bugs.gnupg.org.

Après quelques recherches, j’ai trouvé un moyen de contourner le problème. Un peu plus tard dans le mois, après un dist-upgrade suivi d’un redémarrage, je ne pouvais plus utiliser mes cartes comme clé d’authentification SSH… c’était également un problème déjà remonté mais sans analyse claire. J’ai donc décidé de procéder à la mienne, et communiqué le résultat dans le n°795368.
Il semble que la racine du problème soit pinentry-gnome3, qui ne fonctionne pas lorsqu’il est lancé par gpg-agent, lui-même lancé avant la session DBUS. Une solution simple consiste à relancer gpg-agent au cours de la session… mais je n’ai encore aucune idée sur ce que pourrait être une solution propre (laisser systemd gérer la session graphique utilisateur et démarrer gpg-agent serait ma première réponse, mais cela ne solutionne nullement le problème pour les utilisateurs d’autres systèmes d’init. Ce n’est donc pas satisfaisant).

Distro Tracker J’ai intégré deux patchs d’Orestis Ioannou, corrigeant quelques bogues marqués « pour les nouveaux contributeurs ». Il y en a d’autres (et j’en ai même créé deux : le n°797096 et le n°797223). Piochez dans la liste et contribuez pour la première fois à Distro Tracker, comme vient juste de le faire Orestis ! J’ai également intégré une modification de Christophe Siraut, qui a présenté Distro Tracker à la DebConf.

J’ai également implémenté dans Distro Tracker la nouvelle méthode d’authentification basée sur les certificats client SSL, récemment annoncée par Enrico Zini. Cela marche bien, et cette procédure d’authentification est bien plus simple à supporter. Beau boulot, Enrico !

tracker.debian.org a cessé de fonctionner durant la DebConf, et n’a plus été mis à jour avec de nouvelles données. En analysant les causes de cette défaillance, j’en suis arrivé à incriminer un problème dans l’archive (cf. le n°796892). Ansgar Burchardt aurait apparemment changé l’ensemble d’outils de compression utilisé sur certains dépôts jessie, remplaçant bz2 par xz. Il a supprimé les anciens Packages.bz2 mais a oublié certains Sources.bz2 qui étaient donc « périmés »… et APT a remonté une incohérence de somme de contrôle concernant le contenu décompressé.

Divers J’ai poussé de petites améliorations de mes formules Salt : schroot-formula et sbuild-formula. Elles détecteront maintenant automatiquement quel système de fichiers overlay est disponible avec le noyau utilisé (« aufs » était auparavant codé en dur).

Merci

Rendez-vous au mois prochain pour un nouveau résumé de mes activités !

Ceci est une traduction de mon article My Free Software Activities in August 2015 contribuée par Weierstrass01.

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

13 September, 2015 05:55AM by Raphaël Hertzog

August 15, 2015

Stéphane Blondon

DebConf15 à Heidelberg

Je suis à la DebConf15 et j’ai des preuves :

club_mate

La photo a été prise dans l’auberge de jeunesse. Le Club-Mate, c’est un peu la baguette des Allemands, avec la bière et la porte de Brandebourg. (La porte est un peu plus difficile à boire.)

Le logo compatible Club-Mate :
Dc15going1


15 August, 2015 05:30PM by ascendances

May 27, 2015

hackergotchi for Vincent Bernat

Vincent Bernat

Correction sans redémarrage de la faille VENOM de QEMU

La faille CVE-2015-3456, aussi connue sous le nom VENOM, exploite une faiblesse dans l’implémentation du contrôleur de disquettes de QEMU:

Le contrôleur de disquettes (FDC) de QEMU, tel qu’utilisé dans Xen […] et dans KVM permet aux systèmes invités de provoquer un déni de service (écriture hors limite suivie du crash du processus invité) ou éventuellement d’exécuter du code arbitraire à travers les commandes FD_CMD_READ_ID, FD_​CMD_​DRIVE_​SPECIFICATION_​COMMAND ou d’autres commandes non spécifiées.

Même lorsque QEMU a été configuré pour ne pas exposer de lecteur de disquettes, le contrôleur est toujours actif. La vulnérabilité est facile à tester1 :

#define FDC_IOPORT 0x3f5
#define FD_CMD_READ_ID 0x0a

int main() {
    ioperm(FDC_IOPORT, 1, 1);
    outb(FD_CMD_READ_ID, FDC_IOPORT);
    for (size_t i = 0;; i++)
        outb(0x42, FDC_IOPORT);
    return 0;
}

Une fois le correctif installé, tous les processus doivent être redémarrés pour que la mise à jour prenne effet. Il est possible de minimiser le temps de coupure en utilisant virsh save.

Une alternative serait de modifier le processus en cours d’exécution. Le noyau Linux a suscité beaucoup d’intérêt dans ce domaine avec des solutions telles que Ksplice, kGraft et kpatch, ainsi que par l’inclusion d’une structure commune dans le noyau. L’espace utilisateur ne dispose cependant pas de solutions aussi élaborées2.

Je présente ici une solution simple et sans dépendance pour corriger une instance de QEMU en cours d’exécution. Voici une courte démonstration :

Prototype

Essayons d’abord de trouver une modification simple à implémenter : bien qu’il soit possible de modifier du code en cours d’exécution, il est bien plus simple de modifier une variable.

Concept

En examinant le code du contrôleur de disquettes et le correctif, une façon d’éviter la vulnérabilité est de n’accepter aucune commande sur le port FIFO. Chaque requête aura comme réponse « Invalid command » (0x80). L’utilisateur ne pourra plus pousser aucun octet avant de lire la réponse, ce qui provoquera une remise à zéro de la queue FIFO. Bien sûr, le contrôleur de disquette deviendra alors inopérant.

La liste des commandes acceptées par le contrôleur sur le port FIFO se trouve dans le tableau handlers[] :

static const struct {
    uint8_t value;
    uint8_t mask;
    const char* name;
    int parameters;
    void (*handler)(FDCtrl *fdctrl, int direction);
    int direction;
} handlers[] = {
    { FD_CMD_READ, 0x1f, "READ", 8, fdctrl_start_transfer, FD_DIR_READ },
    { FD_CMD_WRITE, 0x3f, "WRITE", 8, fdctrl_start_transfer, FD_DIR_WRITE },
    /* [...] */
    { 0, 0, "unknown", 0, fdctrl_unimplemented }, /* default handler */
};

Pour éviter de parcourir ce tableau pour chaque commande reçue, un autre tableau associe une commande à la fonction adéquate :

/* Associate command to an index in the 'handlers' array */
static uint8_t command_to_handler[256];

static void fdctrl_realize_common(FDCtrl *fdctrl, Error **errp)
{
    int i, j;
    static int command_tables_inited = 0;

    /* Fill 'command_to_handler' lookup table */
    if (!command_tables_inited) {
        command_tables_inited = 1;
        for (i = ARRAY_SIZE(handlers) - 1; i >= 0; i--) {
            for (j = 0; j < sizeof(command_to_handler); j++) {
                if ((j & handlers[i].mask) == handlers[i].value) {
                    command_to_handler[j] = i;
                }
            }
        }
    }
    /* [...] */
}

Notre modification consiste à changer le tableau command_to_handler[] pour associer toutes les commandes à la fonction fdctrl_unimplemented() (celle en dernière position dans le tableau handlers[]).

Test avec gdb

Pour vérifier que cette modification fonctionne correctement, nous la testons avec gdb. À moins d’avoir compilé QEMU manuellement, il est nécessaire d’installer le paquet contenant les symboles de débogage. Malheureusement, chez Debian, ils ne sont pas encore3 disponibles. Chez Ubuntu, il suffit d’installer le paquet qemu-system-x86-dbgsym après avoir activé les dépôts appropriés.

La fonction suivante pour gdb implémente le correctif :

define patch
  set $handler = sizeof(handlers)/sizeof(*handlers)-1
  set $i = 0
  while ($i < 256)
   set variable command_to_handler[$i++] = $handler
  end
  printf "Done!\n"
end

Il suffit alors de s’attacher au processus vulnérable (avec attach), d’appeler cette fonction (avec patch) et de se détacher (avec detach). Cette procédure est simple à automatiser.

Limitations

L’usage de gdb comporte principalement deux limitations :

  1. gdb doit être installé sur toutes les machines à corriger.
  2. Les paquets de débogage doivent également être présents. Il est de plus difficile de récupérer d’anciennes versions de ceux-ci.

Industrialisation

Pour contourner ces limitations, nous allons écrire un programme utilisant l’appel système ptrace() et qui ne nécessite pas les symboles de débogage pour fonctionner.

Trouver l’emplacement mémoire

La première étape est de localiser le tableau command_to_handler[] en mémoire. Le premier indice se trouve dans la table des symboles que l’on peut interroger avec readelf -s :

$ readelf -s /usr/lib/debug/.build-id/09/95121eb46e2a4c13747ac2bad982829365c694.debug | \
>   sed -n -e 1,3p -e /command_to_handler/p

Symbol table '.symtab' contains 27066 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
  8485: 00000000009f9d00   256 OBJECT  LOCAL  DEFAULT   26 command_to_handler

Habituellement, cette table a été retirée pour économiser de l’espace disque, comme on peut le voir ci-dessous :

$ file -b /usr/bin/qemu-system-x86_64 | tr , \\n
ELF 64-bit LSB shared object
 x86-64
 version 1 (SYSV)
 dynamically linked
 interpreter /lib64/ld-linux-x86-64.so.2
 for GNU/Linux 2.6.32
 BuildID[sha1]=0995121eb46e2a4c13747ac2bad982829365c694
 stripped

Si votre distribution fournit un paquet de débogage, les symboles sont alors installés dans le répertoire /usr/lib/debug. La plupart des distributions modernes utilisent désormais le build ID4 pour lier un exécutable à ses symboles de débogage, comme c’est le cas dans l’exemple ci-dessus. Sans paquet de débogage, il est nécessaire de recompiler le paquet dans un environnement minimal5 sans supprimer les symboles. Sur Debian, cela peut se faire en affectant nostrip à la variable d’environnement DEB_BUILD_OPTIONS.

Il y a ensuite deux cas possibles :

  • le cas facile,
  • le cas difficile.

Le cas facile

Sur x86, la mémoire d’un processus Linux normal est organisée comme ceci6 :

Organisation mémoire d'un processus normal sur x86

L’espace aléatoire introduit entre les différentes zones (ASLR) permettent de rendre la tâche d’un attaquant plus difficile quand il veut référencer une fonction particulière. Sur x86-64, l’organisation est similaire. Le point important est que l’adresse de base de l’exécutable est fixe.

L’organisation mémoire d’un processus peut être consultée à travers le fichier /proc/PID/maps. Voici une version raccourcie et annotée sur x86-64 :

$ cat /proc/3609/maps
00400000-00401000         r-xp 00000000 fd:04 483  not-qemu [text segment]
00601000-00602000         r--p 00001000 fd:04 483  not-qemu [data segment]
00602000-00603000         rw-p 00002000 fd:04 483  not-qemu [BSS segment]
[random gap]
02419000-0293d000         rw-p 00000000 00:00 0    [heap]
[random gap]
7f0835543000-7f08356e2000 r-xp 00000000 fd:01 9319 /lib/x86_64-linux-gnu/libc-2.19.so
7f08356e2000-7f08358e2000 ---p 0019f000 fd:01 9319 /lib/x86_64-linux-gnu/libc-2.19.so
7f08358e2000-7f08358e6000 r--p 0019f000 fd:01 9319 /lib/x86_64-linux-gnu/libc-2.19.so
7f08358e6000-7f08358e8000 rw-p 001a3000 fd:01 9319 /lib/x86_64-linux-gnu/libc-2.19.so
7f08358e8000-7f08358ec000 rw-p 00000000 00:00 0
7f08358ec000-7f083590c000 r-xp 00000000 fd:01 5138 /lib/x86_64-linux-gnu/ld-2.19.so
7f0835aca000-7f0835acd000 rw-p 00000000 00:00 0
7f0835b08000-7f0835b0c000 rw-p 00000000 00:00 0
7f0835b0c000-7f0835b0d000 r--p 00020000 fd:01 5138 /lib/x86_64-linux-gnu/ld-2.19.so
7f0835b0d000-7f0835b0e000 rw-p 00021000 fd:01 5138 /lib/x86_64-linux-gnu/ld-2.19.so
7f0835b0e000-7f0835b0f000 rw-p 00000000 00:00 0
[random gap]
7ffdb0f85000-7ffdb0fa6000 rw-p 00000000 00:00 0    [stack]

Dans le cas d’un exécutable normal, le nombre fourni dans la table des symboles est une adresse absolue :

$ readelf -s not-qemu | \
>   sed -n -e 1,3p -e /command_to_handler/p

Symbol table '.dynsym' contains 9 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
    47: 0000000000602080   256 OBJECT  LOCAL  DEFAULT   25 command_to_handler

Ainsi, dans l’exemple ci-dessus, l’adresse du tableau command_to_​handler[], est simplement 0x602080.

Le cas difficile

Pour améliorer la sécurité, il est possible de placer certains exécutables à un emplacement aléatoire en mémoire, comme c’est le cas pour une bibliothèque. Un tel exécutable est appelé un Position Independent Executable (PIE). Un attaquant ne pourra pas se baser sur une adresse fixe pour rebondir sur une fonction particulière. Voici à quoi ressemble l’organisation mémoire d’un processus dans ce cas :

Organisation mémoire d'un processus PIE sur x86

Dans le cas d’un processus PIE, le nombre indiqué dans la table des symboles est relatif à l’adresse de base du processus.

$ readelf -s not-qemu-pie | sed -n -e 1,3p -e /command_to_handler/p

Symbol table '.dynsym' contains 17 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
    47: 0000000000202080   256 OBJECT  LOCAL  DEFAULT   25 command_to_handler

En regardant le contenu de /proc/PID/maps, il est possible de calculer l’emplacement mémoire du tableau :

$ cat /proc/12593/maps
7f6c13565000-7f6c13704000 r-xp 00000000 fd:01 9319  /lib/x86_64-linux-gnu/libc-2.19.so
7f6c13704000-7f6c13904000 ---p 0019f000 fd:01 9319  /lib/x86_64-linux-gnu/libc-2.19.so
7f6c13904000-7f6c13908000 r--p 0019f000 fd:01 9319  /lib/x86_64-linux-gnu/libc-2.19.so
7f6c13908000-7f6c1390a000 rw-p 001a3000 fd:01 9319  /lib/x86_64-linux-gnu/libc-2.19.so
7f6c1390a000-7f6c1390e000 rw-p 00000000 00:00 0
7f6c1390e000-7f6c1392e000 r-xp 00000000 fd:01 5138  /lib/x86_64-linux-gnu/ld-2.19.so
7f6c13b2e000-7f6c13b2f000 r--p 00020000 fd:01 5138  /lib/x86_64-linux-gnu/ld-2.19.so
7f6c13b2f000-7f6c13b30000 rw-p 00021000 fd:01 5138  /lib/x86_64-linux-gnu/ld-2.19.so
7f6c13b30000-7f6c13b31000 rw-p 00000000 00:00 0
7f6c13b31000-7f6c13b33000 r-xp 00000000 fd:04 4594  not-qemu-pie [text segment]
7f6c13cf0000-7f6c13cf3000 rw-p 00000000 00:00 0
7f6c13d2e000-7f6c13d32000 rw-p 00000000 00:00 0
7f6c13d32000-7f6c13d33000 r--p 00001000 fd:04 4594  not-qemu-pie [data segment]
7f6c13d33000-7f6c13d34000 rw-p 00002000 fd:04 4594  not-qemu-pie [BSS segment]
[random gap]
7f6c15c46000-7f6c15c67000 rw-p 00000000 00:00 0     [heap]
[random gap]
7ffe823b0000-7ffe823d1000 rw-p 00000000 00:00 0     [stack]

L’adresse de base est 0x7f6c13b31000, le décalage relatif est 0x202080 et donc le tableau se trouve à l’adresse mémoire 0x7f6c13d33080. Il est possible de vérifier cette valeur avec gdb : with gdb:

$ print &command_to_handler
$1 = (uint8_t (*)[256]) 0x7f6c13d33080 <command_to_handler>

Modifier un emplacement mémoire

Une fois l’emplacement du tableau command_to_handler[] connu, le modifier est relativement simple. Il convient d’abord de s’attacher au processus cible :

/* Attach to the running process */
static int
patch_attach(pid_t pid)
{
    int status;

    printf("[.] Attaching to PID %d...\n", pid);
    if (ptrace(PTRACE_ATTACH, pid, NULL, NULL) == -1) {
        fprintf(stderr, "[!] Unable to attach to PID %d: %m\n", pid);
        return -1;
    }

    if (waitpid(pid, &status, 0) == -1) {
        fprintf(stderr, "[!] Error while attaching to PID %d: %m\n", pid);
        return -1;
    }
    assert(WIFSTOPPED(status)); /* Tracee may have died */

    if (ptrace(PTRACE_GETSIGINFO, pid, NULL, &si) == -1) {
        fprintf(stderr, "[!] Unable to read siginfo for PID %d: %m\n", pid);
        return -1;
    }
    assert(si.si_signo == SIGSTOP); /* Other signals may have been received */

    printf("[*] Successfully attached to PID %d\n", pid);
    return 0;
}

Ensuite, récupérons le tableau command_to_handler[], modifions le et réécrivons le en mémoire7.

static int
patch_doit(pid_t pid, unsigned char *target)
{
    int ret = -1;
    unsigned char *command_to_handler = NULL;
    size_t i;

    /* Get the table */
    printf("[.] Retrieving command_to_handler table...\n");
    command_to_handler = ptrace_read(pid,
                                     target,
                                     QEMU_COMMAND_TO_HANDLER_SIZE);
    if (command_to_handler == NULL) {
        fprintf(stderr, "[!] Unable to read command_to_handler table: %m\n");
        goto out;
    }

    /* Check if the table has already been patched. */
    /* [...] */

    /* Patch it */
    printf("[.] Patching QEMU...\n");
    for (i = 0; i < QEMU_COMMAND_TO_HANDLER_SIZE; i++) {
        command_to_handler[i] = QEMU_NOT_IMPLEMENTED_HANDLER;
    }
    if (ptrace_write(pid, target, command_to_handler,
           QEMU_COMMAND_TO_HANDLER_SIZE) == -1) {
        fprintf(stderr, "[!] Unable to patch command_to_handler table: %m\n");
        goto out;
    }
    printf("[*] QEMU successfully patched!\n");
    ret = 0;

out:
    free(command_to_handler);
    return ret;
}

Comme ptrace() ne permet de lire et d’écrire qu’un mot à la fois, ptrace_read() et ptrace_write() sont des enrobages pour lire et écrire une quantité arbitraire de mémoire. Voici par exemple le code de ptrace_read() :

/* Read memory of the given process */
static void *
ptrace_read(pid_t pid, void *address, size_t size)
{
    /* Allocate the buffer */
    uword_t *buffer = malloc((size/sizeof(uword_t) + 1)*sizeof(uword_t));
    if (!buffer) return NULL;

    /* Read word by word */
    size_t readsz = 0;
    do {
        errno = 0;
        if ((buffer[readsz/sizeof(uword_t)] =
                ptrace(PTRACE_PEEKTEXT, pid,
                       (unsigned char*)address + readsz,
                       0)) && errno) {
            fprintf(stderr, "[!] Unable to peek one word at address %p: %m\n",
                    (unsigned char *)address + readsz);
            free(buffer);
            return NULL;
        }
        readsz += sizeof(uword_t);
    } while (readsz < size);
    return (unsigned char *)buffer;
}

Assembler les morceaux

Le programme prend en paramètre :

  • le PID du processus à modifier,
  • le décalage issu de la table des symboles pour le tableau command_to_handler[],
  • le build ID de l’exécutable utilisé pour obtenir ce décalage (à des fins de sécurité).

Les principales étapes sont alors les suivantes :

  1. S’Attacher au processus avec ptrace().
  2. Obtenir le nom de l’exécutable depuis /proc/PID/exe.
  3. Lire le fichier /proc/PID/maps afin de trouver l’adresse de base.
  4. Effectuer certaines vérifications supplémentaires:
    • vérifier qu’il y a bien un entête ELF à l’adresse de base (via quatre octets magiques),
    • vérifier le type de l’exécutable (ET_EXEC pour les exécutables normaux, ET_DYN pour les PIE),
    • récupérer et comparer le build ID avec celui attendu.
  5. À partir de l’adresse de base et du décalage fourni, calculer l’emplacement du tableau command_to_handler[].
  6. Modifier le tableau.

Les sources du programme sont disponibles sur GitHub.

$ ./patch --build-id 0995121eb46e2a4c13747ac2bad982829365c694 \
>         --offset 9f9d00 \
>         --pid 16833
[.] Attaching to PID 16833...
[*] Successfully attached to PID 16833
[*] Executable name is /usr/bin/qemu-system-x86_64
[*] Base address is 0x7f7eea912000
[*] Both build IDs match
[.] Retrieving command_to_handler table...
[.] Patching QEMU...
[*] QEMU successfully patched!

  1. Le code complet pour ce test est disponible sur GitHub

  2. Un projet qui semble intéressant est Katana. Mais il existe aussi un quelques papiers perspicaces sur le sujet. 

  3. Certains paquets fournissent également un paquet -dbg contenant les symboles de débogage. D’autres non. Une initiative pour produire automatiquement des paquets de débogage est actuellement en cours. 

  4. Le wiki de Fedora explique les raisons derrière cette décision

  5. Si la construction ne se fait pas à l’identique du paquet original, les build ID seront différents. L’information fournie par les symboles de débogage peut alors être ou non correcte. Une initiative pour s’assurer de la reproductabilité de la construction de tous les paquets est en cours. 

  6. « Anatomy of a program in memory » explique plus en détail cette organisation. 

  7. En étant une variable statique non initialisée, la variable se situe dans la section BSS qui se retrouve accessible en écriture en mémoire. Si ce n’était pas le cas, sous Linux, l’appel système ptrace() permet tout de même d’écrire dessus. Linux va copier la page correspondante et la marquer comme privée. 

27 May, 2015 03:52PM by Vincent Bernat

May 19, 2015

Olivier Berger (pro)

Présentation du projet Debian par Nicolas Dandrimont lors de la Debian release party de Jessie

Nicolas (olasd) Dandrimont est venu présenter le projet Debian à Télécom SudParis lundi 18 mai 2015, pour la petite fête de sortie de la version majeure “Jessie” que nous avions organisé avec MiNET.

Les transparents de Nicolas sont disponibles sur son site.

Updated : Voici l’enregistrement de la conférence sur YouTube :

Merci aux membres de MiNET qui ont joyeusement participé à cette petite fête.

Voici quelques photos :




Vous pouvez aussi revisionner l’enregistrement de la conférence de Stefano il y a 4 ans.

19 May, 2015 02:52PM by Olivier Berger

May 13, 2015

Avec MiNET, première Debian release party française de Jessie le 18 mai à Télécom SudParis

Vous étiez frustrés de ne pas pouvoir fêter Jessie en France dignement ?

On a pensé à vous, avec MiNET.

Le 18 mai entre 17h et 18h30, nous fêterons ça à Évry (Essonne) à Télécom SudParis, avec la participation de Nicolas Dandrimont en guest star, pour présenter le projet.

Attention, inscription gratuite par avance en contactant les organisateurs, compte-tenu des contraintes de sécurité pour l’accès au site (vigipirate).

Plus de détails sur : https://wiki.debian.org/ReleasePartyJessie/France/Évry

13 May, 2015 01:23PM by Olivier Berger

May 06, 2015

hackergotchi for Charles Plessy

Charles Plessy

Longue vie à Jessie !

Debian a publié Jessie le mois dernier. Toutes mes félicitations à l'équipe de publication et tous les contributeurs; la qualité est encore au rendez-vous !

Cette fois-ci, je n'ai pas pu contribuer grand chose, étant accaparé par des activités parentales (coucou mon fils, si tu me lis), si ce n'est de m'assurer que mes paquets soient en bon état pour le Jour J. Ce travail a été grandement facilité par le système de radiation automatique des paquets buggés, mis en place par l'équipe de publication. Un grand bravo pour ce développement.

J'espère utiliser Jessie longtemps sans avoir besoin de mettre à jour vers la version de test. Pour le moment j'ai tout ce qui me faut, y compris la cohabitation entre la saisie du Japonais et le basculement entre agencements japonais (ou américain) et canadien multilingue, ce qui n'était plus possible facilement sous Wheezy.

Encore merci.

06 May, 2015 05:57AM

May 03, 2015

Stéphane Blondon

Colorer une sortie dans un terminal : highlight, pygmentize et ccze

highlight et pygmentize servent à colorer du code source, ccze à colorer des logs.

Affichage de la sortie de cat, highlight et pygmentize

Pour utiliser ces outils, voici les paquets à installer sur une distribution Debian ou dérivée :

commande paquet
highlight highlight
pygmentize python-pygments ou python3-pygments
ccze ccze

highlight et pygmentize

De nombreux langages disponibles

La liste des langages disponibles pour les deux outils est longue comme un jour sans compilation :
highlight colore 159 langages selon sa documentation.
pygmentize en colore 235 d’après un grep Lexer$ sur le texte de la page listant les lexeurs disponibles.

Plutôt que de tous les lister, voici un comparatif sur les 20 langages ayant le plus de lignes de code dans Jessie (la nouvelle version stable de Debian).

  1. C : les deux
  2. C++ : les deux
  3. Java : les deux
  4. XML : les deux
  5. sh : les deux
  6. Python : les deux. pygmentize a plusieurs lexeurs (python 2, python3, sortie console et la pile d’erreurs).
  7. Perl : les deux
  8. Lisp : les deux
  9. Asm : les deux. highlight colore aussi l’assembleur PowerPC.
  10. Fortran : highlight traite spécifiquement fortran77, pas pygmentize (qui gère la version 90).
  11. C# : les deux
  12. PHP : les deux
  13. Fortran90 : les deux
  14. Pascal : les deux. pygmentize nécessite d’utiliser Delphi lexer, avec option spécifique.
  15. Makefile : highlight (make, QMake), pygmentize (Makefile, CMake)
  16. Ruby : les deux. pygmentize colore le langage mais aussi la sortie console.
  17. SQL : highlight (MSSQL, SPIN SQL, PL/SQL, Sybase), pygmentize (MySQL, PgSQL, PL/PgSQL, console Postgres, SQL, console Sqlite)
  18. ML : les deux (Standard ML ainsi qu’Ocaml)
  19. Tcl : les deux

À cette liste, voici le comparatif sur les 20 premiers langages selon l’indice TIOBE en mars 2015 (sans juger de l’intérêt profond du classement en lui-même, ou son absence) :

  1. C : cf. liste précédente
  2. Java : cf. liste précédente
  3. Objective-C : les deux
  4. C++ : cf. liste précédente
  5. C# : cf. liste précédente
  6. PHP : cf. liste précédente
  7. JavaScript : les deux
  8. Python : cf. liste précédente
  9. Visual Basic .NET : ? (je ne connais pas les environnements Microsoft donc j’ai tout mis à la ligne suivante)
  10. Visual Basic : highlight colore les fichiers avec les extensions de fichiers .bas, .basic, .bi et .vbs. pygmentize colore ceux en .vb et .bas.
  11. F# : les deux
  12. Perl : cf. liste précédente
  13. Delphi/Object Pascal : pyg
  14. Transact-SQL : aucun des deux
  15. Pascal : cf. liste précédente
  16. ABAP : les deux
  17. PL/SQL : highlight uniquement
  18. Ruby : cf. liste précédente
  19. MATLAB : les deux. pygmentize colore le langage et la sortie console.
  20. R : les deux. pygmentize colore le langage (avec SLexer, ce n’est pas intuitif), la sortie console et la documentation.

pygmentize et highlight permettent la coloration syntaxique de nombreux autres langages comme Applescript, Awk, Bbcode, Clojure, Haxe, Lua et bien d’autres.

Les fichiers de configuration d’Apache sont colorés par les deux outils. pygmentize colore aussi la configuration de Lighttpd et Nginx mais aussi d’autres fichiers de configuration comme Docker ou CFEngine.

Contrairement à highlight, pygmentize permet aussi de colorer des logs IRC, les fichiers CMake ou du code spécifique aux moteurs de template (django, smarty, mako, genshi, erb).

hightlight colore COBOL ou graphviz, pas pygmentize.

Facile à utiliser

Les deux outils sont triviaux à installer. L’usage est facile aussi car ils déterminent le lexeur à utiliser en fonction de l’extension du fichier. Il est possible de forcer l’utilisation d’un lexeur (utile si les données viennent d’un pipe par exemple).

Par contre (et par défaut), highlight sort la coloration en html et non pour la console. Ce qui oblige à préciser la sortie terminal souhaitée. Il y en a deux possibles : ansi (16 couleurs) et term256 (256 couleurs). Ansi serait-il à réserver aux plus nostalgiques ? Ce choix cornélien s’impose aussi avec pygmentize (sortie par défaut contre console256).
Dans les faits, les différences ont peu d’intérêt.

highlight et pygmentize, période ansi et période 256 couleurs

Colorer de nouveaux langages

Les deux outils permettent d’ajouter de nouveaux lexeurs :
– en Lua pour highlight
– en Python pour pygmentize (qui est lui-même écrit en Python)

Autres usages

highlight et pygmentize permettent d’avoir d’autres sorties :

sorties highlight pygmentize
HTML oui oui
XHTML oui non
SVG oui oui
RTF oui oui
ODT oui non
Images bitmap non oui (bmp, gif, jpeg et png)

highlight est compatible avec source-highlight du projet GNU (outil que je n’ai jamais testé).

Que choisir ?

Si vous avez besoin d’un langage qui est disponible que sur l’un des deux outils, choisissez celui-là.
Si vous comptez écrire des greffons pour ajouter des langages, choisissez si vous préférez écrire en Lua ou en Python.
Si les deux règles précédentes ne permettent pas d’emporter la décision, je conseillerai plutôt pygmentize qui a plus de langages et qui gère des trucs plus récents (les moteurs de template par exemple). Évidemment, si c’est pour maintenir du code COBOL sur une base logicielle de 15 ans d’âge, ça ne sera pas très déterminant non plus…

ccze

ccze n’est pas concurrent des deux outils précédents car il colore des journaux, pas du code.

Affichage de la sortie de cat et ccze

Les remarques et usages de http://www.quennec.fr/gnulinux/utilisation/afficher-les-logs-en-couleur sur ccze sont valides. Cependant j’ai dû activer le mode ansi (avec -A ou --raw-ansi ou bien -m ansi ou encore --mode ansi) lors de mes tests, sinon il n’y avait aucune sortie dans le terminal.

Les journaux d’Apache, Exim, Postfix, syslog sont colorés par ccze. Pour la liste complète, man ccze.

Il est aussi possible d’ajouter de nouveaux type de journaux. Par contre, il faudra les écrire en C (cf. man ccze-plugin).

Fin : références, versions des logiciels

Les statistiques Debian concernant les langages sont issues de http://sources.debian.net/stats/. Pour en savoir plus, voir aussi http://sources.debian.net/doc/ (en particulier « Debsources: Live and Historical Views on Macro-Level »).

La page des lexers de pygmentize est /usr/share/doc/python-pygments-doc/html/docs/lexers.html sur Jessie (en supposant que python-pygments-doc est installé). L’emplacement était /usr/share/doc/python-pygments/lexers.html sur Wheezy (la version stable précédente) et était directement incluse dans le paquet python-pygments.

Les versions utilisées pour l’article :

stephane@foehn:~$ pygmentize -V
Pygments version 2.0.1, (c) 2006-2014 by Georg Brandl.
stephane@foehn:~$ highlight --version

 highlight version 3.18
 Copyright (C) 2002-2013 Andre Simon <andre.simon1 at gmx.de>

 Argparser class
 Copyright (C) 2006-2008 Antonio Diaz Diaz <ant_diaz at teleline.es>

 Artistic Style Classes (2.04)
 Copyright (C) 2006-2013 by Jim Pattee <jimp03 at email.com>
 Copyright (C) 1998-2002 by Tal Davidson

 Diluculum Lua wrapper (1.0)
 Copyright (C) 2005-2013 by Leandro Motta Barros

 xterm 256 color matching functions
 Copyright (C) 2006 Wolfgang Frisch <wf at frexx.de>

 This software is released under the terms of the GNU General Public License.
 For more information about these matters, see the file named COPYING.

stephane@foehn:~$ ccze --version
ccze 0.2.1

03 May, 2015 11:25AM by ascendances

April 16, 2015

hackergotchi for Tanguy Ortolo

Tanguy Ortolo

Vote obligatoire ? Messieurs les députés, passez les premiers.

Contexte

Hier 15 avril 2015, le président de l'Assemblée nationale Claude Bartolone remettait au président de la République François Hollande un rapport préconisant de rendre le vote obligatoire pour toutes les élections impliquant les citoyens français.

Hier toujours, contre l'avis de plein de gens concernés — des organisations de défense des droits de l'homme, des associations diverses, des professionnels de l'Internet, des citoyens, un juge antiterroriste… — les députés français ont adopté à une majorité de 83% un article de loi instaurant la possibilité pour le pouvoir exécutif d'installer des dispositifs automatiques d'interception de trafic chez les opérateurs réseau sans contrôle judiciaire. Soit à peu près ce que la NSA faisait aux États-Unis, sauf qu'en France, ce sera légal.

Commentaire

Le rapport entre ces deux événements ? L'article de loi instaurant une possibilité de surveillance généralisée a été adopté par 30 députés présents, sur les 577 constituant l'Assemblée nationale. Vous voyez le rapport ? Nos députés brillent par un taux d’abstention de 94% pour le vote d'un article de loi connu pour rencontrer une opposition significative dans la société, et bien assez médiatisé pour qu'ils en soient conscients. Quatre-vingt quatorze pour cents d’abstention. Permettez-moi de le répéter tellement c'est ahurissant : quatre-vingt quatorze pour cents d'abstention, un chiffre qui pulvérise les pires records des élections impliquant les citoyens français, confortant l'Assemblée nationale à son titre de honte de la République.

Ces deux cas ne sont toutefois pas tout à fait comparables. En effet, alors que les citoyens ont un droit de vote, leur devoir de voter fait depuis longtemps l'objet d'un débat. En revanche, en ce qui concerne les députés, il n'y a pas de doute possible : ces individus se sont portés volontaires, ont été élus, et sont payés pour élaborer les lois ; être au minimum présents pour les adopter ou les rejeter est donc un devoir moral et professionnel, dont ils doivent rendre compte devant le peuple français.

Mesdames et Messieurs les députés, vous passez déjà pour des nantis, pour des branleurs fainéants et pour des godillots. Certaines de vos séances font ressembler l'hémicycle à une cour de récréation d'école primaire. Remerciez donc Monsieur Bartolone d'ajouter l'hypocrisie à la longue liste des offenses que vous infligez au peuple français par votre pitoyable attitude.

Recommandations

Monsieur le président Bartolone a remis à Monsieur le président Hollande son rapport recommandant le vote obligatoire. Par son hypocrisie, ce texte est une insulte au peuple français. En réponse à ce rapport, voici le mien, qui sera bref. Avant d'envisager de rendre le vote obligatoire en France, au nom de l'exemplarité des institutions de la République française, je recommande d'introduire et de faire respecter une obligation de vote à l'Assemblée nationale, par les mesures suivantes :

  1. paiement des députés au prorata de leur présence à l'Assemblée nationale, ceci étant appliqué à l'ensemble des flux financier entrants pour un député, incluant son indemnité, ses frais de mandats, de déplacement, de personnel et ainsi de suite, étant entendu qu'un sous-député député travaillant à temps partiel doit pouvoir se satisfaire d'un secrétaire à temps temps partiel et que ses frais annexes n'ont pas vocation à pour compenser ou amortir le coût de ses manquements ;
  2. considérer un absentéisme injustifié et excessif comme un abandon de poste, donnant lieu à des sanctions disciplinaires telles que des travaux d'intérêt généraux, réalisés à Paris de façon à forcer ces députés à être en mesure de se rendre à l'Assemblée ;
  3. considérer un absentéisme répété comme une faute professionnelle, donnant lieu à une radiation de l'Assemblée, sans indemnisation aucune, déclenchant une élection législative partielle dans la circonscription concernée ; cette radiation pourrait être accompagnée d'une inéligibilité temporaire, l'attitude irresponsable de ces politiciens étant nuisibles à la démocratie.

16 April, 2015 05:06PM by Tanguy

April 15, 2015

Olivier Berger (pro)

Appel pour une “Linked Research” (recherche reliée), traduit en français

J’ai traduit en français les transparents de l’appel pour une “Linked Research” (que j’ai traduit par “recherche reliée”) de Sarven Capadisli originellement en anglais

L’objectif est d’inciter (entre autre actions) à la publication d’articles académiques sous une forme exploitable aussi bien par les humains que par les machines, et permettant ainsi d’embarquer dans le document des méta-données additionnelles.

Plus de détails dans les transparents ici : http://www-public.tem-tsp.eu/~berger_o/presentations-call-for-linked-research-fr/

15 April, 2015 11:51AM by Olivier Berger

Florent Gallaire

Neil McGovern élu DPL pour 2015

C’est Neil McGovern qui vient d’être élu Debian Project Leader (DPL) pour l’année 2015, succédant ainsi au double mandat de Lucas Nussbaum, contre qui il avait perdu en 2014.

Neil McGovern

Neil devance Mehdi Dogguy, qui recueille un nombre de voix très intéressant pour l’avenir, et Gergely Nagy (déjà candidat malheureux en 2004, 2012 et 2013). Voici une représentation du résultat du scrutin qui utilise la méthode Condorcet :

Vote DPL 2015

Bravo à toi Neil, et bonne chance dans la mise en œuvre de ton programme !

15 April, 2015 01:09AM by fgallaire

April 11, 2015

hackergotchi for Roland Mas

Roland Mas

Le marronnier du printemps

Eh ben eh ben eh ben. C'est bien calme ici, alors que j'aurais des tas de choses à dire… Je pourrais vous parler de Chacun sa part, qui continue de vivre sa vie et de croître doucement. Je pourrais vous parler de rock et de batterie. Je pourrais vous parler d'un truc rigolo que j'ai fait et qui mélange Gnucash, Boobank, Python, crm114 et Libre Office Calc. Ou de FusionForge. Ou de moto, de Montpellier, de soleil. Je pourrais vous parler de plein de choses, mais il se trouve que je passe mon temps à faire ces choses plutôt qu'à en parler sur mon blog, tout magnifique soit-il. Donc je me contenterai du marronnier habituel, qui porte cette année le numéro 38.

Et qui le porte bien, merci.

11 April, 2015 05:30PM

April 07, 2015

hackergotchi for Charles Plessy

Charles Plessy

\"D'abords

# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2015-03-13 06:40+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: Plain text #, no-wrap msgid "\n" msgstr "" #. type: Plain text #, no-wrap msgid "\n" msgstr "" #. type: Plain text #, no-wrap msgid "\n" msgstr "" #. type: Plain text #, no-wrap msgid "\n" msgstr "" #. type: Plain text msgid "" "Lors d'un buffet à une conférence, un de mes collègue m'a fait la remarque " "que c'était « sausages first ». Je lui ai répondu qu'il y avait quand même " "quelques plats dans lesquels la viande était suffisament rare pour se faire " "une assiette pseudo-végétarienne. Nous n'étiions pas du tout sur la même " "longueur d'onde : apparament _sausages first_ ça veut dire qu'il y avait " "très peu de femmes dans cette conférence." msgstr "" #. type: Plain text msgid "S'il y a une candidate DPL" msgstr ""

07 April, 2015 01:24AM

April 01, 2015

hackergotchi for Debian France

Debian France

Debian France a un nouveau Président

Suite à l'Assemblée Générale Ordinaire tenue le mois dernier, le Conseil d'Administration de Debian France a élu un nouveau Président: bienvenue à Nicolas Dandrimont (alias olasd) !

Le président précédent, Raphaël Hertzog, reste dans le Conseil d'Administration pour assurer la transition. Sylvestre Ledru reste trésorier et Julien Cristau est reconduit pour un nouveau mandat au Conseil d'Administration. Julien Danjou quitte l'équipe après plusieurs années de bons et loyaux services.

Un grand merci à tous les candidats au Conseil d'Administration, nous comptons sur eux pour aussi dynamiser l'association dans les années à venir: - François-Régis Vuillemin - Michel Barret - Sébatien Poher

01 April, 2015 04:14PM

March 20, 2015

Florent Gallaire

Quel DPL pour 2015 ?

Le temps passe vite, et cela fait déjà presque un an que Lucas Nussbaum a été réélu Debian Project Leader (DPL). Chaque développeur Debian pouvait donc se porter candidat entre le 4 et le 10 mars à la suite du traditionnel appel à candidatures.

Dès le 12 février, anticipant quelque peu sur le calendrier, Lucas avait exprimé le souhait de ne pas se représenter :

But I also think that switching release cycles is a good opportunity to align other changes, and starting a fresh release cycle with a fresh DPL might be a good idea. Put differently: no, I will not run for re-election.

Il y aura finalement cette année trois candidats :

Les presque mille développeurs Debian seront libres de faire leur choix du 1er au 14 avril lors d’un vote utilisant la méthode Condorcet.

Vous pouvez retrouver tous les débats de la campagne sur la mailing list debian-vote.

20 March, 2015 10:51AM by fgallaire

March 06, 2015

hackergotchi for Tanguy Ortolo

Tanguy Ortolo

Un vrai livre n'est pas verrouillé : #thatisnotabook

Fondation, d'Isaac Asimov, chez Folio SF

Ceci est un livre. Je peux en faire ce que je veux, le prêter, le copier pour mon usage privé. Personne ne peut m'empêcher de le faire ou me le retirer. Ceci est une livre, soumis à une TVA réduite.


Deux fichiers EPUB

Ceci est un livre, enfin deux. Je peux en faire ce que je veux, les prêter, les copier pour mon usage privé, en particulier les sauvegarder sur mon ordinateur pour ne pas le perdre si ma liseuse tombe en panne, ou les imprimer pour les lire sans appareil électronique. Personne ne peut m'empêcher de le faire ou me les retirer. Ceci est un livre, qui devrait être soumis à une TVA réduite.


Un fichier verrouillé ACSM

Ceci n'est pas un livre. Je ne peux pas le lire sur tous les appareils que je veux, à vrai dire je ne peux pas le lire du tout, puisqu'il faut un logiciel qui n'est pas disponible pour mon système d'exploitation. Je ne peux pas le prêter. Je ne peux pas le copier pour mon usage privé. Adobe peut me le retirer à distance. Il deviendra illisible le jour où les serveurs dédiés à cela seront arrêtés — notez qu'il s'agit d'un futur et non d'un conditionnel, d'une certitude et non d'une hypothèse. Ceci n'est pas un livre, c'est un droit temporaire de lecture sous conditions, une location à durée indéfinie, bref, un service, qui doit être soumis à une TVA pleine.

06 March, 2015 05:54PM by Tanguy

February 04, 2015

hackergotchi for Charles Plessy

Charles Plessy

Nouvelles du paquet mime-support.

Le paquet mime-support est installé par défaut dans les systèmes Debian. Il a deux rôles: premièrement fournir le fichier /etc/mime.types qui associe des types de médias (anciennement appelés types MIME) à des suffixes de noms de fichiers, et deuxièmement mettre en place le système mailcap, qui associe des type de média à des programmes. J'ai adopté ce paquet à la fin du cycle de développement de Wheezy.

Changements depuis Wheezy.

La version distribuée dans Jessie apporte quelques additions dans /etc/mime.types. Parmi elles, application/vnd.debian.binary-package et text/vnd.debian.copyright, qui comme leurs noms l'indiquent décrivent des formats de fichiers conçus par Debian. J'ai enregistré ces types auprès de l'IANA, qui depuis la RFC 6838 est beaucoup plus ouverte à l'addition de nouveaux types.

Le changement le plus important consiste à extraire automatiquement les associations entre programmes et types de média qui sont déclarées dans les fichiers de menu au format FreeDesktop. Ces fichiers sont souvent fournis directement amont. Auparavant c'est le responsable du paquet Debian qui devait extraire l'information et la traduire à la main au format mailcap. L'automatisation se fait via des actions différées de dpkg.

Un grand merci à Kevin Ryde qui m'a apporté une aide précieuse pour les développement et corrections apportées au programme run-mailcap, et à tous les autres contributeurs. Votre aide est toujours bienvenue !

Mise à jour de sécurité.

En décembre, Debian a été contacté par Timothy D. Morgan, qui avait trouvé qu'un attaquant pouvait faire exécuter des commandes à run-mailcap en les insérant dans des noms de fichiers (CVE-2014-7209). Cette première mise à jour de sécurité pour moi s'est bien passée, un grand merci à Salvatore Bonaccorso de l'équipe sécurité pour son aide et ses instructions. Le problème est résolu dans Wheezy, Jessie et Sid, ainsi que dans Squeeze via son projet de suivi à long terme.

Une des conséquences de cette mise à jour est que run-mailcap va systématiquement utiliser le chemin absolu vers les fichiers à ouvrir. Pour les fichiers aux noms sans danger, c'est un peu laid. Cela sera peut-être amélioré après la sortie de Jessie.

Projets pour le futur

Le fichier /etc/mime.types est tenu à jour à la main; c'est lent et inefficace. Le paquet shared-mime-info contient des informations équivalentes, qui pourraient être utilisées pour autogénérer ce fichier, mais cela demanderait de traiter une source XML assez complexe. Pour le moment je pense importer le paquet mailcap de chez Fedora, dont le fichier /etc/mime.types est très bien tenu à jour. Je n'ai pas encore décidé comment faire, mais peut-être simplement en transférant ce fichier d'un paquet à l'autre. Dans ce cas, on se retrouverait avec un paquet mime-support qui en fait fournit le système mailcap, et un paquet dont le nom de la source chez Fedora est mailcap, mais dont le rôle dans Debian serait de fournir /etc/mime.types. Peut-être sera-t-il préférable d'utiliser des noms de paquets binaires plus clairs, comme mailcap-support pour le premier et media-types pour le second ?

La séparation des deux fonctions premières de mime-support aurait une autre conséquence intéressante: la possibilité de ne pas installer la prise en charge du système mailcap ou de la rendre optionnelle, et d'utiliser le système FreeDesktop (xdg-open), du paquet xdg-utils. Une idée à creuser...

04 February, 2015 01:00PM

January 23, 2015

hackergotchi for Debian France

Debian France

Présentation du projet Debian aux Expériences Numériques

Expériences Numériques

Les EPN de la Maison pour Tous Salle des Rancy en collaboration avec l'Aadn, Aldil, Ubunteros de Lyon, Illyse organisent le 31 janvier 2015 : les Expériences Numeriques.

Ce rendez-vous est une journée de découverte, d’initiation et de rencontres autour des pratiques du numérique.

À cette occasion une conférence aura lieu à 16h pour présenter le projet Debian. Pendant cette journée une install party sera organisée où les personnes qui le désirent pourront installer notre distribution favorite.

Télécharger le programme.

Carte Openstreet Map. Voir aussi le plan d'accès officiel pour plus de détails.

logo Maison pour Tous Salle des Rancy

23 January, 2015 03:12PM

January 08, 2015

hackergotchi for Tanguy Ortolo

Tanguy Ortolo

Objets connectés : attention aux services

Ces derniers temps, on parle beaucoup d'objets connectés, qui sont des accessoires divers — montre, cardiofréquencemètre, podomètre, vélo d'appartement, balance… — intégrant un ordinateur, connecté à votre réseau local ou à Internet afin de transmettre les informations qu'il collecte.

Attention donc à ne pas oublier une chose : si ces objets dépendent d'un service tiers, mis en place par le fabricant, ils ne dureront pas. Le jour où ce service prendra fin — car il prendra fin, ce n'est pas une hypothèse mais une certitude, à plus ou moins long terme — votre balance ou votre montre à plusieurs centaines d'euros ne fonctionnera plus, ou en tout cas pas comme ce qu'on vous a vendu.

08 January, 2015 12:02PM by Tanguy

December 25, 2014

Florent Gallaire

La CNIL dans MISC, la fuite des données sur Internet

Un petit peu au dernier moment, je voudrais signaler un excellent article dans le n°76 de novembre-décembre de MISC, le magazine français de référence concernant la sécurité informatique.

« Analyse d’une inscription en ligne : comment vos données fuitent sur Internet » a été écrit par Stéphane Labarthe et Benjamin Vialle, le principal développeur de MarkUs, un logiciel libre d’annotation de code et de travaux.

Tous deux sont contrôleurs au sein de la  CNIL, la Commission nationale de l’informatique et des libertés, et les exemples qu’ils donnent s’inspirent donc de situations bien réelles auxquelles ils ont été confrontés au cours de leur travail.

L’article a l’avantage d’être très didactique, donnant les outils et les méthodes pour inspecter soi-même le parcours des données personnelles et des cookies que l’on est bien obligé de transmettre sur Internet, par exemple quand l’on veut commander des cadeaux (en passant Joyeux Noël à tous !).

Et si à cette occasion l’on détecte des fuites de données inappropriées, on peut saisir la CNIL qui s’est vu attribuer des prérogatives de contrôle en ligne par la loi Hamon du 17 mars 2014, dont l’article 105 a modifié l’article 44-III de la loi Informatique et libertés.

 

 

25 December, 2014 08:02PM by fgallaire

December 23, 2014

hackergotchi for Vincent Bernat

Vincent Bernat

Eudyptula Challenge : démarrage rapide d'un noyau Linux

Le challenge Eudyptula est une série d’exercices de programmation pour le noyau Linux. Il commence avec le très basique module « Hello world » puis progresse en complexité jusqu’à faire pousser des modifications dans l’arbre du noyau Linux.

Une des premières tâches de ce challenge est de compiler puis démarrer son propre noyau. eudyptula-boot est un script autonome permettant de démarrer une image noyau jusqu’à obtenir un shell. Il est livré avec les fonctionnalités suivantes :

  • Il permet de booter quasiment n’importe quel noyau Linux, du noyau fourni par votre distribution favorite jusqu’au noyau personnalisé1 pour travailler sur une fonctionnalité quelconque.

  • Il utilise le système de fichiers de l’hôte comme racine pour le système invité. Aucune image disque n’est donc nécessaire. Ces dernières prennent beaucoup de place, doivent être maintenues à jour, se retrouvent encombrées au fil du temps et les outils dont vous avez besoin ne sont jamais installés. Pour éviter toute modification accidentelle, le système de fichiers est par défaut monté en lecture seule. S’ils sont disponibles, OverlayFS ou aufs sont utilisés pour ajouter une couche accessible en écriture. Il est de plus possible d’utiliser n’importe quel répertoire comme racine.

  • Le répertoire utilisateur est également accessible. Il est ainsi simple de partager des scripts et des programmes avec le système hôte.

  • Il démarre un système minimal avec le strict nécessaire2 pour démarrer un shell dans de bonnes conditions. Le système est opérationnel en moins de cinq secondes.

Dans la vidéo ci-dessous, eudyptula-boot est utilisé pour démarrer le noyau de l’hôte et exécuter quelques commandes :

Dans la vidéo suivante, nous démarrons un noyau personnalisé contenant un appel système supplémentaire. Il s’agit de la tâche n°15 du challenge Eudyptula. Un programme de test permet de vérifier le bon fonctionnement de l’appel système. Vers la fin, la vidéo contient également une rapide démonstration de gdb.

Bien que ce hack permette également de lancer des conteneurs3 avec une isolation accrue, les performances de 9p sont malheureusement peu convaincantes pour un tel usage.

vido est un projet similaire.


  1. Il est toutefois nécessaire d’activer le support de 9p virtio. Il suffit pour cela d’utiliser make kvmconfig

  2. Seul udev est démarré. 

  3. Un point de départ pour une telle utilisation est de combiner les options --root, --force et --exec. Ajoutez également --readwrite pour conserver les modifications. 

23 December, 2014 12:46PM by Vincent Bernat

December 22, 2014

hackergotchi for Debian France

Debian France

Dons Debian France

Dons Debian France

En cette fin d'année, nous tenons à rappeler que l'association Debian France est reconnue d'intérêt général. Ainsi, les donations à destination de l'association peuvent être déduites des impôts.

Une fois la donation réalisée, pour obtenir un reçu, il suffit d'envoyer un mail au trésorier - <tresorier@france.debian.net> en indiquant votre adresse.

Formulaire de donation

22 December, 2014 04:47PM

December 10, 2014

Olivier Berger (perso)

Réparé les hauts-parleurs d'un portable HP dv6000 en échangeant deux nappes internes

Les hauts-parleurs internes du portable HP de mes parents, un dv6000, ne marchaient plus : plus de son sans devoir mettre des enceintes ou un casque :-(

En fait, il semble que ce soit un problème classique, qui semble causé par des nappes de connexion internes deffectueuses.

La réparation n'est pas trop compliquée, si on achète une nappe de remplacement, mais on peut aussi trouver un contournement.

J'ai réussi à échanger les deux nappes qui connectent la carte mère à la partie qui contient les boutons et les hauts-parleurs, au dessus du clavier, et même si maintenant, les boutons de cette rangée supérieure ne marchent plus, ce n'est pas trop grave, car le son est revenu.

Pour voir une vidéo (en anglais) qui explique comment faire, voir : Hp Pavilion Dv6000 power button and speaker fix!

Content d'avoir récupéré le son :-)

10 December, 2014 10:10PM by obergix

December 09, 2014

hackergotchi for Debian France

Debian France

Debian France au Capitole du Libre

Debian France au Capitole du Libre

Le samedi 15 novembre, l'association Debian France a tenu un stand au Capitole du Libre, l'événement du Libre à Toulouse. Ceci a permis de créer un certain nombre de contacts prometteurs, et de confirmer que Debian est une référence reconnue pour ses valeurs. Nous remercions l'association Toulibre pour son accueil et son très bel événement!

09 December, 2014 04:06PM

November 16, 2014

hackergotchi for Vincent Bernat

Vincent Bernat

Préparer des règles Netfilter dans un espace de nommage réseau

Souvent, les règles d’un pare-feu sont mises en place à l’aide d’un script faisant appel aux commandes iptables et ip6tables. Cela permet notamment d’utiliser des variables et des boucles. Il y a cependant trois inconvénients majeurs à cette méthode :

  1. Pendant toute la durée du script, le pare-feu est temporairement incomplet : les nouvelles connexions peuvent ne pas être autorisées à s’établir ou, inversement, le pare-feu peut autoriser des flux qui ne devraient pas l’être. Les règles de NAT nécessaires au bon fonctionnement du routeur peuvent également être absentes.

  2. Si une erreur survient, le pare-feu reste dans un état intermédiaire. Il est alors nécessaire de s’assurer que les règles autorisant l’accès à distance soient placées très tôt pour garder la main. Un système de retour automatique à la précédente version est également nécessaire pour corriger la situation rapidement.

  3. Construire de nombreuses règles peut être très lent. Chaque appel à ip{,6}tables va rapatrier l’ensemble des règles du noyau, ajouter la règle voulue et renvoyer le tout au noyau.

Avec iptables-restore

Une façon classique de résoudre ces trois aspects et de construire un fichier de règles qui sera lu par iptables-restore et ip6tables-restore1. Ces outils envoient en une seule passe les règles au noyau qui les applique de manière atomique. Habituellement, un tel fichier est construit par ip{,6}tables-save mais un script peut également faire l’affaire.

La syntaxe comprise par ip{,6}tables-restore est similaire à celle de ip{,6}tables. Cependant, chaque table dispose de son propre bloc et les chaînes doivent être déclarées différemment. Voyons un exemple :

$ iptables -P FORWARD DROP
$ iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
$ iptables -N SSH
$ iptables -A SSH -p tcp --dport ssh -j ACCEPT
$ iptables -A INPUT -i lo -j ACCEPT
$ iptables -A OUTPUT -o lo -j ACCEPT
$ iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables -A FORWARD -j SSH
$ iptables-save
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:SSH - [0:0]
-A INPUT -i lo -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j SSH
-A OUTPUT -o lo -j ACCEPT
-A SSH -p tcp -m tcp --dport 22 -j ACCEPT
COMMIT

La table nat et la table filter disposent chacune de leur bloc. La chaîne SSH est déclarée en haut du bloc de la table filter avec les autres chaînes par défaut.

Voici un script qui détourne les commandes ip{,6}tables afin de construire un tel fichier (en s’appuyant massivement sur Zsh2) :

#!/bin/zsh
set -e

work=$(mktemp -d)
trap "rm -rf $work" EXIT

# ➊ Redefine ip{,6}tables
iptables() {
    # Intercept -t
    local table="filter"
    [[ -n ${@[(r)-t]} ]] && {
        # Which table?
        local index=${(k)@[(r)-t]}
        table=${@[(( index + 1 ))]}
        argv=( $argv[1,(( $index - 1 ))] $argv[(( $index + 2 )),$#] )
    }
    [[ -n ${@[(r)-N]} ]] && {
        # New user chain
        local index=${(k)@[(r)-N]}
        local chain=${@[(( index + 1 ))]}
        print ":${chain} -" >> ${work}/${0}-${table}-userchains
        return
    }
    [[ -n ${@[(r)-P]} ]] && {
        # Policy for a builtin chain
        local index=${(k)@[(r)-P]}
        local chain=${@[(( index + 1 ))]}
        local policy=${@[(( index + 2 ))]}
        print ":${chain} ${policy}" >> ${work}/${0}-${table}-policy
        return
    }
    # iptables-restore only handle double quotes
    echo ${${(q-)@}//\'/\"} >> ${work}/${0}-${table}-rules #'
}
functions[ip6tables]=${functions[iptables]}

# ➋ Build the final ruleset that can be parsed by ip{,6}tables-restore
save() {
    for table (${work}/${1}-*-rules(:t:s/-rules//)) {
        print "*${${table}#${1}-}"
        [ ! -f ${work}/${table}-policy ] || cat ${work}/${table}-policy
        [ ! -f ${work}/${table}-userchains || cat ${work}/${table}-userchains
        cat ${work}/${table}-rules
        print "COMMIT"
    }
}

# ➌ Execute rule files
for rule in $(run-parts --list --regex '^[.a-zA-Z0-9_-]+$' ${0%/*}/rules); do
    . $rule
done

# ➍ Execute rule files
ret=0
save iptables  | iptables-restore  || ret=$?
save ip6tables | ip6tables-restore || ret=$?
exit $ret

En ➊, une nouvelle fonction iptables() est définie et masque la commande du même nom. Elle tente de localiser le paramètre -t pour savoir quelle table est concernée par la règle. Si le paramètre est présent, la table est mémorisée dans la variable $iptables et le paramètre est retiré de la liste des arguments. La défintion d’une nouvelle chaîne avec -N ou la mise en place d’une politique par défaut avec -P sont également gérés.

En ➋, la fonction save() va émettre les règles qui seront lues par ip{,6}tables-restore. En ➌, les règles de l’utilisateur sont exécutées. Chaque commande ip{,6}tables appelle en réalité la fonction précédemment définie. Si aucune erreur n’est survenue, en ➍, les commandes ip{,6}tables-restore sont invoquées.

Cette méthode est parfaitement fonctionnelle3. Toutefois, la méthode suivante est bien plus élégante.

Avec un espace de nommage

Une approche hybride est de construire les règles avec ip{,6}tables dans un espace de nommage réseau (network namespace) puis de les sauver avec ip{,6}tables-save et enfin de les appliquer dans l’espace de nommage principal avec ip{,6}tables-restore.

#!/bin/zsh
set -e

alias main='/bin/true ||'
[ -n $iptables ] || {
    # ➊ Execute ourself in a dedicated network namespace
    iptables=1 unshare --net -- \
        $0 4> >(iptables-restore) 6> >(ip6tables-restore)
    # ➋ In main namespace, disable iptables/ip6tables commands
    alias iptables=/bin/true
    alias ip6tables=/bin/true
    alias main='/bin/false ||'
}

# ➌ In both namespaces, execute rule files
for rule in $(run-parts --list --regex '^[.a-zA-Z0-9_-]+$' ${0%/*}/rules); do
    . $rule
done

# ➍ In test namespace, save the rules
[ -z $iptables ] || {
    iptables-save >&4
    ip6tables-save >&6
}

En ➊, le script est réexécuté dans un nouvel espace de nommage réseau. Celui-ci dispose de ces propres règles de pare-feu qui peuvent être modifiées sans altérer celles de l’espace de nommage principal. La variable $ipatbles est utilisée pour déterminer quel est l’espace de nommage courant. Dans le nouvel espace de nommage, les fichiers de règles sont exécutés (➌). Ceux-ci contiennent l’appel aux commandes ip{,6}tables. Si une erreur survient, nous n’allons pas plus loin grâce à l’utilisation de set -e. Sinon, en ➍, les règles sont sauvegardées avec ip{,6}tables-save et envoyées dans l’espace de nommage principal en utilisant les descripteurs de fichier dédiés à cet effet.

L’exécution dans l’espace de nommage principal continue en ➊. Les résultats de ip{,6}tables-save sont envoyées à ip{,6}tables-restore. À ce point, le pare-feu est presque fonctionnel. Les fichiers de règles sont toutefois rejoués (➌) mais les commandes ip{,6}tables sont neutralisées (➋) de façon à ce que les éventuelles autres commandes, comme par exemple l’activation du routage IP, soient exécutées.

Le nouvel espace de nommage ne dispose pas du même environnement que l’espace de nommage principal. Notamment, il ne contient pas d’interfaces réseau. Il n’est donc pas possible de consulter ou de configurer des adresses IP. Lorsque des commandes ne peuvent être exécutées que dans l’espace de nommage principal, il est nécessaire de les préfixer par main :

main ip addr add 192.168.15.1/24 dev lan-guest

Jetez un coup d’œil à un exemple complet sur GitHub.


  1. iptables-apply est un autre outil pratique. Il applique un fichier de règles et revient automatiquement en arrière si l’utilisateur ne confirme pas le changement dans un laps de temps donné. 

  2. Zsh contient des primitives assez puissantes pour manipuler les tableaux. De plus, il ne nécessite pas d’utiliser les guillemets autour de chaque variable pour éviter leur découpage lorsqu’elles contiennent des espaces. Cela rend le script bien plus robuste. 

  3. S’il fallait pinailler, il y a trois petits problèmes. Primo, lorsqu’une erreur survient, il peut être difficile de savoir quelle partie du script l’a provoquée car on ne dispose que de la ligne dans le fichier de règles qui a été généré. Deuzio, une table peut être utilisée avant d’être définie ce qui peut faire passer inaperçu certaines erreurs dues à un copier/coller. Tertio, l’application de la partie IPv4 peut réussir alors que la partie IPv6 a échoué ou vice-versa. Ces problèmes n’existent pas avec la deuxième méthode. 

16 November, 2014 04:28PM by Vincent Bernat

Intel Wireless 7260 comme point d'accès

Mon routeur personnel contient une carte wifi carte Intel Dual-Band Wireless-AC 7260 afin de servir de point d’accès. Cette carte supporte les normes 802.11ac (en 5 GHz) et 802.11n (à la fois en 5 GHz et en 2.4 GHz). Bien qu’elle ait bonne réputation en mode client, ce n’est pas vraiment le choix idéal pour un point d’accès.

$ lspci -k -nn -d 8086:08b1
03:00.0 Network controller [0280]: Intel Corporation Wireless 7260 [8086:08b1] (rev 73)
        Subsystem: Intel Corporation Dual Band Wireless-AC 7260 [8086:4070]
        Kernel driver in use: iwlwifi

En bref : optez plutôt pour une carte Atheros.

Limitations

Tout d’abord, une carte dite « double bande » ne peut utiliser qu’une seule bande de fréquences à la fois car elle ne dispose généralement que d’une seule radio. Quasiment toutes les cartes wifi ont cette limitation. Pour construire un point d’accès supportant les deux bandes à la fois, deux cartes sont nécessaires.

5 GHz

Il est impossible de mettre en place un point d’accès 5 GHz avec cette carte. Le microcode embarqué ne le permet pas. Cela peut se vérifier avec la commande iw :

$ iw reg get
country CH: DFS-ETSI
        (2402 - 2482 @ 40), (N/A, 20), (N/A)
        (5170 - 5250 @ 80), (N/A, 20), (N/A)
        (5250 - 5330 @ 80), (N/A, 20), (0 ms), DFS
        (5490 - 5710 @ 80), (N/A, 27), (0 ms), DFS
        (57240 - 65880 @ 2160), (N/A, 40), (N/A), NO-OUTDOOR
$ iw list
Wiphy phy0
[...]
        Band 2:
                Capabilities: 0x11e2
                        HT20/HT40
                        Static SM Power Save
                        RX HT20 SGI
                        RX HT40 SGI
                        TX STBC
                        RX STBC 1-stream
                        Max AMSDU length: 3839 bytes
                        DSSS/CCK HT40
                Frequencies:
                        * 5180 MHz [36] (20.0 dBm) (no IR)
                        * 5200 MHz [40] (20.0 dBm) (no IR)
                        * 5220 MHz [44] (20.0 dBm) (no IR)
                        * 5240 MHz [48] (20.0 dBm) (no IR)
                        * 5260 MHz [52] (20.0 dBm) (no IR, radar detection)
                          DFS state: usable (for 192 sec)
                          DFS CAC time: 60000 ms
                        * 5280 MHz [56] (20.0 dBm) (no IR, radar detection)
                          DFS state: usable (for 192 sec)
                          DFS CAC time: 60000 ms
[...]

Alors que la bande des 5 GHz est autorisée par le CRDA (le composant logiciel qui indique le domaine de réglementation actuel), toutes les fréquences sont marquées en no IR. Voici l’explication de ce drapeau:

Le drapeau no-ir permet d’interdire toute possibilité d’initier une transmission radio, y compris l’envoi de sondes (beacons). Ainsi, les interfaces AP/IBSS/Mesh/GO ne peuvent initier une communication sur ces canaux tant que le drapeau est présent.

SSID multiples

Cette carte ne peut publier qu’un seul SSID. La possibilité d’en émettre plusieurs est intéressante pour pouvoir proposer un réseau public (routé à travers Tor), un réseau invité pour les personnes de passage et un réseau privé. La commande iw confirme cette limitation :

$ iw list
        valid interface combinations:
                 * #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1,
                   total <= 3, #channels <= 1

À titre de comparaison, voici ce que la même commande renvoie pour une carte Atheros capable de publier 8 SSID simultanément :

$ iw list
        valid interface combinations:
                 * #{ managed, WDS, P2P-client } <= 2048, #{ IBSS, AP, mesh point, P2P-GO } <= 8,
                   total <= 2048, #channels <= 1

Configuration en point d’accès

Nonobstant ces limitations, la carte fonctionne correctement en point d’accès. Voici la configuration que j’utilise avec hostapd :

interface=wlan-guest
driver=nl80211

# Radio
ssid=XXXXXXXXX
hw_mode=g
channel=11

# 802.11n
wmm_enabled=1
ieee80211n=1
ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40][DSSS_CCK-40][DSSS_CCK-40]

# WPA
auth_algs=1
wpa=2
wpa_passphrase=XXXXXXXXXXXXXXX
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

L’utilisation du canal 11 impose de se limiter au 802.11n HT40-. La page de Wikipedia sur le 802.11n contient un tableau permettant de savoir si on peut utiliser HT40-, HT40+ ou les deux.

16 November, 2014 04:27PM by Vincent Bernat

Remplacer la box Swisscom par un routeur sous Linux

J’ai récemment déménagé à Lausanne, en Suisse. Le coût de l’accès à Internet est plus élevé qu’en France. Alors que Free propose un accès FTTH à 1 Gbps1 pour environ 38 € (TV et téléphone inclus), Swisscom fournit le même service pour environ 200 €2. Mon appartement est éligible à l’offre fibre de Swisscom. J’ai opté pour le forfait de 40 Mbps sans ligne téléphonique pour environ 80 €.

Comme de nombreux FAI, Swisscom fournit un boîtier Internet ainsi qu’un second boîtier pour la télévision que j’ai laissé dans son carton. Le boîtier Internet comprend quelques fonctionnalités sympathiques comme la possibilité de configurer le pare-feu, un réseau wifi pour les invités et le support de quelques protocoles de partage de fichiers. Mais pas d’accès shell !

J’ai acheté un petit PC pour prendre sa place. J’y ai installé la prochaine Debian Jessie. La quasi-intégralité de sa configuration logicielle est disponible dans un dépôt GitHub.

Je ne décris ici que les éléments spécifiques à Swisscom (ainsi que la QoS). Je vous invite à consulter ces deux articles connexes pour plus de détails sur d’autres aspects :

Ethernet

Le boîtier Internet est fourni avec un SFP 1000BX de marque Siligence3. La réception et la transmission se font sur la même fibre en utilisant des longueurs d’onde différentes pour chaque direction.

Plutôt que d’investir dans une carte avec un port SFP, j’ai opté pour un switch Netgear GS110TP qui dispose de 8 ports cuivres et de 2 ports SFP. C’est un switch assez économique disposant de pas mal de fonctionnalités intéressantes comme les VLAN et LLDP. Il fonctionne correctement tant que l’on n’exige pas trop de lui.

IPv4

La connectivité IPv4 est fournie sur le VLAN 10. Un client DHCP est obligatoire pour l’obtenir. Il est nécessaire de publier l’option DHCP « vendor class identifier » (option 60) lors de la demande de bail. Avec le client ISC DHCP, il suffit d’ajouter la ligne suivante dans le fichier /etc/dhcp/dhclient.conf :

send vendor-class-identifier "100008,0001,,Debian";

Les deux premiers nombres identifient le service demandé. Le reste n’a pas d’importance. Une fois le bail DHCP obtenu, un navigateur est nécessaire lors de la première utilsation pour s’identifier auprès de Swisscom.

IPv6

Swisscom fournit IPv6 à travers le protocole 6rd. Cela fait partie des mécanismes pour faciliter la migration vers IPv6 sans changer le cœur de réseau. Un tunnel est mis en place au-dessus d’IPv4. Ce type de tunnel est supporté nativement sous Linux depuis le noyau 2.6.33.

Pour configurer IPv6, il faut obtenir le préfixe à utiliser et l’IP de la passerelle 6rd. Certains FAI fournissent ces valeurs dans la réponse DHCP (option 212) mais ce n’est pas le cas de Swisscom. La passerelle est 6rd.swisscom.com et le préfixe est 2a02:1200::/28. Après avoir ajouté l’adresse IPv4 au préfixe, il reste 4 bits pour créer des sous-réseaux internes.

Swisscom ne fournit pas d’IPv4 fixe. On ne peut donc pas construire à l’avance son préfixe IPv6. Le script suivant, à placer dans /etc/dhcp/dhclient-exit-hooks.d/6rd, met en place le tunnel :

sixrd_iface=internet6
sixrd_mtu=1472                  # This is 1500 - 20 - 8 (PPPoE header)
sixrd_ttl=64
sixrd_prefix=2a02:1200::/28     # No way to guess, just have to know it.
sixrd_br=193.5.29.1             # That's "6rd.swisscom.com"

sixrd_down() {
    ip tunnel del ${sixrd_iface} || true
}

sixrd_up() {
    ipv4=${new_ip_address:-$old_ip_address}

    sixrd_subnet=$(ruby <<EOF
require 'ipaddr'
prefix = IPAddr.new "${sixrd_prefix}", Socket::AF_INET6
prefixlen = ${sixrd_prefix#*/}
ipv4 = IPAddr.new "${ipv4}", Socket::AF_INET
ipv6 = IPAddr.new (prefix.to_i + (ipv4.to_i << (64 + 32 - prefixlen))), Socket::AF_INET6
puts ipv6
EOF
)

    # Let's configure the tunnel
    ip tunnel add ${sixrd_iface} mode sit local $ipv4 ttl $sixrd_ttl
    ip tunnel 6rd dev ${sixrd_iface} 6rd-prefix ${sixrd_prefix}
    ip addr add ${sixrd_subnet}1/64 dev ${sixrd_iface}
    ip link set mtu ${sixrd_mtu} dev ${sixrd_iface}
    ip link set ${sixrd_iface} up
    ip route add default via ::${sixrd_br} dev ${sixrd_iface}
}

case $reason in
    BOUND|REBOOT)
        sixrd_down
        sixrd_up
        ;;
    RENEW|REBIND)
        if [ "$new_ip_address" != "$old_ip_address" ]; then
            sixrd_down
            sixrd_up
        fi
        ;;
    STOP|EXPIRE|FAIL|RELEASE)
        sixrd_down
        ;;
esac

Plutôt que de tenter de construire le préfixe IPv6 avec des commandes shell, un court script Ruby s’en charge. Le module ipaddr est très primitif mais on s’en sort.

Swisscom utilise le même MTU pour tous les clients. Certains sont en PPPoE et donc le MTU à l’intérieur du tunnel est de 1472 et non de 1480. Un outil en ligne permet de vérifier cela rapidement.

Il n’est pas impossible que le PMTUD soit cassé à certains points d’Internet. Bien que non idéal, l’utilisation de TCP MSS permet de contourner les problèmes aléatoires qui peuvent survenir quand on a un MTU inférieur à 1500 :

ip6tables -t mangle -A POSTROUTING -o internet6 \
          -p tcp --tcp-flags SYN,RST SYN \
          -j TCPMSS --clamp-mss-to-pmtu

QoS

MISE À JOUR : Cette section est malheureusement incorrecte, y compris la promesse qu’elle véhicule. Lisez le commentaire de Dave Taht pour en savoir plus.

Il y a très très longtemps, la mise en place d’une QoS efficace était plutôt compliquée. Le script Wonder Shaper était souvent utilisé pour obtenir une configuration honnête. Aujourd’hui, grâce au travail du projet Bufferbloat, il y a deux étapes très simples pour obtenir quelque chose de raisonnable :

  1. Réduire la taille de la queue de transmission des périphériques réseau. Une valeur de 32 paquets aide TCP à détecter rapidement les problèmes de congestion sans brider un lien gigabit.

    ip link set txqueuelen 32 dev lan
    ip link set txqueuelen 32 dev internet
    ip link set txqueuelen 32 dev wlan
    
  2. Utiliser fq_codel comme qdisc par défaut. Un qdisc reçoit les paquets qui sont envoyés par le noyau et décide comment les transmettre à la carte réseau. Ceux-ci peuvent être supprimés, réordonnés ou retardés. fq_codel est un algorithme combinant une gestion équitable des flux et la minimisation des latences. Une gestion équitable des flux signifie que tous les flux sont égaux quant à leur possibilité d’émettre des paquets. Autrement dit, un flux au débit très élevé ne monopolisera pas la carte réseau. Minimiser les latences s’obtient en s’assurant que la taille de la queue de transmission est limitée en supprimant des paquets d’autant plus agressivement que la latence augmente.

    tc qdisc replace dev lan root fq_codel
    tc qdisc replace dev internet root fq_codel
    tc qdisc replace dev wlan root fq_codel
    

  1. Débit descendant de 1 Gbps et débit montant de 200 Mbps. 

  2. Il s’agissait du forfait Vivo XL dont le prix est de CHF 169.– pour 300 Mbps. Pour atteindre 1 Gbps, il faut ajouter CHF 80.–. Désormais, ce forfait permet d’obtenir 1 Gbps symétriques pour le même prix. 

  3. Il y a deux références sur le SFP : SGA 441SFP0-1Gb et OST-1000BX-S34-10DI. La transmission se fait sur la longueur d’onde 1310 nm et la réception sur 1490 nm. 

16 November, 2014 04:26PM by Vincent Bernat

September 24, 2014

hackergotchi for Debian France

Debian France

Debian France reconnu comme Debian Trusted Organization

Debian France reconnu comme Debian Trusted Organization

Grâce à la refonte des statuts de l'association, Debian France est maintenant reconnue officiellement comme étant une Trusted Organization. Ainsi, l'association Debian France est habilitée à recevoir des fonds au nom de Debian et procéder à des dépenses pour le projet.

L'annonce a été réalisée par Lucas Nussbaum, Debian Project Leader.

24 September, 2014 07:14AM

September 12, 2014

Stéphane Blondon

Key Signing Assistant (concept)

Dans les allées de la DebConf14, j’ai discuté avec Franklin de l’intérêt pour un développeur d’utiliser son téléphone portable lors d’une key signing party.

Les schémas sont un brouillon d’une utilisation possible du téléphone. L’objectif n’est pas de remplacer la rencontre réelle ou la validation mais juste d’aider à l’échange et validation des clefs.

Actuellement, ce n’est qu’un concept ; rien n’est implémenté.

Le principe général est d’utiliser le téléphone comme un terminal pour l’échange et la validation. Les données partent et reviennent sur la station de travail du développeur par l’intermédiaire d’un serveur web.

  • Le téléphone portable considéré doit être un smartphone ;
  • La seule autorisation à donner pour le téléphone est l’accès à internet ;
  • On considère que les échanges réseau sont fait en https. Je ne pense pas que ce soit indispensable mais il n’y a aucune raison de s’en priver.

Avant la key signing party

Le développeur dispose d’un téléphone sur lequel l’application est installée.
Le processus pour installer ses propres informations est le suivant :

Avant la key signing party

Pendant la key signing party

Le processus est à reproduire pour chaque participant.

Pendant la key signing party

Après la key signing party

Une fois rentré chez lui, le développeur récupère l’ensemble de ses validations sur sa machine de travail :

Après la key signing party

Qu’en pensez-vous ?

Source des schémas

Schémas réalisés avec Inkscape, à partir d’icônes Tango et Gnome-Tango.
Les fichiers svg et png sont disponibles dans le répertoire http://stephane.yaal.fr/ksa/.


12 September, 2014 07:18AM by ascendances

September 10, 2014

Olivier Berger (pro)

Le MOOC Bases de données relationnelles est lancé

Nous venons de lancer la première édition du MOOC sur les bases de données relationnelles de Télécom SudParis. Au programme, de la théorie (algèbre relationnelle), de la pratique (dans SQLite dans les navigateurs basés sur WebKit, et plus tard dans PostgreSQL dans une box Vagrant basée sur Debian (voir post précédent)), des contenus et logiciels libres (autant que possible) et pas mal de rush pour finaliser tout ça dans le Moodle.

On débute avec plus de 800 inscrits à la fin du premier jour (y compris les 180 étudiants ingénieurs de 2ème année de Télécom SudParis, qui suivront le cours présentiel en parallèle du MOOC, et collaboreront avec les apprenants externes pour les travaux personnels).

Il est toujours possible de s’inscrire : le gros du travail commence en semaine 2 (qui commence lundi 15/09 à 00h00 heure de Paris).

10 September, 2014 07:53PM by Olivier Berger

August 20, 2014

hackergotchi for Aurélien Jarno

Aurélien Jarno

MIPS Creator CI20

I have received two MIPS Creator CI20 boards, thanks to Imagination Technologies. It’s a small MIPS32 development board:

mips-ci20

As you can see it comes in a nice packaging with a world-compatible power adapter. It uses a Ingenic JZ4780 SoC with a dual core MIPS32 CPU running at 1.2GHz with a PowerVR SGX540 GPU. The board is fitted with 1GB of RAM, 8GB of NOR flash, HDMI output, USB 2.0 ports, Ethernet + Wi-Fi + BlueTooth, SD card slot, IR receiver, expansion headers and more. The schematics are available. The Linux kernel and the U-Boot bootloader sources are also available.

Powering this board with a USB keyboard, a USB mouse and a HDMI display, it boots off the internal flash on a Debian Wheezy up to the XFCE environment. Besides the kernel, the Wi-Fi + Bluetooth firmware, and very few configuration changes, it runs a vanilla Debian. Unfortunately I haven’t found time to play more with it yet, but it looks already quite promising.

The board has not been formally announced yet, so I do not know when it will become available, nor the price, but if you are interested I’ll bring it to DebConf14. Don’t hesitate to ask me if you want to look at it or play with it.

20 August, 2014 08:52PM by aurel32

Olivier Berger (pro)

Building a lab VM based on Debian for a MOOC, using Vagrant + VirtualBox

We’ve been busy setting up a Virtual Machine (VM) image to be used by participants of a MOOC that’s opening in early september on Relational Databases at Telecom SudParis.

We’ve chosen to use Vagrant and VirtualBox which are used to build, distribute and run the box, providing scriptability (reproducibility) and making it portable on most operating systems.

The VM itself contains a Debian (jessie) minimal system which runs (in the background) PostgreSQL, Apache + mod_php, phpPgAdmin, and a few applications of our own to play with example databases already populated in PostgreSQL.

As the MOOC’s language will be french, we expect the box to be used mostly on machines with azerty keyboards. This and other context elements led us to add some customizations (locale, APT mirror) in provisioning scripts run during the box creation.

At the moment, we generate 2 variants of the box, one for 32 bits kernel (i686) and one for 64 bits kernel (amd64) which (once compressed) represent betw. 300 and 350 Mb.

The resulting boxes are uploaded to a self-hosting site, and distributed through vagrantcloud. Once the VM are created in VirtualBox, the typical VMDK drives file is around 1.3Gb.

We use our own Debian base boxes containing a minimal Debian jessie/testing, instead of relying on someone else’s, and recreate them using (the development branch version of) bootsrap-vz. This ensure we can put more trust in the content as it’s a native Debian package installation without MITM intervention.

The VM are meant to be run headless for the moment, keeping their size to the minimum, even though we also provide a script to install and configure a desktop environment based on XFCE4.

The applications are either used through vagrant ssh, for instance for SQL command-line in psql, or in the Web browser, for our own Web based SQL exerciser, or phpPgAdmin (see a demo screencast (in french, w/ english subtitles)), which can then be used even off-line by the participants, which also means this requires no servers availability for our IT staff.

The MOOC includes a section on PHP + SQL programming, whose exercises can be performed using a shared sub-folder of /vagrant/ which allows editing on the host with the favourite native editor/IDE, while running PHP inside the VM’s Apache + mod_php.

The sources of our environment are available as free software, if you’re interested to replicate a similar environment for another project.

As we’re still polishing the environment before the MOOC opening (on september 10th), I’m not mentioning the box URLs but they shouldn’t be too hard to find if you’re investigating (refering to the fusionforge project’s web site).

We don’t know yet how suitable this environment will be for learning SQL and database design and programming, and if Vagrant will bring more difficulties than benefits. Still we hope that the participants will find this practical, allowing them to work on the lab / exercises whenever and wherever they chose, removing the pain of installing and configuring a RDBMS on their machines, or the need to be connected to a cloud or to our overloaded servers. Of course, one limitation will be the requirements on the host machines, that will need to be reasonably modern, in order to run a virtualized Linux system. Another is access to high bandwidth for downloading the boxes, but this is kind of a requirement already for downloading/watching the videos of the MOOC classes 😉

Big thanks go to our intern Stéphane Germain, who joined us this summer to work on this virtualized environment.

20 August, 2014 01:59PM by Olivier Berger

August 15, 2014

hackergotchi for Aurélien Jarno

Aurélien Jarno

Intel about to disable TSX instructions?

Last time I changed my desktop computer I bought a CPU from the Intel Haswell family, the one available on the market at that time. I carefully selected the CPU to make sure it supports as many instructions extensions as possible in this family (Intel likes segmentation, even high-end CPUs like the Core i7-4770k do not support all possible instructions). I ended-up choosing the Core i7-4771 as it supports the “Transactional Synchronization Extensions” (Intel TSX) instructions, which provide transactional memory support. Support for it has been recently added in the GNU libc, and has been activated in Debian. By choosing this CPU, I wanted to be sure that I can debug this support in case of bug report, like for example in bug#751147.

Recently some computing websites started to mention that the TSX instructions have bugs on Xeon E3 v3 family (and likely on Core i7-4771 as they share the same silicon and stepping), quoting this Intel document. Indeed one can read on page 49:

HSW136. Software Using Intel TSX May Result in Unpredictable System Behavior

Problem: Under a complex set of internal timing conditions and system events, software using the Intel TSX (Transactional Synchronization Extensions) instructions may result in unpredictable system behavior.
Implication: This erratum may result in unpredictable system behavior.
Workaround: It is possible for the BIOS to contain a workaround for this erratum.

And later on page 51:

Due to Erratum HSw136, TSX instructions are disabled and are only supported for software development. See your Intel representative for details.

The same websites tell that Intel is going to disable the TSX instructions via a microcode update. I hope it won’t be the case and that they are going to be able to find a microcode fix. Otherwise it would mean I will have to upgrade my desktop computer earlier than expected. It’s a bit expensive to upgrade it every year and that’s a the reason why I skipped the Ivy Bridge generation which didn’t bring a lot from the instructions point of view. Alternatively I can also skip microcode and BIOS updates, in the hope I won’t need another fix from them at some point.

15 August, 2014 04:02PM by aurel32

July 15, 2014

Stéphane Blondon

DebConf sur la planète

Cette année, la conférence Debian annuelle aura lieu à Portland, aux États-Unis. Comme l’année dernière, j’y participerai. :)

Participation à la conférence Debian

Cette conférence sera la quinzième du nom. Voici une carte des différentes DebConf (passées en rouge, la prochaine en blanc et celle de l’année prochaine en jaune).

debconf14_planet

Jusqu’ici les conférences ont eu lieu alternativement en Europe et en Amérique (du Nord, centrale ou du Sud). Ce sera aussi le cas en 2015 puisque la conférence aura lieu en Allemagne à Heidelberg.

Réalisation de la carte

La carte diffère légèrement de celle réalisée l’année dernière (pour DebConf13) grâce quelques changements de configuration d’xplanet.

Commande utilisée

xplanet -transpng debconf14_planet.png -geometry 1024x512 -projection peters -config debconf14_planet.conf -num_times 1

Deux paramètres ont été modifiés :

  • La carte utilise une projection de Peters plutôt qu’une projection de Mercator. Pour cela, il suffit de remplacer -projection mercator par -projection peters.
  • Avec cette projection, la taille de la Terre n’est pas la même et la zone vide est rempli par défaut par un ciel étoilé. Il est aussi possible de choisir une couleur unie ou sa propre image de fond. Remplacer le paramètre -output par -transpng pour définir le fichier de sortie permet d’avoir un fond transparent.

Fichier debconf14_planet.conf

[earth]
shade=100
marker_file=coords.txt
marker_fontsize=15
map=night.jpg

L’ajout de map permet de définir l’image à utiliser à la place de l’image par défaut. Ici, on obtient une image de la Terre de nuit (qui provient de /usr/share/xplanet/images/night.jpg).

Fichier coords.txt

+44.80 +0.58 "0&1" #Bordeaux, France
+43.65 -79.38 "2" #Toronto, Canada
+59.92 +10.75 "3" #Oslo, Norway
-29.99 -51.22 "4" #Porto Alegre, Brazil
+60.22 +24.66 "5" #Espoo, Finland
+18.91 -98.97 "6" #Oaxtepec, Mexico
+55.96 -3.19 "7" #Edinburgh, Scotland
-37.96 -57.59 "8" #Mar del Plata, Argentina
+39.60 -6.08 "9" #Extremadura, Spain
+40.74 -74.00 "10" #New York City, USA
+44.78 +17.21 "11" #Banja Luka, Republika Srpska, Bosnia and Herzegovina
+12.14 -86.25 "12" #Managua, Nicaragua
+46.87 +6.75 "13" #Le Camp, Vaumarcus, Switzerland
+45.53 -122.67 "14" color=white #Portland, Oregon, USA
+49.24 +8.42 "15" color=yellow #Heidelberg, Germany

Le fichier a simplement été mis à jour (ajout d’Heidelberg, décalage des couleurs).

À bientôt !


15 July, 2014 08:56PM by ascendances

June 18, 2014

hackergotchi for Aurélien Jarno

Aurélien Jarno

Debian is switching (back) to GLIBC

Five years ago Debian and most derivatives switched from the standard GNU C Library (GLIBC) to the Embedded GLIBC (EGLIBC). Debian is now about to take the reverse way switching back to GLIBC, as EGLIBC is now a dead project, the last release being the 2.19 one. At the time of writing the glibc package has been uploaded to experimental and sits in the NEW queue.

EGLIBC is dead for a good reason: the GLIBC development has changed a lot in the recent years, due to two major events: Ulrich Drepper leaving Red Hat and the GLIBC development, and the GLIBC steering committe self-dissolving. This has resulted in a much more friendly development based on team work with good cooperation. The development is now based on peer review, which results in less buggy code (humans do make mistakes). It has also resulted in things that were clearly impossible before, like using the same repository for all architectures, and even getting rid of the ports/ directory. Before we used to have two sets of architectures, the main ones in the glibc repository with architectures like x86, SuperH or SPARC, and the secondary ones in the glibc-ports repository with architectures like ARM or MIPS. As you can see the separation was quite arbitrary, and often leaded to missing changes on the secondary architectures. We also got real stable branches, with regular fixes.

The most important EGLIBC features have been merged to GLIBC, including for example the use of non-bash but POSIX shell, or the renaming of reserved keywords. The notable exception is the support for configurable components, which we originally planned to use for Debian-Installer, by building a smaller flavor using -Os and without NIS and RPC support. At the end we never worked on that, and it seems that the hardware targeted by Debian has grown faster than the GLIBC size, so that is not really a big loss. At the end, we ended up with only 5 missing patches from the EGLIBC tree:

The package names are unchanged (except the source package and the binary package containing the sources) so the transition is fully transparent for the users.

I would like to thank all the CodeSourcery employees who worked on EGLIBC, with a special thank to Joseph Myers who spent countless hours to merge the most important EGLIBC changes back to GLIBC, and sent regular emails about the merge status. I would also like to thanks all the people on the GLIBC side that made the change to happen, and all persons participating in the GLIBC development.

18 June, 2014 08:04PM by aurel32

April 15, 2014

Florent Gallaire

Lucas 2.0

Lucas Nussbaum vient d’être réélu Debian Project Leader.

Comme on peut le constater sur ce graphe, il a obtenu 47 voix de plus que Neil McGovern :

Une analyse plus précise des votes permet d’en calculer une représentation plus « classique » du point de vue des habitudes électorales, et donc plus compréhensible pour la majorité des gens :

Lucas Nussbaum : 56,5%
Neil McGovern : 43,5%

C’est bien une large victoire de Lucas, mais aussi une défaite très honorable pour Neil, qui se positionne donc comme un prétendant sérieux à la victoire l’année prochaine.

15 April, 2014 04:36PM by fgallaire

April 11, 2014

hackergotchi for Roland Mas

Roland Mas

Une page de publicité

Allez, c'est vendredi, c'est permis, je vais m'autoriser deux petites annonces.

Premièrement : rappelez-vous Minami Taiko, ce groupe de tambours japonais du sud de la France. Bon, nous on est des amateurs, mais il se trouve qu'on fait venir, pour le festival Escale à Sète, un vrai groupe de taikos du Japon et tout. Ils s'appellent SEN, et ils vont faire quelques animations musicales dans Sète du 18 au 21 avril. Et avant de repartir dans leur lointain Cipango, ils feront un vrai concert à Montpellier, le mardi 22 avril au soir, sur le campus de l'INRA/Supagro. Et devinez qui fait la première partie ? Minami Taiko, voilà qui ! Donc si vous voulez découvrir le taiko ou voir quelques amateurs suivis d'un vrai groupe, faites donc un tour sur le site de Minami Taiko. À noter qu'il y a aussi un atelier d'initiation le même jour si ça vous intéresse.

Deuxièmement : je suis fier de vous présenter un petit site web que c'est moi qui l'ai fait avec mes petits doigts délicats. Ça s'appelle Chacun sa part, et ça sert à faire des comptes entre amis, genre quand on part en vacances ensemble, ou qu'on fait régulièrement des dépenses partagées dans un groupe de gens. Pour éviter des comptes d'apothicaire à chaque restau, chaque tournée au bar, chaque passage en caisse, on saisit la dépense sur le site, on dit qui a payé et qui a participé, et le site calcule automatiquement les soldes de chacun et propose des suggestions de remboursements pour rééquilibrer les comptes. Y'a un système d'invitations pour que chacun puisse consulter l'état du groupe et saisir des dépenses, des QR-codes pour faciliter la vie aux utilisateurs de smartphone, et même si ça n'a pas encore été testé à grande échelle ça a été validé par une poignée de testeurs dans différentes configurations. Allez-y, c'est cadeau. Chacun sa part. Point com.

11 April, 2014 08:06AM

37

C'est l'heure d'un marronnier de ce blog : la petite chronique numérologique du 11 avril. Celle-ci sera consacrée au nombre 37.

Nombre premier, premier irrégulier, premier cubain, cousin avec 41, hexagonal centré et étoilé, c'est aussi le numéro atomique du rubidium et ça nous fait une belle jambe.

Et c'est un nombre qui colle particulièrement bien à la journée d'aujourd'hui (qui, si jamais les générations futures s'y intéressent, s'annonce pour être belle et douce, avec peut-être un petit voile nuageux).

11 April, 2014 08:06AM

February 16, 2014

hackergotchi for Aurélien Jarno

Aurélien Jarno

On configure systems

I will never understand the point of using autotools, cmake or whatever configure system, when later the code uses an hardcoded list of architectures to determine the size of a pointer… Unfortunately for porters this pattern is quite common.

Update: As people keep asking, the way to check for the size of a given type is explained in the autoconf manual. To check for the size of the pointer, the following entry has to be added to configure.ac:

AC_CHECK_SIZEOF(void *)

On a 64-bit system, this will lead to the following entry in config.h:

/* The size of `void *', as computed by sizeof. */
#define SIZEOF_VOID_P 8

16 February, 2014 01:52PM by aurel32

January 06, 2014

Debian QEMU images updated

Following the release of Debian Wheezy, I have (finally) updated my set of Debian QEMU images for both Squeeze (6.0.8) and Wheezy (7.3). The following images are now available:

Each of these directories contains a GPG signed README.txt file with the md5sums all files, detailed instructions how to run these images and especially the minimum QEMU version to use.

The requirements to run the default desktop environment have increased a lot between Squeeze and Wheezy. An accelerated graphics card is now needed to be able to use Gnome (unless you use the fallback mode), which is not something provided by QEMU (actually there is now a QXL para-virtualized video card, but the driver is only in unstable). In addition GDM now needs more than 128MiB to start, while this is the default amount of memory provided for virtual machines. I have therefore decided to switch the default desktop environment on the Wheezy images to Xfce and the display manager to LightDM. Both Gnome and GDM are still installed on the images, and the original default can easily be restored using the following commands:

  • update-alternatives --auto x-session-manager
  • echo /usr/sbin/gdm3 > /etc/X11/default-display-manager

Beside this the new images only contain minor changes. The filesystems have been tweaked to not run fsck after a certain amount of days, and locales-all and openssh-server are now installed in all images. For MIPS and MIPSEL, 64-bit kernels are now also installed and provided, so that it is possible to choose between a 32-bit or a 64-bit kernel (see the README.txt for more details).

There is no Debian Wheezy SPARC image available, as QEMU does not fully support SPARC64 yet (it is actually possible to run it, but then the VM crashes often), and Debian Wheezy now only supports 64-bit kernels. I will also invest time to build an S390X image, but so far I haven’t been successful on that.

The following images are still available at the same location, though they haven’t been updated:

  • sparc (Etch)
  • SH4 (Sid from a few years ago)

06 January, 2014 06:46PM by aurel32

November 15, 2013

hackergotchi for Roland Mas

Roland Mas

10 ans !

Eh ben dites-donc mes aïeux, le temps passe. Le 15 novembre 2003, j'émettais ma première facture en tant que consultant indépendant.

Eh ben dix ans plus tard, y'a eu des hauts et des bas, mais globalement tout va bien, et je continue à faire des factures de temps en temps, et ça me plaît toujours autant.

Touchons du bois pour que ça continue, et on en reparle dans dix ans !

15 November, 2013 02:45PM

November 04, 2013

Stéphane Blondon

Évolution comparée du nombre de bogues entre distribution Linux

Il est difficile de connaitre la vitalité d’une distribution Linux. Il est possible de s’en faire une idée en fonction du nombre de posts sur des forums, de recherche sur un moteur de recherche, du nombre de téléchargement ou la visibilité sur Distrowatch, etc. Regarder le nombre de bogues en est une autre. Après tout, on ne signale des bogues que sur les distributions (et les logiciels) que l’on utilise… C’est celle qu’utilise bubulle.

Le but de l’article est de visualiser l’évolution du nombre de bogues entre Arch Linux, Debian, Ubuntu et RedHat. Puis de poser des pistes sur les causes possibles. À la fin de l’article, des liens vers les scripts de récupération des données (en python, à l’aide des bibliothèques requests et beautifulSoup) et les représentations graphiques (en python, avec la bibliothèque matplotlib) sont fournis.

Résultats obtenus

En bogues cumulés

Bogues cumulés

ArchLinux a un score extrêmement faible (moins de 40.000 bogues) comparé aux autres distributions.
Je connais mal ArchLinux donc je resterai au stade des hypothèses :

  • Je n’ai pas regardé le bon bug tracker. J’ai utilisé les données fournies sur bugs.archlinux.org.
  • Arch aurait un mode de travail différent des 3 autres distributions (par exemple si les problèmes sont signalés directement au responsable du paquet).
  • Arch n’aurait quasiment pas de bogue. Mon expérience personnelle de cette distribution me fait exclure cette hypothèse.
  • Arch aurait finalement peu d’utilisateurs.

Lors de la deuxième moitié 2007, Redhat a une augmentation durable dont j’ignore l’origine. La sortie de RHEL 5 ne me semble pas être une explication très convaincante.

Ubuntu, dernière distribution créée, dépasse toute les autres en 2010. La croissance reste rapide au fil du temps.

Sur le long terme, la croissance de Debian est globalement la même. La croissance des rapports de bogues est plus faible pour Debian qu’Ubuntu. Quelques hypothèses, non exclusives entre elles :

  • Moins d’utilisateurs pour Debian qu’Ubuntu. Ubuntu ayant été créée après, elle aurait dépassée Debian au début 2007 (en supposant un nombre de rapports envoyés par utilisateur égal entre les deux distributions).
  • L’interface web d’Ubuntu faciliterait plus le signalement de bogues que l’utilisation d’e-mails pour communiquer avec le BTS utilisé par Debian
  • On m’a signalé que reportbug, l’outil de signalement de bogues de Debian, aurait lui-même eu des problèmes pendant un moment. Cependant je ne pense pas que ce soit une cause significative sur une période longue.
  • Il y aurait plus d’envois automatiques lors de plantage chez Ubuntu que chez Debian (par exemple lorsque les paquets n’arrivent pas à être reconstruit – FTBFS).

Variations de la croissance du nombre de bogues

Variations au fil du temps

On constate un ralentissement de l’augmentation ces dernières dernières années pour Ubuntu (depuis 2010) et Debian (depuis 2006-2007) et une accélération pour RedHat, au point de rattraper celle de la phase base d’Ubuntu. En effet, la croissance pour Ubuntu subit des cycles en fonctions des publications tous les 6 mois.

C’est le même phénomène que celui de Debian lors de la préparation d’une nouvelle version stable. Phénomène peu visible sur le graphique ci-dessus, il faut regarder un graphique limité aux bogues de Debian.
Concernant Debian, la mesure de l’usage faite avec PopCon montre une augmentation ; il serait intéressant de voir si l’usage ralentit parallèlement à celle des rapports de bogues.

Si la mesure en nombre de bogues est pertinente, la distribution qui monte est RedHat plutôt qu’Ubuntu ou Arch.

Limites de l’approche

L’estimation du nombre de bogues est basé sur les identifiant des bogues donc les résultats peuvent être approximatifs.

Quelques données semblaient aberrantes, elles ont été supprimées des résultats. Les voici :

distrb id_bug AAAA MM JJ
redhat 100213 2002 05 06
redhat 780001 2010 09 29
redhat 900001 2012 03 08
ubuntu 80001 2005 07 25

La comparaison des valeurs absolues entre distribution n’a pas forcément de sens car on ne mesure pas les mêmes choses. C’est d’autant plus vrai que les distributions sont éloignées. Les variations et l’évolution de la variation semble plus pertinente même si elles sont à prendre avec précaution vu les erreurs de mesure…

Méthode de récolte des données et traitement

La récolte des données a été faite avec un script python qui télécharge des pages sur les interfaces web des rapports de bogues (merci requests !) puis cherche la date de création de l’alerte (merci BeautifulSoup !).

Le script est téléchargeable : dl_stats.py.
La bibliothèque requests permet de simplifier la récupération du code html. Lorsqu’il y a une redirection, la bibiothèque suit le lien automatiquement pour obtenir le contenu. Par exemple, pour Ubuntu, l’adresse https://bugs.launchpad.net/bugs/308191 redirige automatiquement vers https://bugs.launchpad.net/ubuntu/+source/xf86-input-multitouch/+bug/308191. Il suffit donc de faire :

r = requests.get("https://bugs.launchpad.net/bugs/308191")

Les statistiques sont écrites sur la sortie standard et doivent être copiées dans des fichiers .txt, un par distribution. Les fichiers seront lus par le script de traçage des graphiques. Ce script utilise matplotlib et est disponible à http://stephane.yaal.fr/evolution-rapports-de-bogues/draw_stats.py. Les fichiers de statistiques utilisés sont disponibles dans le même répertoire (http://stephane.yaal.fr/evolution-rapports-de-bogues/).

Inspirations

La création des graphique est basée sur l’exemple de l’évolution du prix de l’essence disponible sur geophysique.be (évolution du prix de l’essence).

La documentation de matplolib pour personnaliser ces graphiques : pyplot.plot

Merci à Christian Perrier (bubulle) pour cette façon originale d’estimer la vitalité d’une distribution.

Merci aussi à Nirgal, Joey Hess et tout ceux avec qui j’en ai parlé à la DebConf 13 pour leurs réflexions.


04 November, 2013 10:47PM by ascendances

October 10, 2013

hackergotchi for Roland Mas

Roland Mas

Les rumeurs de la mort de ce blog…

…sont un peu exagérées. Mais c'est sûr, c'est calme, et apparemment une partie de mon lectorat s'en inquiète. Donc voici un lot de nouvelles pour ceux que ma vie passionne et qui n'ont plus accès au 3615 Roland.

Alors bon, suite à ce que je vous disais sur Eleven en mai, je me suis mis en quête d'un autre groupe de rock. J'avais cru en trouver un, mais j'ai l'impression que la motivation n'était pas universellement partagée, à tel point qu'on a dû faire moins d'une répétition par mois en moyenne. C'est pas des bonnes conditions, donc je suis de nouveau en recherche. Si vous cherchez un batteur pour jouer du rock aux environs de Montpellier, faites-moi signe.

Cela dit, je ne suis pas resté oisif pour autant : le taiko continue, l'association a été reprise en main, on répète, et hop hop hop on est même invités à jouer en public pas plus tard que ce week-end ! Ça va se passer au parc Borély à Marseille, à l'occasion du festival d'automne organisé par le consulat général du Japon. Plus de détails sur le site de Minami Taiko, vu que c'est comme ça qu'on s'appelle. Le site est neuf aussi, mais on y mettra des photos et peut-être des vidéos.

Sur les autres fronts : côté FusionForge c'est calme, mais la prochaine édition du Debian Administrator's Handbook / Cahier de l'Admin Debian avance petit à petit. On commence non pas à en voir le bout, mais à voir ce qu'il reste à faire avant d'en voir le bout. Mes autres récents petits bricolages de geek feront peut-être l'objet d'un billet dédié si je suis motivé.

Voilà voilà.

10 October, 2013 03:15PM

August 26, 2013

Olivier Berger (perso)

Synchroniser la musique entre ordinateur (Gnu/Linux) et NAS de la Freebox Revolution

J'utilise git-annex pour synchroniser le partage sur le NAS de la FreeBox Revolution, de mes fichiers de musique numérisée (MP3, Ogg), de façon à pouvoir gérer la musique sur mon ordinateur, tout en permettant de la jouer sur la télévision du salon, via l'interface de la freebox. La même procédure doit marcher pour d'autres NAS/set top boxes.

Données du problème :

  • mettre à jour les fichiers depuis le PC (ligne de commande, interfaces graphiques, numérisation de nouveaux CDs, etc.)
  • avoir un backup sur un disque de sauvegarde (sur une machine différente de cd PC, en cas de fausse manip, ou du NAS, au cas où la freebox plante).
  • avoir les fichiers en clair dans l'arborescence du NAS, sous son répertoire prédéfini par la freebox
  • automatiser la synchronisation et les backups, autant que faire se peut

La procédure est la suivante :

  1. monter sur mon ordi, via CIFS, le disque de la freebox, qu'elle exporte via samba : c'est donc un montage ne supportant pas les liens symboliques : git-annex supporte heuresement le mode "direct" pour les remotes. Ce n'est donc pas une remote réseau, mais une remote locale, dans un répertoire de l'ordi. Appelons-le /mnt/freebox-server dans ce qui suit.
  2. initialiser un dossier de bibliothèque musicale comme étant un repo git-annex :

$ cd ~/Musique
$ git init
$ git annex init "mon ordi"

# ajout des fichiers musicaux

$ git annex add . $ git commit -m "initial"

$ cd /mnt/freebox-server/Musiques # on clone dans un sous-répertoire pour permettre de gérer des fichiers en dehors ce schéma sur la freebox $ git clone ~/Musique all $ cd all $ git annex init "freebox server"

$ cd ~/Musique $ git remote add freebox-server /mnt/freebox-server/Musiques/all # copie des fichiers : long $ git annex copy --to freebox-server $ git annex sync
$ cd /mnt/freebox-server/Musiques/all #$ git remote add laptop $ git annex sync

Normalement, à l'issue de tout cela, le contenu sur la freebox est synchronisé.

Ensuite, il ne reste qu'à ajouter une remote spéciale rsync pour les backups vers une autre machine, mais ça je vous laisse jouer avec git-annex pour voir comment faire ;)

26 August, 2013 09:12AM by obergix

August 01, 2012

hackergotchi for Grégory Colpart

Grégory Colpart

Astuces pour gérer un répertoire ext3 bien rempli

Disclaimer : Valable pour de l’ext3 sous Linux (utilisable sur d’autres filesystems ou Unix à vos disques et péril)

Vous avez un répertoire rempli à rabord de nombreux fichiers, et il est impossible de connaître sa taille, le lister ou l’effacer sans impact sur la production ?

Voici quelques astuces :

– Avec un “ls -ld” sur le répertoire, vous pouvez estimer grossièrement le nombre de fichiers présents dans un répertoire. En effet, un répertoire vide fait 4 Ko (je simplifie). Et plus il contient de fichiers, plus sa taille va augmenter. Par exemple, un répertoire contenant 2 millions de fichiers pourra faire une taille de 100 Mo (je parle bien de la taille du répertoire et non pas de la taille du contenu). Attention, c’est variable selon la longueur des noms des fichiers. Et prendre garde aussi que ce n’est pas dynamique : si vous videz complètement un répertoire bien rempli, il gardera sa taille volumineuse (d’où l’intérêt de recréer un répertoire qui s’est rempli “par erreur”).

– Pour lister les fichiers du répertoire, utiliser la commande “ls” n’est pas une bonne idée car elle accède à toute la liste avant de l’afficher. Voici comment lister 10 fichiers sans attendre :

perl -le 'opendir DIR, "." or die; $i=0; while ($i<10) { my $f = readdir DIR; print $f; $i++; }; closedir DIR'

Grâce à leurs noms, vous pouvez désormais examiner (ouvrir, connaître sa taille) un échantillon de fichiers contenus dans votre fameux répertoire.

Pour lister l’ensemble des fichiers sans attendre comme “ls” :

perl -le 'opendir DIR, "." or die; print while $_ = readdir DIR; closedir DIR'

– Pour effacer le contenu du répertoire en limitant l’impact sur la production, oubliez “rm -rf” qui va saturer vos I/O disque mais préférez le faire par blocs de N fichiers avec des pauses de quelques secondes ! Voici une commande “conviviale” qui va faire cela par blocs de 300 fichiers avec des pauses de 5 secondes :

perl -le 'use POSIX qw/strftime/; opendir DIR, "." or die; $i=0; printf "DELETING IN PROGRESS...";
 while (my $f = readdir DIR) {unlink $f;  $i++;
 if ($i % 300 == 0) {printf "...$i files deleted\n".strftime("%Y-%m-%d %H:%M:%S",localtime)." : PAUSE...";
 $| = 1; sleep 5 ; printf "...DONE. "; printf "DELETING IN PROGRESS..."}}; printf "...DONE"; closedir DIR'

EDIT : en complément, on n’oubliera pas que l’on peut aussi gérer la priorité d’ordonnancement des I/O avec la commande ionice
(merci à Sylvain B. de l’avoir souligné)

01 August, 2012 02:24AM by Gregory Colpart

August 18, 2010

Mon compte-rendu de DebConf 10 à New York

DebConf est la conférence annuelle des développeurs du projet Debian. Cela permet aux développeurs et contributeurs de Debian d’assister à des présentations techniques, sociales et politiques, mais aussi de se rencontrer et travailler ensemble. Cette année, la 11e DebConf s’est tenue à New York du 1er au 7 août. Evolix a sponsorisé cette conférence et j’étais donc sur place, voici mon résumé de cette semaine.

Premiers pas plutôt festifs le vendredi soir avec le SysAdmin Day dans un bar à Manhattan puis direction Brooklyn pour une Debian Party organisée par NYC Resistor, un collectif local de hackers en électronique à l’origine de MakerBot, une imprimante 3D Open Source. Samedi c’est l’arrivée à Columbia University, l’université américaine qui accueille la DebConf 10. Une bonne partie des participants est hébergée sur le campus universitaire, dans des chambres avec accès haut-débit et une cafétéria à volonté.

C’est donc le dimanche 1er août que commence la DebConf avec des présentations orientées grand public pour cette première journée appelée le “Debian Day”. Un grand message de bienvenue pour un public plus large en ce premier jour, puis enchaînement des présentations. J’ai tout d’abord assisté à une présentation sur le sysadmin par François Marier qui a livré toutes ses astuces et une série de packages intéressants (unattended-upgrades, safe-rm, etckeeper, fcheck, fwknop, etc.). J’ai d’ailleurs pu échanger par la suite avec lui d’autres informations, sachant qu’il travaille dans une boîte similaire à Evolix : Catalyst située en Nouvelle-Zélande ! J’ai ensuite assisté à la présentation de Stefano Zacchiroli, l’actuel leader Debian, qui encourage fortement les développeurs à réaliser des NMU (Non Maintainer Upload), c’est-à-dire la publication d’un package par un autre développeur que celui responsable officiellement. J’ai ensuite poursuivi avec la présentation du Google Summer of Code 2010 de Debian : une présentation générale puis plusieurs “étudiants” expliquent leur projet en cours : Debian-Installer pour OpenMoko, GUI pour aptitude en QT, etc. D’autres présentations ont ensuite suivies, mais j’ai plutôt été découvrir le “hacklab” : une pièce pourvue de multiprises, switches et points d’accès afin de permettre à plusieurs dizaines de personnes de travailler/hacker. Le “Debian Day” a été un franc succès avec plusieurs centaines de participants. En soirée, c’est l’heure du coup d’envoi “officiel” de la DebConf par Gabriella Coleman, l’une des organisatrices de la DebConf 10, qui présente avec humour la semaine à venir, avec un petit retour en images sur les éditions précédentes.

Deuxième jour, on a le droit à un Bits from DPL en direct de la part de Stefano Zacchiroli (au lieu du traditionnel mail). Ensuite, il y a de nombreuses présentations. Durant DebConf, il y en aura plus de 100 au total, réparties dans 3 salles : Davis (avec vidéo), 414 Schapiro et Interschool (avec vidéo). Le choix est parfois difficile ! Pour ma part, j’ai assisté en fin de matinée à la présentation de la structure américaine à but non lucractif SPI : c’est elle qui gère les droits de la marque Debian, mais pas seulement : OpenOffice.org, Drupal, PostgreSQL, Alfresco, etc. de nombreux projets de logiciels libres utilisent cette structure légale ! Dans l’après-midi, c’est Mark Shuttleworth, fondateur d’Ubuntu et CEO de Canonical, qui nous présente le travail réalisé pour améliorer l’interface graphique des netbooks, notamment par l’intermédiaire du projet Ayatana. Puis, Jorge Castro, responsable chez Canonical des relations avec les développeurs extérieurs, parle de la collaboration entre Ubuntu et Debian. On notera que toute une équipe de Canonical est venue à DebConf et que les relations avec Debian semblent devenir plus sereines. Le soir venu, c’est l’heure de Wine&Cheese, un évènement devenu incontournable pour une DebConf : imaginez des centaines de fromages et alcools venus du monde entier (Italie, Allemagne, France, Mexique, Brésil, USA, Taïwan, Pologne, Kazhastan, Espagne, Nouvelle-Zélande, Corse, Vénézuela, Hollande, Marseille, Irlande, Angleterre, Japon, etc. etc.) et plus d’une centaine de développeurs Debian lâchés dessus pendant des heures… le résultat est… indescriptible ! Pour ma part, j’avais apporté un rosé Bandol, des bières La Cagole, du Banon et de la Tapenade… qui n’ont pas fait long feu.

Troisième jour et l’on débute par un talk d’Eben Moglen, avocat de la FSF, qui rappelle les dangers du Cloud Computing comme la gestion des données privées. Sa réponse : “Chacun devrait avoir un serveur chez soi” et il évoque la FreedomBox, une boi-boîte que tout le monde aurait chez soi pour faire office de petit serveur avec les fonctionnalités classiques (web, messagerie, VoIP). Cette idée rencontre un certain enthousiasme et plusieurs réfléchissent déjà à la réalisation de cette idée ! J’ai ensuite suivi une succession de présentations sur le thème de l’entreprise. On a parlé du déploiement de machines avec le logiciel Puppet, de l’installation automatisée de Debian avec FAI et Gosa, notamment présentée par Mickaël Bank, un développeur allemand très actif dans Debian. On a également des témoignages très intéressants : Russ Allbery, administrateur système et réseau à l’université de Standford en Californie, explique quels sont les arguments en faveur de Debian en entreprise et en profite pour présenter la gestion de Debian à Standford ; Faidon Liambotis, sysadmin chez GRNET (un opérateur public grec), présente leur utilisation de Debian mais aussi leurs choix en terme de déploiement (Puppet/FAI) ou de virtualisation (KVM/Ganeti). Pour terminer la journée, Guido Trotter de chez Google, nous parle des fonctionnalités réseau intéressantes sous Linux (VLAN, tunnels, routing, etc.). Une journée riche en idées et en informations ! En soirée, nous avons visualisé le film Open Source Sita Sings the Blues et Nina Paley nous a expliqué son choix d’une licence libre pour son film.

Le quatrième jour, c’est le Day Trip. Il s’agit classiquement d’une journée consacrée à des activités touristiques extérieures. Nous avons été visiter l’église Trinity Church à Manhattan où le drame du 11 septembre 2001 a mis un superbe orgue hors d’usage, remplacé temporairement par un orgue électronique “Powered by Linux”… qui a finalement été conservé en raison de sa qualité. Keith Packard, l’un des gourous de X.org employé chez Intel, a joué quelques minutes sur cet orgue. Ensuite, direction la plage de Coney Island. Puis un match de baseball où Stefano Zacchiroli lancera la première balle du match.

Cinquième jour, on reprend avec un BoF (un BoF=Birds of a Feather est une discussion informelle de groupe) sur la virtualisation où plusieurs personnes témoignent de leurs expériences et connaissances sur le sujet. Pas mal d’informations intéressantes, notamment sur le couple Ganeti/KVM pas mal mis en avant par Iustin Pop, l’un des développeurs de Ganeti employé chez Google. J’y apprends notamment que KVM gère une notion de mémoire partagée et ainsi démarrer une 2e machine virtuelle avec un même OS ne consommerait pas de mémoire supplémentaire sur le système hôte ! Suite des présentations, notamment une portant sur DebConf 12 qui pourrait peut-être se dérouler au Brésil. Et fin de la matinée avec François Marier qui présente le projet Libravatar permettant d’offrir une alternative à Gravatar, l’outil centralisé de gestion des avatars. Ses idées sont de se baser sur les DNS pour répartir les avatars pour chaque noms de domaine. Il a déjà commencé à développer une application en Django pour gérer cela. Suite de la journée avec un BoF sur Lintian (outil de vérification de la conformité des packages Debian) géré par Russ Allbery. Puis j’ai assisté à une présentation de Guido Günther qui a expliqué comment gérer son packaging avec Git et notamment git-buildpackage (très intéressant pour moi car je gère déjà mes packages Debian comme ça). Ensuite, petite pause sportive, car une dizaine de développeurs Debian a été participé à un cross de 5 kms dans le Bronx, avec des résultats honorables !

Sixième jour, on débute par Bits from Release Team qui déclare en direct que Squeeze, la prochaine version stable, est désormais freezée ! Un scoop à DebConf ! C’est ensuite Stefano Zacchiroli qui nous présente son travail en cours sur une amélioration de la gestion des dépendances, non seulement pour Debian mais aussi pour les autres distributions : plus de détails sur le site du projet Mancoosi. C’est ensuite la traditionnelle photo de groupe. En début d’après-midi, Margarita Manterola dresse un constat très lucide de l’état de Debian avec son talk Making Debian Rule, again. Puis en fin d’après-midi, c’est un BoF très apprécié mené par Joey Hess sur CUT (Constantly Usable Testing) qui explore les possibilités d’avoir une distribution Testing utilisable en permanence ! Le soir venu, c’est un BoF sur l’utilisation d’OpenPGP et la classique Keysigning Party qui a regroupé plusieurs dizaines de participants.

Septième et dernier jour, encore de nombreuses présentations. J’ai notamment assisté à celle de Philippe Kern, membre de la Release Team, qui a parlé du management de la version stable et de volatile. On notera par exemple qu’on peut désormais corriger des bugs en priorité “Important” dans les points de Release. La suite ce sont des fameux Lightnings Talks, une dizaine de présentations très courtes : une qui suggère d’arrêter complètement d’utiliser les mots de passe, une autre sur le logiciel runit, une autre sur les éclairs (lightnings !) ou encore l’historique en photos des Wine&Cheese Party ! Fun et instructif. Puis c’est l’heure de la conférence de clôture, où l’on remet des prix à ceux qui ont corrigé le plus de bugs mais surtout tous les volontaires sont vivement remerciés et j’en profite pour adresser une nouvelle fois mes remerciements à :
– L’équipe qui a organisé cette DebConf 10 : un travail impressionnant pour un résultat professionnel et communautaire à la fois : on frôle la perfection !
– L’équipe vidéo qui a fait un travail génial et vous pouvez ainsi retrouver l’ensemble des talks en vidéo,
– Les centaines de personnes sympas et passionnées qui contribuent à faire de Debian une distribution de grande qualité… et qui sait évoluer, la preuve avec les sujets abordés lors de cette DebConf !

Petite conclusion de cette semaine intensive, comme vous avez pu le lire : j’ai pu acquérir de nombreuses informations et faire le plein de nouvelles idées, mais aussi avoir des contacts réels avec d’autres développeurs et comprendre encore mieux le fonctionnement “social” de Debian. C’est donc très positif et cela va me permettre d’améliorer mon travail quotidien au sein d’Evolix, mais aussi réfléchir à d’autres projets et me motiver pour contribuer davantage à Debian. Debian rules !

18 August, 2010 11:52AM by Gregory Colpart

January 24, 2010

Autres exemples de migration Etch->Lenny [1]

La fin du support officiel de Debian Etch approchant, il est grand temps de migrer vers Lenny pour les machines pas encore à jour. Après un premier exemple de migration Debian Etch->Lenny, je poursuis la série avec des informations tirées de plusieurs migrations récentes sur des serveurs en production.

Je ne rappellerais pas toutes les précautions nécessaires (tests préalables, sauvegardes, désactivations des services, etc.) ni la classique question  sur  “quand faut-il migrer ?”, vous trouverez tout cela dans mes exemples précédents. Je rappelle simplement l’idée de base : prendre les précieuses Release Notes, mettre à jour le fichier sources.list, puis exécuter les commandes aptitude update && aptitude upgradex, puis mettre-à-jour les services les plus critiques via aptitude install <PACKAGE>, et enfin aptitude dist-upgrade && aptitude dist-upgrade (répéter dist-upgrade est souvent nécessaire).

Passons désormais aux différentes remarques sur ces migrations :

– PostgreSQL : on passe de la version 8.1 à 8.3. Notez qu’il s’agit de paquets différents, il est donc possible de garder la version 8.1 en Etch, et d’installer en parallèle la version 8.3, afin de faciliter encore plus la migration. Pour migrer les données, on réalisera un dump avec pg_dumpall qui sera réinjecté dans la nouvelle base. On pourra ensuite adapter le port dans postgresql.conf pour passer la version 8.3 en production.

– phpPgAdmin : avec PostgreSQL 8.3, on ne peut plus se connecter à la table template1 : c’est le comportement par défaut de phpPgAdmin, qu’on devra donc modifier en mettant postgres à la place (pour la variable $conf[‘servers’][0][‘defaultdb’] dans le fichier config.inc.php)

– Apache : la configuration de l’alias /icons/ est déplacé dans le fichier mods-available/alias.conf, il peut donc faire doublon avec la déclaration dans apache2.conf, ce qui sera signalé via le warning suivant : [warn] The Alias directive in /etc/apache2/apache2.conf at line 240 will probably never match because it overlaps an earlier Alias. Commenter les directives dans le fichier apache2.conf résoudra ce petit soucis.

– OpenLDAP : on passe d’une version 2.3 à 2.4, mais le plus marquant pour la migration est que cela force le processus à tourner avec un utilisateur/groupe dédié. Pour diverses raisons (dist-upgrade interrompu par exemple), on pourra rencontrer des soucis plus ou moins alarmants. Ainsi, j’ai pu rencontrer cette erreur :
bdb(dc=example,dc=com): PANIC: fatal region error detected; run recovery
bdb_db_open: database “dc=example,dc=com” cannot be opened, err -30978. Restore from backup!
backend_startup_one: bi_db_open failed! (-30978)
slap_startup failed
On veillera donc sur l’utilisateur/groupe propriétaire des fichiers dans le répertoire /var/lib/ldap et, au besoin, on ajustera : chown -R openldap:openldap /var/lib/ldap/
Mon conseil : mettre-à-jour le paquet slapd de façon spécifique avant le dist-upgrade

– Postfix : on passe de 2.3 à 2.5. On notera simplement la valeur par défaut de $smtp_line_length_limit characters qui passe à 990, ce qui coupe les lignes trop longues pour se conformer au standard SMTP. Si cela posait problème, on pourrait revenir à l’ancien comportement en positionnant smtp_line_length_limit=0

– SpamAssassin : l’utilisant en stockant la configuration des utilisateurs dans un annuaire LDAP, le daemon spamd s’est mis à râler : cannot use –ldap-config without -u
Le problème sera résolu en ajoutant l’option -u nobody, ce qui fera tourner spamd en tant que nobody (ce qui n’est pas une mauvaise chose, au contraire).

– Amavis : apparemment, lors de la détection d’un virus, le code retourné n’est plus 2.7.1 mais 2.7.0 : 2.7.0 Ok, discarded, id=13735-07 – VIRUS: Eicar-Test-Signature
Rien de bien grave, mais cela a nécessité d’adapter un plugin Nagios pour qu’il attende le bon code de retour.

– Courier-imapd-ssl : après une mise-à-jour gardant mon fichier /etc/courier/imapd-ssl actuel, j’obtenai des erreurs avec certains clients IMAP :
couriertls: accept: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
En regardant de plus près, certaines directives changent dans ce fichier de configuration, et il est donc conseillé de repartir du fichier proposé par Lenny, et d’y apporter ses modifications (souvent, cela se limite à préciser le certificat).

– Horde : si vous utilisez une base de données pour stocker les paramètres ou autres, la paquet php-db (déjà en Recommends: en Etch) est d’autant plus nécessaire, sous peine d’obtenir l’erreur : PHP Fatal error:  _init() [<a href=’function.require’>function.require</a>]: Failed opening required ‘DB.php’ (include_path=’/usr/share/horde3/lib:.:/usr/share/php:/usr/share/pear’) in /usr/share/horde3/lib/Horde/DataTree/sql.php on line 1877

– Sympa : on attaque là le cauchemard de mes migrations. À chaque fois, tellement de soucis majeurs et mineurs, que j’ai l’impression d’être le seul à utiliser ce paquet. Voici en vrac tous les soucis rencontrés : les accents dans les descriptions ont sautés (une sorte de double encodage) et cela a nécessité des corrections manuelles, la table logs_table doit être créée à la main (j’utilise Sympa avec PostgreSQL), et enfin une typo surprenante un “GROUP BY” à la place d’un “ORDER BY” (j’ai ouvert le bug #566252 à ce sujet).

– Asterisk : on passe de la version 1.2 à la version 1.4. Lors de la migration, j’ai constaté un bug étrange, le fichier modules.conf qui charge les modules additionnels a disparu. Du coup, sans lui, Asterisk ne charge pas les modules nécessaires (SIP, etc.). Il a donc fallu le restaurer.

– udev : le meilleur ami des sysadmins (ou pas). Si les migrations douloureuses Sarge->Etch sont loin derrière nous, il reste néanmoins quelques blagues. La dernière en date a été un renommage des interfaces réseau : eth0->eth1 et eth1->eth2. Classique mais étonnant, ce genre d’humour est sensé être dépassé grâce aux “persistent rules” qui nomment les interfaces en fonction de l’adresse MAC. À rester vigilant sur ce point avant le redémarrage donc.

Voilà pour les remarques. Vous noterez que je n’ai pas abordé le noyau Linux. C’est parce que pour la majorité de nos serveurs, ils sont gérés de façons spécifiques (au lieu d’utiliser les noyaux officiels Debian). Ainsi, ils restent dans leur version actuelle (2.6.31 à cette heure) pendant la migration. Bien sûr, cela n’empêche pas d’effectuer un redémarrage de la machine suite à la mise-à-jour : cela permet de s’assurer que tout est bien en place et le sera toujours après un éventuel redémarrage d’urgence.

Rendez-vous pour de prochaines migrations !

24 January, 2010 06:05PM by Gregory Colpart