<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.davromaniak.eu/index.php?feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Le site de Cyril &quot;Davromaniak&quot; Lavier, sysadmin ascendant geek - Mot-clé - FRsAG</title>
  <link>http://www.davromaniak.eu/index.php?</link>
  <atom:link href="http://www.davromaniak.eu/index.php?feed/tag/FRsAG/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Wed, 12 Jun 2013 08:20:26 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Inclure un fichier dans un autre en AWK</title>
    <link>http://www.davromaniak.eu/index.php?post/2012/09/21/Inclure-un-fichier-dans-un-autre-en-AWK</link>
    <guid isPermaLink="false">urn:md5:60d85432cdb7a900c4b564eeb530075b</guid>
    <pubDate>Fri, 21 Sep 2012 13:58:00 +0200</pubDate>
    <dc:creator>Cyril Lavier</dc:creator>
        <category>Informatique et nouvelles technologies</category>
        <category>AWK</category><category>Bash</category><category>FRsAG</category><category>Planet-Libre</category>    
    <description>    &lt;p&gt;Bonjour.&lt;/p&gt;


&lt;p&gt;Une fois n'est pas coutume, un peu d'informatique sur ce blog (ne vous inquiétez pas, ça ne durera pas longtemps, le prochain INT10 est prévu pour mercredi soir :D).&lt;/p&gt;


&lt;p&gt;J'ai été confronté au besoin de remplacer une chaine de caractères par le contenu d'un fichier dans un fichier texte.&lt;/p&gt;


&lt;p&gt;Exemple&amp;nbsp;: je désire remplacer &quot;##__youpi_tralala__##&quot; par le contenu du fichier nommé &quot;youpi_tralala&quot;.&lt;/p&gt;


&lt;p&gt;J'ai essayé en sed, mais ça ne fonctionnait pas à tout les coups, avec sed qui voulait interpréter le contenu du fichier &quot;youpi_tralala&quot;.&lt;/p&gt;


&lt;p&gt;Donc j'ai sorti mes moufles et mon outil préféré (AWK).&lt;/p&gt;


&lt;p&gt;Voici le résultat, le script include_file.awk&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
{
	str=$0
	where=match(str,regexp)
	if (where) {
		while ((&amp;quot;cat &amp;quot;file) | getline tstr &amp;gt; 0) {
			if (newstr == &amp;quot;&amp;quot;) {
				newstr=tstr
			} else {
				newstr=newstr&amp;quot;\n&amp;quot;tstr
			}
		}
		close (tstr)
		sub(regexp,newstr,str)
	}
	print str
}
&lt;/pre&gt;


&lt;p&gt;C'est un beau script AWK, qui s'appelle de la façon suivante&amp;nbsp;: awk -v regexp=&quot;belle regexp&quot; -v file=/chemin/vers/le/fichier/a/inclure -f include_file.awk fichier_contenant_la_regex&lt;/p&gt;


&lt;p&gt;Je m'en sers souvent en LaTeX pour débugguer certains include un peu farfelus que je veux faire, pour savoir si c'est le contenu du fichier à inclure ou mon include qui cause le problème.&lt;/p&gt;


&lt;p&gt;Pour l'utiliser avec LaTeX, voici un exemple&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
awk -v regexp=&amp;quot;^%%__paragraphe1__%%$&amp;quot; -v file=includes/paragraphe1.tex -f include_file.awk document.tex | pdflatex -jobname=document
&lt;/pre&gt;


&lt;p&gt;Ici, la chaîne présente dans mon fichier document.tex est &quot;%%__paragraphe1__%%&quot;.&lt;/p&gt;


&lt;p&gt;Et comme on dit&amp;nbsp;: &quot;Ça marche mais c'est crado... C'est made in davro !!&quot;&lt;/p&gt;


&lt;p&gt;Merci.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.davromaniak.eu/index.php?post/2012/09/21/Inclure-un-fichier-dans-un-autre-en-AWK#comment-form</comments>
      <wfw:comment>http://www.davromaniak.eu/index.php?post/2012/09/21/Inclure-un-fichier-dans-un-autre-en-AWK#comment-form</wfw:comment>
      <wfw:commentRss>http://www.davromaniak.eu/index.php?feed/atom/comments/228</wfw:commentRss>
      </item>
    
  <item>
    <title>Debian Wheezy a été freezé</title>
    <link>http://www.davromaniak.eu/index.php?post/2012/07/01/Debian-Wheezy-a-ete-freeze</link>
    <guid isPermaLink="false">urn:md5:8855ca893972939a872393dcecae62db</guid>
    <pubDate>Sun, 01 Jul 2012 18:42:00 +0200</pubDate>
    <dc:creator>Cyril Lavier</dc:creator>
        <category>Informatique et nouvelles technologies</category>
        <category>Debian</category><category>Freeze</category><category>FRsAG</category><category>Planet-Libre</category><category>Wheezy</category>    
    <description>    &lt;p&gt;Bonjour.&lt;/p&gt;


&lt;p&gt;Hier soir, les migrations automatiques de paquets depuis Unstable vers Testing ont été arrêtées. Seul les paquets qui étaient en attente de cette migration ont reçu des autorisations.&lt;/p&gt;


&lt;p&gt;Cela fait 8 ans que j'utilise Debian et je suis habitué aux processes de release. Mais je n'y ai jamais réellement porté attention jusqu'a ce que je contribue à Debian en 2011.&lt;/p&gt;


&lt;p&gt;Cette freeze est importante pour moi car c'est la première fois que j'en vie une de l'autre côté, vu que j'aide à la maintenance des paquets Nginx (et audacious, mais j'ai été inactif ces derniers temps pour me concentrer pleinement sur Nginx jusqu'a ce que je retrouve une meilleure forme).&lt;/p&gt;


&lt;p&gt;Le 27 Mai 2011, J'ai envoyé un &lt;a href=&quot;http://lists.debian.org/debian-backports/2011/05/msg00061.html&quot; hreflang=&quot;en&quot;&gt;mail à la mailing list debian-backports&lt;/a&gt; disant que j'ai réalisé un backport de Nginx 1.0.1 vers Squeeze et que j'espérait que quelqu'un l'uploaderait.&lt;/p&gt;


&lt;p&gt;La première réponse provenait de Kartik Mistry, un des mainteneurs des paquets nginx (devenu le mainteneur principal depuis). Il a vérifié mon paquet et m'a proposé de l'aider dans la maintenance des paquets.&lt;/p&gt;


&lt;p&gt;Ce fut le début d'un fabuleux périple au travers du projet Debian.&lt;/p&gt;


&lt;p&gt;Au début, on a travaillés à synchroniser notre travail sur le packaging et le backporting, ensuite j'ai commencé à aider sur certains bugs. Mais j'ai surtout commencé à comprendre le processus de packaging.&lt;/p&gt;


&lt;p&gt;Sur la dernière année, le plus gros travail sur le packaging Nginx n'a pas été technique, mais humain. Nous travaillons en équipe, dans laquelle chaque membre connait son rôle.&lt;/p&gt;


&lt;p&gt;Je voudrai remercier quelques personnes&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kartik Mistry et toute l'équipe de maintenance des paquets Nginx (Michael Lustfield, Jose Parrella, Fabio Tranchitella, Dmitry Oboukhov)&lt;/li&gt;
&lt;li&gt;Sven Hoexter, qui sponsorise les backports nginx.&lt;/li&gt;
&lt;li&gt;Benjamin Drung, qui m'a beaucoup aidé quand j'ai commencé à travailler sur les paquets audacious.&lt;/li&gt;
&lt;li&gt;Et biensûr, tous les gens avec lesquels j'ai discuté sur les canaux IRC et les mailing lists.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Maintenant, quelques chiffres sur le packaging Nginx depuis la Squeeze freeze&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;68 commits sur le dépôt GIT&lt;/li&gt;
&lt;li&gt;262 commits sur le dépôt SVN&lt;/li&gt;
&lt;li&gt;78 bugs fermés grâce à un upload&lt;/li&gt;
&lt;li&gt;18 nouvelles versions de Nginx envoyées vers les dépôts debian.&lt;/li&gt;
&lt;li&gt;28 uploads
&lt;ul&gt;
&lt;li&gt;19 par Kartik Mistry&lt;/li&gt;
&lt;li&gt;4 par Michael Lustfield&lt;/li&gt;
&lt;li&gt;4 par Moi&lt;/li&gt;
&lt;li&gt;1 par Dmitry Oboukhov&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si vous voulez discuter ou nous aider, vous pouvez venir sur le canal IRC #debian-nginx sur le réseau OFTC.&lt;/p&gt;


&lt;p&gt;++&lt;/p&gt;</description>
    
    
    
          <comments>http://www.davromaniak.eu/index.php?post/2012/07/01/Debian-Wheezy-a-ete-freeze#comment-form</comments>
      <wfw:comment>http://www.davromaniak.eu/index.php?post/2012/07/01/Debian-Wheezy-a-ete-freeze#comment-form</wfw:comment>
      <wfw:commentRss>http://www.davromaniak.eu/index.php?feed/atom/comments/221</wfw:commentRss>
      </item>
    
  <item>
    <title>Arrêt du support des lenny-backports sur le DDB</title>
    <link>http://www.davromaniak.eu/index.php?post/2012/04/02/Arret-du-support-des-lenny-backports-sur-le-DDB</link>
    <guid isPermaLink="false">urn:md5:fb061f2c626cdaaf003a462a1ec5e6b1</guid>
    <pubDate>Mon, 02 Apr 2012 08:52:00 +0200</pubDate>
    <dc:creator>Cyril Lavier</dc:creator>
        <category>Informatique et nouvelles technologies</category>
        <category>FRsAG</category><category>Planet-Libre</category>    
    <description>    &lt;p&gt;Bonjour à tous et à toutes.&lt;/p&gt;


&lt;p&gt;Debian arrêtant la maintenance pour la version 5.0 du système, j'ai décidé de faire de même sur le &lt;a href=&quot;http://ddb.davromaniak.eu&quot; hreflang=&quot;en&quot; title=&quot;DDB&quot;&gt;DDB&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Je continue toujours de maintenir les squeeze-backports et je déplacerai les backports lenny vers un autre dépôt, qui sera accessible depuis &lt;a href=&quot;http://archives.ddb.davromaniak.eu&quot; hreflang=&quot;en&quot; title=&quot;http://archives.ddb.davromaniak.eu&quot;&gt;http://archives.ddb.davromaniak.eu&lt;/a&gt; dans les prochaines heures/jours.&lt;/p&gt;


&lt;p&gt;Merci.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.davromaniak.eu/index.php?post/2012/04/02/Arret-du-support-des-lenny-backports-sur-le-DDB#comment-form</comments>
      <wfw:comment>http://www.davromaniak.eu/index.php?post/2012/04/02/Arret-du-support-des-lenny-backports-sur-le-DDB#comment-form</wfw:comment>
      <wfw:commentRss>http://www.davromaniak.eu/index.php?feed/atom/comments/218</wfw:commentRss>
      </item>
    
  <item>
    <title>Mon pbuilderrc utilisant qemu-debootstrap</title>
    <link>http://www.davromaniak.eu/index.php?post/2012/02/24/Mon-pbuilderrc</link>
    <guid isPermaLink="false">urn:md5:28aff79ce2476618cb6f9d88e4dddc46</guid>
    <pubDate>Fri, 24 Feb 2012 16:27:00 +0100</pubDate>
    <dc:creator>Cyril Lavier</dc:creator>
        <category>Informatique et nouvelles technologies</category>
        <category>FRsAG</category><category>Planet-Libre</category><category>PUF</category>    
    <description>    &lt;p&gt;Bonjour à tous.&lt;/p&gt;


&lt;p&gt;Comme vous le savez déjà, je passe beaucoup de temps sur tout ce qui est packaging Debian, tant sur le côté pratique que théorique de la chose.&lt;/p&gt;


&lt;p&gt;Récemment, je suis devenu mainteneur Debian des paquets audacious et audacious-plugins. Et d'ici quelques semaines, je deviendrai co-mainteneur du paquet nginx sous debian.&lt;/p&gt;


&lt;p&gt;En dehors de ça, j'essaye d'améliorer le travail en équipe au niveau du packaging nginx en fixant des objectifs à atteindre pour la prochaine freeze, et en essayant d'impliquer tous les co-mainteneurs dès qu'une décision importante doit être prise (upload d'une nouvelle version, ajout/suppression d'un module, etc...). Ce qui porte pas mal ses fruits, et on commence à bien travailler en équipe.&lt;/p&gt;


&lt;p&gt;Mais sans environnement de compilation, le packaging Debian serait similaire au fait de jouer à la roulette russe avec une Gatling.&lt;/p&gt;


&lt;p&gt;Pourquoi ?.&lt;/p&gt;


&lt;p&gt;La raison est simple.&lt;/p&gt;


&lt;p&gt;Avant d'uploader un paquet source dans Debian, il vaut mieux tester sa compilation dans un environnement le plus vierge possible, afin d'être certain des dépendances de compilation (les fameuses build-dep) et des dépendances binaires. Compiler un paquet en local ne garantit aucunement la bonne compilation d'un paquet, car comme tout utilisateur, on a déjà des paquets installés sur la machine, dont certains sont des dépendances de compilation, ce qui peut fausser l'appréciation de la justesse du paquet.&lt;/p&gt;


&lt;p&gt;Pour avoir un environnement vierge, il existe plusieurs méthodes, dont voici une liste&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Des machines virtuelles qu'on réinstalle à chaque compile (méthode pour les gens patients et qui ont surtout beaucoup de temps libre).&lt;/li&gt;
&lt;li&gt;La même chose, avec des machines physiques (fonctionnement sponsorisé par EDF, vu la conso électrique que ça doit engendrer, et pratique en hiver, ça permet de couper le chauffage).&lt;/li&gt;
&lt;li&gt;Trouver un stagiaire, qui s'occupera des réinstall pendant que vous bossez sur les paquets sources (relativement cher, et peut engendrer une consommation excessive d'anti dépresseurs en tout genre de la part du stagiaire).&lt;/li&gt;
&lt;li&gt;Faire des chroots à la main, à coup de debootstrap (on s'approche d'une solution pérènne, mais on doit recréer les chroots à chaque compile, pas pratique).&lt;/li&gt;
&lt;li&gt;Utiliser des outils fournis par Debian, qui créent des chroots vierges (compressés dans des TGZ) et les décompressent afin de les utilisent pour lancer les compilation (ce que fait parfaitement pbuilder avec son pote debootstrap).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Comme vous avez dû le deviner, je vais parler de l'outil pbuilder.&lt;/p&gt;


&lt;p&gt;Pbuilder peut se configurer à l'aide d'un fichier nommé pbuilderrc, souvent placé dans $HOME/.pbuilderrc, qui est un script bash, que pbuilder lit et exécute avant de commencer à travailler selon les actions qu'on lui ordonne.&lt;/p&gt;


&lt;p&gt;Comme déjà expliqué dans les billets &lt;a href=&quot;http://www.davromaniak.eu/index.php?post/2011/03/03/La-machine-ultime-pour-compiler-ses-paquets-debian&quot;&gt;La machine ultime pour compiler ses paquets debian&lt;/a&gt; et &lt;a href=&quot;http://www.davromaniak.eu/index.php?post/2011/07/12/Pbuilder-et-tmpfs-peuvent-%C3%AAtre-bons-amis&quot;&gt;Pbuilder et tmpfs peuvent être bons amis&lt;/a&gt;, le fichier .pbuilderrc permet de configurer tous les aspects de la création et de l'utilisation de ces chroots.&lt;/p&gt;


&lt;p&gt;À force de travailler pour personaliser ma configuration, j'en suis arrivé à écrire un pbuilderrc assez complet, qui peut gérer plusieurs aspects de l'utilisation des pbuilders, y compris l'utilisation de qemu-debootstrap, qui est un debootstrap plus évolué, qui peut utiliser qemu afin de virtualiser l'architecture matérielle du chroot. On peut donc compiler du arm sur une machine i386 ou amd64 sans avoir besoin de passer par la création d'un environnement de cross-compilation.&lt;/p&gt;


&lt;p&gt;Avant d'utiliser ce pbuilderrc, il faut donc posséder qemu-debootstrap, compris dans le paquet &quot;qemu-user-static&quot;. Ce paquet est dispo dans le dépôt squeeze-backports, wheezy et sid pour debian et à partir de Natty pour Ubuntu.&lt;/p&gt;


&lt;p&gt;Il est aussi fortement recommandé d'avoir lu le billet &lt;a href=&quot;http://www.davromaniak.eu/index.php?post/2011/03/03/La-machine-ultime-pour-compiler-ses-paquets-debian&quot;&gt;La machine ultime pour compiler ses paquets debian&lt;/a&gt; avant de l'utiliser, afin d'avoir toutes les dépendances nécessaires pour utiliser pbuilder avec une telle configuration.&lt;/p&gt;


&lt;p&gt;Le pbuilderrc est disponible sur mon dépôt GIT &quot;scriptomaniak&quot;, disponible sur &lt;a href=&quot;https://github.com/davromaniak/scriptomaniak&quot; hreflang=&quot;en&quot; title=&quot;github&quot;&gt;github&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Il est à placer dans le dossier /root/, sous le nom .pbuilderrc&lt;/p&gt;


&lt;p&gt;N'hésitez pas à faire des remarques et à me proposer des patchs/pull requests si vous voulez l'améliorer.&lt;/p&gt;


&lt;p&gt;Bonne lecture et merci :).&lt;/p&gt;</description>
    
    
    
          <comments>http://www.davromaniak.eu/index.php?post/2012/02/24/Mon-pbuilderrc#comment-form</comments>
      <wfw:comment>http://www.davromaniak.eu/index.php?post/2012/02/24/Mon-pbuilderrc#comment-form</wfw:comment>
      <wfw:commentRss>http://www.davromaniak.eu/index.php?feed/atom/comments/215</wfw:commentRss>
      </item>
    
  <item>
    <title>Thruk + NGINX + authentification</title>
    <link>http://www.davromaniak.eu/index.php?post/2011/12/30/Thruk-NGINX-authentification</link>
    <guid isPermaLink="false">urn:md5:29b6a7d01be4d58dc42406df1597ea1d</guid>
    <pubDate>Fri, 30 Dec 2011 10:25:00 +0100</pubDate>
    <dc:creator>Cyril Lavier</dc:creator>
        <category>Informatique et nouvelles technologies</category>
        <category>FRsAG</category><category>Planet-Libre</category>    
    <description>&lt;p&gt;Quand une seule ligne vous manque, tout est dépeuplé.&lt;/p&gt;    &lt;p&gt;Bonjour.&lt;/p&gt;


&lt;p&gt;Comme vous le savez, j'utilise NGINX sur mes machines. Et hier soir, j'ai voulu passer la dernière machine en NGINX, sauf qu'elle héberge notament un Shinken + Thruk.&lt;/p&gt;


&lt;p&gt;Bon, le problème arrive avec Thruk.&lt;/p&gt;


&lt;p&gt;Il utilise son propre serveur CGI, la conf avec Apache est assez triviale et tellement documentée, que j'me suis jamais posé la question sur cette partie de la conf.&lt;/p&gt;


&lt;p&gt;Mais avec NGINX, c'est une autre paire de manches.&lt;/p&gt;


&lt;p&gt;Mon thruk est installé dans /opt/thruk.&lt;/p&gt;


&lt;p&gt;Voici le morceau de configuration NGINX que j'utilise, et qui fonctionne correctement&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
location /thruk {
	auth_basic            &amp;quot;Monitoring Access&amp;quot;;
	auth_basic_user_file  /opt/thruk/htpasswd.users;	
	fastcgi_index index.cgi;
	fastcgi_param REMOTE_USER $remote_user;
	fastcgi_pass	unix:/tmp/thruk_fastcgi.socket;
	include fastcgi_params;
}
&lt;/pre&gt;


&lt;p&gt;Surtout NE PAS OUBLIER la ligne &quot;fastcgi_param REMOTE_USER $remote_user;&quot;, qui envoie l'utilisateur logué à Thruk, qui donc le reconnait et vous autorise à accéder à l'interface.&lt;/p&gt;


&lt;p&gt;Grand merci à ScriptFanix du canal IRC #shinken sur Freenode de m'avoir proposé cette solution, qui fonctionne :).&lt;/p&gt;


&lt;p&gt;Merci.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.davromaniak.eu/index.php?post/2011/12/30/Thruk-NGINX-authentification#comment-form</comments>
      <wfw:comment>http://www.davromaniak.eu/index.php?post/2011/12/30/Thruk-NGINX-authentification#comment-form</wfw:comment>
      <wfw:commentRss>http://www.davromaniak.eu/index.php?feed/atom/comments/213</wfw:commentRss>
      </item>
    
  <item>
    <title>Machines virtuelles de compilation de paquets Debian/Ubuntu</title>
    <link>http://www.davromaniak.eu/index.php?post/2011/11/29/Machines-virtuelles-de-compilation-de-paquets-Debian/Ubuntu</link>
    <guid isPermaLink="false">urn:md5:2a998972763bd3e1ad3e84b37b77e9a4</guid>
    <pubDate>Tue, 29 Nov 2011 12:05:00 +0100</pubDate>
    <dc:creator>Cyril Lavier</dc:creator>
        <category>Informatique et nouvelles technologies</category>
        <category>FRsAG</category><category>Planet-Libre</category>    
    <description>    &lt;p&gt;Bonjour à tous.&lt;/p&gt;


&lt;p&gt;Après quelques mois sans grande activité, le blog se réveille.&lt;/p&gt;


&lt;p&gt;Comme vous le savez, je travaille souvent sur la compilation de paquets Debian.&lt;/p&gt;


&lt;p&gt;Depuis quelques temps, je compile les paquets du DDB pour d'autres architectures (powerpc et mips).&lt;/p&gt;


&lt;p&gt;Pour les autres architectures, j'ai ce qu'il faut en machines physiques, mais pour ces deux architectures, j'utilise des machines virtuelles qemu.&lt;/p&gt;


&lt;p&gt;À force des les utiliser, je me suis décidé à vous les proposer, afin que vous puissiez compiler facilement des paquets Debian/Ubuntu.&lt;/p&gt;


&lt;p&gt;Chaque machine est fournie pré-configurée en accord avec &lt;a href=&quot;http://www.davromaniak.eu/index.php?post/2011/03/03/La-machine-ultime-pour-compiler-ses-paquets-debian&quot;&gt;le billet posté en mars dernier&lt;/a&gt; et les pbuilder pour Debian Lenny, Squeeze, Wheezy et Sid et Ubuntu Hardy, Karmic, Lucid, Maverick, Natty, Oneiric et Precise. De plus, un fichier README contenant toutes les informations utiles pour le lancement des machines.&lt;/p&gt;


&lt;p&gt;Donc les voici&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AMD64 (environ 6Go)&amp;nbsp;: &lt;a href=&quot;http://www.davromaniak.eu/qemu/build_machine_amd64.tar&quot;&gt;http://www.davromaniak.eu/qemu/build_machine_amd64.tar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;I386 (environ 4Go)&amp;nbsp;: &lt;a href=&quot;http://www.davromaniak.eu/qemu/build_machine_i386.tar&quot;&gt;http://www.davromaniak.eu/qemu/build_machine_i386.tar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MIPS (environ 2Go)&amp;nbsp;: &lt;a href=&quot;http://www.davromaniak.eu/qemu/build_machine_mips.tar&quot;&gt;http://www.davromaniak.eu/qemu/build_machine_mips.tar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MIPSEL (environ 2Go)&amp;nbsp;: &lt;a href=&quot;http://www.davromaniak.eu/qemu/build_machine_mipsel.tar&quot;&gt;http://www.davromaniak.eu/qemu/build_machine_mipsel.tar&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;POWERPC (environ 3Go)&amp;nbsp;: &lt;a href=&quot;http://www.davromaniak.eu/qemu/build_machine_powerpc.tar&quot;&gt;http://www.davromaniak.eu/qemu/build_machine_powerpc.tar&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Voici les sommes MD5, afin de pouvoir vérifier si le téléchargement s'est bien passé&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AMD64&amp;nbsp;: 3e55dd81c20c2a6f67a43a97d7eab986&lt;/li&gt;
&lt;li&gt;I386&amp;nbsp;: 75c10975e65b1f816bc0a0711e9d12f3&lt;/li&gt;
&lt;li&gt;MIPS&amp;nbsp;: 9192d16ec83d31b3de0b381179e6eeef&lt;/li&gt;
&lt;li&gt;MIPSEL&amp;nbsp;: e01b1b1cdae64786d56b278c97e90c65&lt;/li&gt;
&lt;li&gt;POWERPC&amp;nbsp;: 63d0d2ceac849de0b0c1ad51eea4ee44&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour finir, je tiens à remercier Aurélien Jarno (aurel32), car il fournit des machines virtuelles qemu pour différentes architectures, qui ont servi de base à ces machines de compilation.&lt;/p&gt;


&lt;p&gt;Merci.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.davromaniak.eu/index.php?post/2011/11/29/Machines-virtuelles-de-compilation-de-paquets-Debian/Ubuntu#comment-form</comments>
      <wfw:comment>http://www.davromaniak.eu/index.php?post/2011/11/29/Machines-virtuelles-de-compilation-de-paquets-Debian/Ubuntu#comment-form</wfw:comment>
      <wfw:commentRss>http://www.davromaniak.eu/index.php?feed/atom/comments/210</wfw:commentRss>
      </item>
    
  <item>
    <title>Moments de joie et backports</title>
    <link>http://www.davromaniak.eu/index.php?post/2011/08/06/Moments-de-joie%2C-et-backports</link>
    <guid isPermaLink="false">urn:md5:0d53adf7815dcc9784e4406ddfe8930a</guid>
    <pubDate>Sat, 06 Aug 2011 21:41:00 +0200</pubDate>
    <dc:creator>Cyril Lavier</dc:creator>
        <category>Informatique et nouvelles technologies</category>
        <category>FRsAG</category><category>Planet-Libre</category>    
    <description>    &lt;p&gt;Bonjour à tous.&lt;/p&gt;
&lt;p&gt;Un mois est passé depuis la proposition (sur mentors) du backport de audacious 2.4.4 vers Debian Squeeze. Alors que je me faisais à l'idée que ces paquets n'allaient pas finir dans les backports, j'ai reçu 3 mails de Kilian Krause, qui accepte de sponsoriser les paquets (audacious, audacious-plugins et libmowgli)&lt;/p&gt;
&lt;p&gt;J'étais très surpris et heureux, car ce backport est très différent de celui de nginx.&lt;/p&gt;
&lt;p&gt;Comme certains le savent, j'utilise nginx régulièrement. Le site utilise nginx, je travaille dessus dans le cadre de mon travail, donc contribuer à nginx et réaliser le backport était naturel pour moi.&lt;/p&gt;
&lt;p&gt;Mais pour audacious, c'est différent. Vers la mi-Juin, rent0n envoie une demande de backport d'audacious sur la mailing list backports. Je lui ai répondu, en ajoutant les mainteneurs en CC, et en disant qu'il serait plus judicieux d'attendre que la version 2.5.1 arrive dans unstable. Mais quelques jours après, aucune réponse des mainteneurs, alors je me suis demandé si ce backport est possible. Je l'ai fais, et ça fonctionnait, sauf que j'ai dû recompiler 10-15 paquets (pour un premier test, je n'ai pas voulu changer la version des dépendances, afin juste de voir si le reste du système était bon pour la compilation). 2 jours, j'ai nettoyé le paquet, testé chaque dépendance de compilation, and il s'est avéré que je n'avais besoin de backporter que la libmowgli. Donc j'ai proposé à rent0n de tester le paquet, il était content, donc pour moi, c'était bon, j'ai juste demandé si quelqu'un voulait valider et uploader le paquet. Mais je ne l'ai pas envoyé sur mentors.debian.net, car je ne pensais pas à une inclusion dans le dépôt officiel, pensant que les mainteneurs le feront mieux que moi. Après, je suis parti en vacances, donc j'ai un peu décroché de tout ça, mais pas rent0n, qui m'a proposé de l'envoyer vers mentors. Son enthousiame était tel qu'il était communicatif, donc j'ai envoyé le paquet sur mentors.&lt;/p&gt;
&lt;p&gt;1 mois après, le paquet a été sponsorisé, et est maintenant en attente des dernières étapes de validation.&lt;/p&gt;
&lt;p&gt;Donc voila, c'est la seconde fois qu'un de mes backports est sponsorisé et inclus. Bizarrement, ça me fait le même effet que si c'était la première fois. Un peu d'excitation, d'impatience par rapport aux prochaines étapes. Ensuite, j'irai voir son status sur le buildd presque une fois par jour, et ensuite, je vais être tiraillé entre 2 sentiments. Le premier, le soulagement, le travail est fait, tous ces moments passés à travailler sur le paquet sont maintenant des souvenirs. Le second, c'est la joie, car des personnes ont estimés que mon travail est d'assez bonne qualité pour mériter une inclusion officielle.&lt;/p&gt;
&lt;p&gt;De plus, pour chaque paquet que je backport, je m'inscrit à page QA, pour être courant des bugs, mises à jour, et des infos du paquet.&lt;/p&gt;
&lt;p&gt;Maintenant, parlons de &lt;a href=&quot;http://ddb.davromaniak.eu&quot; title=&quot;DDB&quot;&gt;DDB&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;J'ai décidé de supprimer toute référence au backport de chromium, car je ne suis pas capable de le maintenir à jour, et que le paquet est si peu propre, que j'ai préféré le supprimer. Cependant, je pense créer une section &quot;dev&quot; pour le DDB, mais pas dans l'immédiat.&lt;/p&gt;
&lt;p&gt;D'ailleurs, j'ai mis à jour le backport de nginx en version 1.1.0. Je l'ai envoyé sur mentors, mais devra attendre au moins une semaine avant un upload.&lt;/p&gt;
&lt;p&gt;Voila, c'est tout :).&lt;/p&gt;</description>
    
    
    
          <comments>http://www.davromaniak.eu/index.php?post/2011/08/06/Moments-de-joie%2C-et-backports#comment-form</comments>
      <wfw:comment>http://www.davromaniak.eu/index.php?post/2011/08/06/Moments-de-joie%2C-et-backports#comment-form</wfw:comment>
      <wfw:commentRss>http://www.davromaniak.eu/index.php?feed/atom/comments/209</wfw:commentRss>
      </item>
    
  <item>
    <title>Pbuilder et tmpfs peuvent être bons amis</title>
    <link>http://www.davromaniak.eu/index.php?post/2011/07/12/Pbuilder-et-tmpfs-peuvent-%C3%AAtre-bons-amis</link>
    <guid isPermaLink="false">urn:md5:67609d0d1e1589c40069650fa6e88c64</guid>
    <pubDate>Tue, 12 Jul 2011 17:31:00 +0200</pubDate>
    <dc:creator>Cyril Lavier</dc:creator>
        <category>Informatique et nouvelles technologies</category>
        <category>FRsAG</category><category>Planet-Libre</category>    
    <description>&lt;p&gt;Ou comment accélérer de façon non négligeable les compiles de paquets sous Debian/Ubuntu.&lt;/p&gt;    &lt;p&gt;Salut à tous.&lt;/p&gt;


&lt;p&gt;Suite au dernier billet sur la &lt;a href=&quot;http://www.davromaniak.eu/index.php?post/2011/03/03/La-machine-ultime-pour-compiler-ses-paquets-debian&quot;&gt;mise en place d'une machine de compilation de paquets Debian&lt;/a&gt;, j'ai continué mes bidouilles et mes recherches sur ce système de compilation.&lt;/p&gt;


&lt;p&gt;Et il m'est pris l'idée d'utiliser un tmpfs (stocké en ram) pour accélérer mes compilations.&lt;/p&gt;


&lt;p&gt;Alors déjà, il faut une grosse quantité de mémoire vive, à savoir 4Go minimum, car il faut pouvoir y stocker les données temporaire de compilation, et laisser assez de mémoire vive pour le système.&lt;/p&gt;


&lt;p&gt;Dans mon, cas ayant 16Go de mémoire vive, aucun problème :).&lt;/p&gt;


&lt;p&gt;Pour mettre ça en place, c'est plutôt simple (toutes les actions sont à effectuer en root, donc sous Ubuntu, préfixez les commandes par &lt;em&gt;sudo&lt;/em&gt;).&lt;/p&gt;


&lt;p&gt;Déjà, créez le dossier &lt;em&gt;/var/cache/pbuilder/build&lt;/em&gt; s'il n'est pas créé&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
mkdir /var/cache/pbuilder/build
&lt;/pre&gt;


&lt;p&gt;Ensuite, armez vous de votre éditeur texte préféré, et ajoutez la ligne suivante au fichier &lt;em&gt;/etc/fstab&lt;/em&gt;&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
tmpfs 			/var/cache/pbuilder/build	tmpfs	defaults,auto			0	0
&lt;/pre&gt;


&lt;p&gt;Montez la partition&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
mount /var/cache/pbuilder/build
&lt;/pre&gt;


&lt;p&gt;Ensuite, dans votre fichier /root/.pbuilderrc, ajoutez la ligne suivante&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
APTCACHEHARDLINK=no
&lt;/pre&gt;


&lt;p&gt;Cette ligne évitera que des hardlinks soient créés entre le cache et l'environnement de compilation, au profit de liens symboliques, vu que les 2 dossiers sont maintenant sur des partitions différentes.&lt;/p&gt;


&lt;p&gt;J'ai effectué un test de performance avec une compile complète OWFS amd64 et i386 (11 systèmes supportés, donc 22 compilations), et voici donc les résultats&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Avec tmpfs&amp;nbsp;: 53 minutes et 52 secondes&lt;/li&gt;
&lt;li&gt;Sans tmpfs&amp;nbsp;: 67 minutes et 18 secondes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Comme vous pouvez le voir, les perfomances sont au rendez vous.&lt;/p&gt;


&lt;p&gt;Bon bidouillage :).&lt;/p&gt;</description>
    
    
    
          <comments>http://www.davromaniak.eu/index.php?post/2011/07/12/Pbuilder-et-tmpfs-peuvent-%C3%AAtre-bons-amis#comment-form</comments>
      <wfw:comment>http://www.davromaniak.eu/index.php?post/2011/07/12/Pbuilder-et-tmpfs-peuvent-%C3%AAtre-bons-amis#comment-form</wfw:comment>
      <wfw:commentRss>http://www.davromaniak.eu/index.php?feed/atom/comments/206</wfw:commentRss>
      </item>
    
  <item>
    <title>Quelques news</title>
    <link>http://www.davromaniak.eu/index.php?post/2011/06/21/Quelques-news</link>
    <guid isPermaLink="false">urn:md5:76f11fbae4e29304f537bcae4c911fb0</guid>
    <pubDate>Tue, 21 Jun 2011 11:11:00 +0200</pubDate>
    <dc:creator>Cyril Lavier</dc:creator>
        <category>Informatique et nouvelles technologies</category>
        <category>FRsAG</category><category>Planet-Libre</category>    
    <description>    &lt;p&gt;Bonjour.&lt;/p&gt;


&lt;p&gt;Après quelques mois d'inactivité, voici les dernières nouvelles.&lt;/p&gt;


&lt;p&gt;Déjà, comme vous pouvez le voir, la nouvelle apparence du blog, plus sobre, et plus lisible.&lt;/p&gt;


&lt;p&gt;Ensuite, les deux dépôts Debian que je maintiens (qui sont maintenant dans le menu principal).&lt;/p&gt;


&lt;p&gt;Le dépôt &lt;a href=&quot;http://owfs.davromaniak.eu&quot; title=&quot;OWFS&quot;&gt;OWFS&lt;/a&gt; est toujours là, et mis à jour régulièrement, avec la dernière version (2.8p9 sortie fin Mai), je prépare doucement le passage à Ubuntu Oneiric, ça devrait arriver dans les prochaines semaines.&lt;/p&gt;


&lt;p&gt;Le nouvel arrivant, &lt;a href=&quot;http://ddb.davromaniak.eu&quot; title=&quot;DDB (pour Davromaniak&amp;#039;s Debian Backports)&quot;&gt;DDB (pour Davromaniak's Debian Backports)&lt;/a&gt;, qui est un dépôt contenant les backports de paquets Debian que je réalise. Sachant qu'ils ont tous vocation à être proposés pour une inclusion dans les backports debian officiels. C'est un dépôt relativement stable, mais comme tout backports, il peut y avoir des risques.&lt;/p&gt;


&lt;p&gt;Pour l'instant, j'ai mis à dispo les backports de nginx 1.0.4, chromium 11.0.696.71 et audacious 2.4.4. Le tout accompagnées de leurs dépendances de fonctionnement et de compilation.&lt;/p&gt;


&lt;p&gt;D'ailleurs, concernant nginx 1.0.4, il a été récemment accepté dans les &lt;a href=&quot;http://backports.debian.org&quot; title=&quot;backports officiels&quot;&gt;backports officiels&lt;/a&gt;, son inclusion est en cours là. Le paquet disponible (pour la version 1.0.4) sur DDB est donc le même que celui qui arrive sur les dépôts officiels, seul la version change (j'utilise &quot;davrobpo60+1&quot; au lieu de &quot;bpo60+1&quot; pour différencier mes paquets des paquets officiels).&lt;/p&gt;


&lt;p&gt;Pour chromium, c'est un backport assez complexe (entre 20 et 30h de travail pour arriver à un fonctionnement correct), cependant, il n'est pas très propre, car j'ai préféré backporter les binutils, afin de ne pas trop altérer le paquet officiel.&lt;/p&gt;


&lt;p&gt;Concernant audacious, il fonctionne, mais le travail est toujours en cours, surtout au niveau de la quantité de dépendances à backporter.&lt;/p&gt;


&lt;p&gt;J'essaie de proposer les paquets dans le plus grand nombre d'architectures matérielles, et cela dépend de la taille des paquets. Pour l'instant, seulement OWFS et nginx sont proposés en 5 architectures différentes (amd64, armel, i386, mips et powerpc), car leur compilation n'est pas très longue. Concernant audacious, le nombre de dépendances le rendent pas facile à compiler sous autre architecture que amd64 et i386. Pour chromium, il n'est compatible que amd64, i386 et armel, cependant, sa compilation seule dure environ 25 minutes sur ma machine de compilation (8 cœurs, 16Go de ram), ma machine armel étant totalement l'inverse au niveau puissance, la compilation risque de durer des jours entiers.&lt;/p&gt;


&lt;p&gt;Voila, c'est tout.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.davromaniak.eu/index.php?post/2011/06/21/Quelques-news#comment-form</comments>
      <wfw:comment>http://www.davromaniak.eu/index.php?post/2011/06/21/Quelques-news#comment-form</wfw:comment>
      <wfw:commentRss>http://www.davromaniak.eu/index.php?feed/atom/comments/204</wfw:commentRss>
      </item>
    
  <item>
    <title>OWFS : Paquets Debian et Ubuntu</title>
    <link>http://www.davromaniak.eu/index.php?post/2011/03/07/OWFS-Paquets-Debian-et-Ubuntu</link>
    <guid isPermaLink="false">urn:md5:a79da963b760907f49bfeffafb143aac</guid>
    <pubDate>Mon, 07 Mar 2011 14:34:00 +0100</pubDate>
    <dc:creator>Cyril Lavier</dc:creator>
        <category>Informatique et nouvelles technologies</category>
        <category>FRsAG</category><category>Planet-Libre</category>    
    <description>    &lt;p&gt;Bonjour.&lt;/p&gt;


&lt;p&gt;OWFS est une suite logicielle libre (sous GPL) qui permet d'utiliser facilement le système 1-wire de maxim, permettant d'exploiter divers capteurs (température, humidité, luminosité, ouverture/fermeture de portes, etc...).&lt;/p&gt;


&lt;p&gt;Dans mon entreprise actuelle, ça fait environ 1 an et demi qu'on utilise le 1-wire, et à ce moment là, j'avais réalisé des paquets pour OWFS.&lt;/p&gt;


&lt;p&gt;Ces paquets étaient plutôt bruts et relativement peu en accord avec la Debian Policy, mais ils fonctionnaient, et ça suffisait pour le moment.&lt;/p&gt;


&lt;p&gt;Cependant, il y a quelques temps, il a été décider de publier ces paquets, afin d'aider la communauté qui existe autour d'OWFS, et plus généralement de la domotique.&lt;/p&gt;


&lt;p&gt;Pour cela, j'ai donc travailler à mettre à jour et à rendre les paquets plus propres, et donc publiables.&lt;/p&gt;


&lt;p&gt;Ce midi, par un mail (en anglais) sur la liste de diffusion, la diffusion des paquets pour OWFS a été officialisée et rendue publique.&lt;/p&gt;


&lt;p&gt;Le mail étant en anglais, je ne vais pas le traduire dans son intégralité, vu que l'introduction de ce billet reprend en partie l'introduction du mail, je vais plutôt transcrire la suite du mail.&lt;/p&gt;


&lt;p&gt;Les paquets sont disponibles pour les versions suivantes de Debian et Ubuntu&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debian 5.0 &quot;Lenny&quot; (oldstable)&lt;/li&gt;
&lt;li&gt;Debian 6.0 &quot;Squeeze&quot; (stable)&lt;/li&gt;
&lt;li&gt;Debian 7.0 &quot;Wheezy&quot; (testing)&lt;/li&gt;
&lt;li&gt;Debian Sid (unstable)&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Ubuntu 8.04 &quot;Hardy&quot; (LTS)&lt;/li&gt;
&lt;li&gt;Ubuntu 9.04 &quot;Jaunty&quot;&lt;/li&gt;
&lt;li&gt;Ubuntu 9.10 &quot;Karmic&quot;&lt;/li&gt;
&lt;li&gt;Ubuntu 10.04 &quot;Lucid&quot; (LTS)&lt;/li&gt;
&lt;li&gt;Ubuntu 10.10 &quot;Maverick&quot;&lt;/li&gt;
&lt;li&gt;Ubuntu 11.04 &quot;Natty&quot; (testing)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Maintenant, parlons des paquets.&lt;/p&gt;


&lt;p&gt;Pour l'instant, je n'ai pas créé de paquets pour owperl, owmon, owtap, owphp, owcapi, owpython, owtcl, owftpd et owhttpd&lt;/p&gt;


&lt;p&gt;Pour owftpd et owhttpd, je pense créer des paquets dans un futur pas trop lointain, sûrement pour une version 2.8p8 ou 2.8p9.&lt;/p&gt;


&lt;p&gt;Pour les autres paquets, je n'ai, à l'heure ou j'écris ces lignes, aucune idée de quand je le ferai, mais ce n'est pas un abandon, plus une volonté de réaliser des paquets propres et fiables pour les composants essentiels d'OWFS, pour ensuite m'atteler aux autres composants.&lt;/p&gt;


&lt;p&gt;Voici la liste des paquets (en versions 2.8p6 et 2.8p7, sauf indication)&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;owfs-common&amp;nbsp;: contient le fichier de configuration et la page de manuel.&lt;/li&gt;
&lt;li&gt;owfs-server&amp;nbsp;: contient le serveur owfs (/usr/sbin/owserver, il était placé dans /usr/bin, mais je l'ai déplacé dans /usr/sbin pour coller au mieux à la Debian Policy), sa page de manuel et son script de lancement.&lt;/li&gt;
&lt;li&gt;owfs (2.8p7 seulement)&amp;nbsp;: contient le serveur qui gère le système de fichiers 1-wire (/usr/sbin/owfs, il était placé dans /usr/bin, mais comme pour owserver, je l'ai déplacé dans /usr/sbin), sa page de manuel et son script de lancement.&lt;/li&gt;
&lt;li&gt;owfs-client&amp;nbsp;: contient les clients (owdir, owpresent, owread, owwrite and owread), et leurs pages de manuel.&lt;/li&gt;
&lt;li&gt;libow-2.8-7 (2.8p7 seulement)&amp;nbsp;: contient la libow en version 2.8p7&lt;/li&gt;
&lt;li&gt;libow-2.8-6 (2.8p6 seulement)&amp;nbsp;: contient la libow en version 2.8p6&lt;/li&gt;
&lt;li&gt;owfs-dev&amp;nbsp;: contient le fichier /usr/include/owfs_config.h&lt;/li&gt;
&lt;li&gt;owfs-doc&amp;nbsp;: contient toutes les pages de manuel restantes (notament celles sur les capteurs)&lt;/li&gt;
&lt;li&gt;owfs-dbg&amp;nbsp;: contient les symboles de débogage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour l'installer le serveur et les clients, installez les paquets owfs-server et owfs-client. Pour utiliser directement le système de fichiers 1-wire, installez le paquet owfs.&lt;/p&gt;


&lt;p&gt;Voici l'adresse du dépôt&amp;nbsp;: &lt;a href=&quot;http://owfs.davromaniak.eu&quot;&gt;http://owfs.davromaniak.eu&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Voila, vous avez toutes les informations.&lt;/p&gt;


&lt;p&gt;Je remercie Paul Alfille et les contributeurs du projet OWFS pour tout leur travail.&lt;/p&gt;


&lt;p&gt;Là, j'ai réalisé quelques patchs qui sont inclus dans les paquets, je vais m'occuper aussi de leur diffusion.&lt;/p&gt;


&lt;p&gt;De plus, il n'est pas impossible que je travaille à faire inclure ces paquets dans Debian (et aussi Ubuntu par la suite). Je vous tiendrai au courant pour tout ça.&lt;/p&gt;


&lt;p&gt;@+&lt;/p&gt;</description>
    
    
    
          <comments>http://www.davromaniak.eu/index.php?post/2011/03/07/OWFS-Paquets-Debian-et-Ubuntu#comment-form</comments>
      <wfw:comment>http://www.davromaniak.eu/index.php?post/2011/03/07/OWFS-Paquets-Debian-et-Ubuntu#comment-form</wfw:comment>
      <wfw:commentRss>http://www.davromaniak.eu/index.php?feed/atom/comments/202</wfw:commentRss>
      </item>
    
  <item>
    <title>La machine ultime pour compiler ses paquets debian.</title>
    <link>http://www.davromaniak.eu/index.php?post/2011/03/03/La-machine-ultime-pour-compiler-ses-paquets-debian</link>
    <guid isPermaLink="false">urn:md5:37eb114012d96fe08fc24b8441122c6e</guid>
    <pubDate>Thu, 03 Mar 2011 16:15:00 +0100</pubDate>
    <dc:creator>Cyril Lavier</dc:creator>
        <category>Informatique et nouvelles technologies</category>
        <category>FRsAG</category><category>Planet-Libre</category>    
    <description>    &lt;p&gt;Voici un &quot;petit&quot; billet qui est à la frontière entre le perso et le boulot, mais qui risque d'être utile pour beaucoup de gens.&lt;/p&gt;


&lt;p&gt;Dans le cadre de mon emploi actuel, je passe un certain temps à faire des paquets Debian, mais aussi Ubuntu.&lt;/p&gt;


&lt;p&gt;Au début, j'utilisais 2 machines virtuelles, avec un petit pbuilderrc, cependant, ayant eu l'opportunité d'utiliser une machine plus puissante (4 coeurs et 4Go de ram), je me suis dis qu'il serait plutôt pratique de fusionner les 2 machines, et d'avoir qu'une machine de build.&lt;/p&gt;


&lt;p&gt;Ma machine de build tourne sous Debian sid, même si j'ai longtemps été fidèle à Ubuntu, maintenant, je suis passé du coté de Debian (y compris pour mon poste de travail).&lt;/p&gt;


&lt;p&gt;Pourquoi Debian sid ?, juste pour avoir les dernières versions des outils de build, surtout pour debootstrap.&lt;/p&gt;


&lt;p&gt;Ça peut marcher aussi sous Debian stable, et même Ubuntu (mais quelques petites choses sont différentes).&lt;/p&gt;


&lt;p&gt;Bon, commençons.&lt;/p&gt;


&lt;p&gt;Les commandes précédées d'un &quot;#&quot; sont à exécuter en root, les commandes précédées d'un &quot;$&quot; sont à exécuter en utilisateur normal, non privilégié.&lt;/p&gt;


&lt;p&gt;Précision, ma machine étant en 64 bits, j'ai la possibilité de compiler des paquets 32 et 64 bits.&lt;/p&gt;


&lt;p&gt;En premier, il faut installer sudo, car avec le temps, j'ai appris (à mes dépends) qu'il ne faut jamais bidouiller ses paquets source en root, car ce n'est pas nécessaire, et que de plus, après quelques heures de tapotage de clavier, la fatigue faisant, on peut faire des actes regrétables et se transformer en &lt;em&gt;Rage Guy&lt;/em&gt; pendant 5 minutes.&lt;/p&gt;

&lt;pre&gt;
# aptitude install sudo
&lt;/pre&gt;


&lt;p&gt;Ensuite, il faut adapter la configuration de sudo à ce qu'on fera avec pbuilder.&lt;/p&gt;

&lt;pre&gt;
# visudo
&lt;/pre&gt;


&lt;p&gt;Voici mon fichier de configuration de sudo&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults	env_reset,env_keep=&amp;quot;DIST ARCH CONCURRENCY_LEVEL&amp;quot;

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo	ALL=(ALL:ALL) ALL

#includedir /etc/sudoers.d

# Members of the admin group may gain root privileges
%adm ALL=(ALL:ALL) ALL
&lt;/pre&gt;


&lt;p&gt;Remarquez surtout la ligne &lt;em&gt;Defaults&lt;/em&gt; qui contient les instructions pour garder le contenu des variables DIST, ARCH et CONCURRENCY_LEVEL. Gardez les noms de ces variables dans la tête, on les utilisera après.&lt;/p&gt;


&lt;p&gt;Après avoir installé sudo, on va s'occuper de la partie concrète de la compilation, avec l'installation des outils de compilation.&lt;/p&gt;

&lt;pre&gt;
# aptitude install debhelper build-essential dpkg-dev pbuilder devscripts debootstrap
&lt;/pre&gt;


&lt;p&gt;Parmis ces paquets, les plus remarquables sont &lt;em&gt;pbuilder&lt;/em&gt; et &lt;em&gt;debootstrap&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pbuilder permet de construire ses paquets dans un chroot de la distribution que l'on veut utiliser.&lt;/li&gt;
&lt;li&gt;debootstrap permet de créer ce chroot (il est appelé par pbuilder lors de la création d'un pbuilder)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le paquet Lintian est aussi utile, car il permet de tester la conformité des paquets avec la Debian Policy.&lt;/p&gt;


&lt;p&gt;Après avoir installé tout ça, il faut encore configurer le pbuilder, avec le fichier pbuilderrc. Vu que je n'aime pas trop aller modifier la configuration par défaut (placée dans /etc/pbuilderrc), je préfére créer le fichier /root/.pbuilderrc). Dont voici le mien.&lt;/p&gt;

&lt;pre&gt;
# Codenames for Debian suites according to their alias. Update these when
# needed.
UNSTABLE_CODENAME=&amp;quot;sid&amp;quot;
TESTING_CODENAME=&amp;quot;wheezy&amp;quot;
STABLE_CODENAME=&amp;quot;squeeze&amp;quot;
STABLE_BACKPORTS_SUITE=&amp;quot;$STABLE_CODENAME-backports&amp;quot;
OLD_STABLE_CODENAME=&amp;quot;lenny&amp;quot;
OLD_STABLE_BACKPORTS_SUITE=&amp;quot;$OLD_STABLE_CODENAME-backports&amp;quot;

# List of Debian suites.
DEBIAN_SUITES=($UNSTABLE_CODENAME $TESTING_CODENAME $STABLE_CODENAME $OLD_STABLE_CODENAME &amp;quot;unstable&amp;quot; &amp;quot;testing&amp;quot; &amp;quot;stable&amp;quot; &amp;quot;experimental&amp;quot;)

# List of Ubuntu suites. Update these when needed.
UBUNTU_SUITES=(&amp;quot;natty&amp;quot; &amp;quot;maverick&amp;quot; &amp;quot;lucid&amp;quot; &amp;quot;karmic&amp;quot; &amp;quot;jaunty&amp;quot; &amp;quot;intrepid&amp;quot; &amp;quot;hardy&amp;quot; &amp;quot;gutsy&amp;quot;)

# Mirrors to use. Update these to your preferred mirror.
DEBIAN_MIRROR=&amp;quot;ftp.fr.debian.org/&amp;quot;
UBUNTU_MIRROR=&amp;quot;fr.archive.ubuntu.com&amp;quot;

# Use old-releases mirrors for EOL versions
if [ &amp;quot;${DIST}&amp;quot; == &amp;quot;gutsy&amp;quot; ]; then
	UBUNTU_MIRROR=&amp;quot;old-releases.ubuntu.com&amp;quot;
fi
if [ &amp;quot;${DIST}&amp;quot; == &amp;quot;intrepid&amp;quot; ]; then
	UBUNTU_MIRROR=&amp;quot;old-releases.ubuntu.com&amp;quot;
fi
# Optionally use the changelog of a package to determine the suite to use if
# none set.
if [ -z &amp;quot;${DIST}&amp;quot; ] &amp;amp;&amp;amp; [ -r &amp;quot;debian/changelog&amp;quot; ]; then
    DIST=$(dpkg-parsechangelog | awk '/^Distribution: / {print $2}')
    # Use the unstable suite for Debian experimental packages.
    if [ &amp;quot;${DIST}&amp;quot; == &amp;quot;experimental&amp;quot; ]; then
        DIST=&amp;quot;unstable&amp;quot;
    fi
fi

# Optionally set a default distribution if none is used. Note that you can set
# your own default (i.e. ${DIST:=&amp;quot;unstable&amp;quot;}).
: ${DIST:=&amp;quot;$(lsb_release --short --codename)&amp;quot;}

# Optionally set the architecture to the host architecture if none set. Note
# that you can set your own default (i.e. ${ARCH:=&amp;quot;i386&amp;quot;}).
: ${ARCH:=&amp;quot;$(dpkg --print-architecture)&amp;quot;}

NAME=&amp;quot;$DIST&amp;quot;
if [ -n &amp;quot;${ARCH}&amp;quot; ]; then
    NAME=&amp;quot;$NAME-$ARCH&amp;quot;
    DEBOOTSTRAPOPTS=(&amp;quot;--arch&amp;quot; &amp;quot;$ARCH&amp;quot; &amp;quot;${DEBOOTSTRAPOPTS[@]}&amp;quot;)
fi
BASETGZ=&amp;quot;/var/cache/pbuilder/$NAME-base.tgz&amp;quot;
DISTRIBUTION=&amp;quot;$DIST&amp;quot;
BUILDRESULT=&amp;quot;/var/cache/pbuilder/$NAME/result/&amp;quot;
APTCACHE=&amp;quot;/var/cache/pbuilder/$NAME/aptcache/&amp;quot;
BUILDPLACE=&amp;quot;/var/cache/pbuilder/build/&amp;quot;

if $(echo ${DEBIAN_SUITES[@]} | grep -q $DIST); then
    # Debian configuration
    MIRRORSITE=&amp;quot;http://$DEBIAN_MIRROR/debian/&amp;quot;
    COMPONENTS=&amp;quot;main contrib non-free&amp;quot;
    if $(echo &amp;quot;$STABLE_CODENAME stable&amp;quot; | grep -q $DIST); then
        EXTRAPACKAGES=&amp;quot;$EXTRAPACKAGES debian-backports-keyring&amp;quot;
        OTHERMIRROR=&amp;quot;$OTHERMIRROR | deb http://backports.debian.org/debian-backports $STABLE_BACKPORTS_SUITE $COMPONENTS&amp;quot;
    elif $(echo &amp;quot;$OLD_STABLE_CODENAME stable&amp;quot; | grep -q $DIST); then
        EXTRAPACKAGES=&amp;quot;$EXTRAPACKAGES debian-backports-keyring&amp;quot;
        OTHERMIRROR=&amp;quot;$OTHERMIRROR | deb http://backports.debian.org/debian-backports $OLD_STABLE_BACKPORTS_SUITE $COMPONENTS&amp;quot;
    elif $(echo &amp;quot;unstable&amp;quot; | grep -q $DIST); then
	DIST=&amp;quot;$UNSTABLE_CODENAME&amp;quot;
	OTHERMIRROR=&amp;quot;$OTHERMIRROR | deb http://ftp.fr.debian.org/debian/ experimental main&amp;quot;
    fi
elif $(echo ${UBUNTU_SUITES[@]} | grep -q $DIST); then
    # Ubuntu configuration
    MIRRORSITE=&amp;quot;http://$UBUNTU_MIRROR/ubuntu/&amp;quot;
    COMPONENTS=&amp;quot;main restricted universe multiverse&amp;quot;
     v=0
     n=0
     for i in ${DEBOOTSTRAPOPTS[@]}; do
	if [ $v -ne 0 ]; then
		DEBOOTSTRAPOPTS[$n]=&amp;quot;/usr/share/keyrings/ubuntu-archive-keyring.gpg&amp;quot;
	fi
	if [ $i == &amp;quot;--keyring&amp;quot; ]; then
		v=1;
	fi
	n=$((n+1))
     done
else
    echo &amp;quot;Unknown distribution: $DIST&amp;quot;
    exit 1
fi
&lt;/pre&gt;


&lt;p&gt;Afin de faciliter son téléchargement, vous pouvez le télécharger &lt;a href=&quot;http://www.davromaniak.eu/pbuilderrc&quot;&gt;ici&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Cependant, avant de vous jeter à corps perdu à créer les pbuilder des différentes versions de Ubuntu, il y a un petit truc à faire si vous êtes sous debian.&lt;/p&gt;


&lt;p&gt;Dans les paquets debootstrap de Debian et Ubuntu, Il s'avère que les fichiers &lt;em&gt;/usr/share/debootstrap/scripts/gutsy&lt;/em&gt; sont légèrement différents (une ligne), mais ça suffit pour causer des soucis, surtout sous Ubuntu 11.04 &quot;Natty&quot;.&lt;/p&gt;


&lt;p&gt;Donc sous Debian, à la ligne 72 du fichier /usr/share/debootstrap/gutsy, ajoutez la ligne suivante&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
ln -nsf . &amp;quot;$TARGET/var/lib/dpkg/info/$ARCH&amp;quot;
&lt;/pre&gt;


&lt;p&gt;Là, nous sommes enfin prets.&lt;/p&gt;


&lt;p&gt;Avec ce beau .pbuilderrc, vous n'aurez qu'à taper la commande suivante pour créer un pbuilder Debian Squeeze en 64 bits&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
$ DIST=squeeze ARCH=amd64 sudo pbuilder create
&lt;/pre&gt;


&lt;p&gt;Ou un pbuilder Ubuntu Natty en 32 bits&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
$ DIST=natty ARCH=i386 sudo pbuilder create
&lt;/pre&gt;


&lt;p&gt;Mais là, vous vous demandez &quot;Pourquoi nous a-t-il parlés de la variable CONCURRENCY_LEVEL ?&quot;.&lt;/p&gt;


&lt;p&gt;Voici la réponse.&lt;/p&gt;


&lt;p&gt;La variable CONCURRENCY_LEVEL permet de lancer plusieurs processus pour une compilation, en d'autres termes, pour ceux qui connaissent make, ça correspond à l'option &quot;-j&quot;.&lt;/p&gt;


&lt;p&gt;Pour compiler un paquet source avec 4 processus sous Debian Squeeze 64 bits voici comment faire&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
$ CONCURRENCY_LEVEL=4 DIST=squeeze ARCH=amd64 sudo pbuilder build paquet.dsc
&lt;/pre&gt;


&lt;p&gt;Pour compiler un paquet source avec 2 processus sous Ubuntu Natty 32 bits voici comment faire&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
$ CONCURRENCY_LEVEL=2 DIST=natty ARCH=i386 sudo pbuilder build paquet.dsc
&lt;/pre&gt;


&lt;p&gt;Voila, la machine de build est prête et fonctionnelle.&lt;/p&gt;


&lt;p&gt;Mais sachant que j'aime bien avoir mes propres fonctions qui peuvent m'aider à automatiser certaines tâches, j'ai créé dans le dossier personnel de mon utilisateur non privilégié un dossier &lt;em&gt;.scripts&lt;/em&gt; avec un fichier nommé &lt;em&gt;pbuilder_utils&lt;/em&gt; dont voici le contenu&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
function update_pbuilder() {
	nprocs=$(grep -cE &amp;quot;^processor&amp;quot; /proc/cpuinfo)
	dists=$@
	for i in $dists; do
		CONCURRENCY_LEVEL=$nprocs DIST=$i ARCH=i386 sudo pbuilder update
		CONCURRENCY_LEVEL=$nprocs DIST=$i ARCH=amd64 sudo pbuilder update
	done
}
function create_pbuilder() {
	nprocs=$(grep -cE &amp;quot;^processor&amp;quot; /proc/cpuinfo)
	dists=$@
	for i in $dists; do
		CONCURRENCY_LEVEL=$nprocs DIST=$i ARCH=i386 sudo pbuilder create
		CONCURRENCY_LEVEL=$nprocs DIST=$i ARCH=amd64 sudo pbuilder create
	done
}
function clean_pbuilder() {
	nprocs=$(grep -cE &amp;quot;^processor&amp;quot; /proc/cpuinfo)
	dists=$@
	for i in $dists; do
		CONCURRENCY_LEVEL=$nprocs DIST=$i ARCH=i386 sudo pbuilder --clean
		CONCURRENCY_LEVEL=$nprocs DIST=$i ARCH=amd64 sudo pbuilder --clean
	done
}
function build_pbuilder() {
	nprocs=$(grep -cE &amp;quot;^processor&amp;quot; /proc/cpuinfo)
	dsc=$1
	shift
	dists=$@
	for i in $dists; do
		CONCURRENCY_LEVEL=$nprocs DIST=$i ARCH=i386 sudo pbuilder build $dsc
		CONCURRENCY_LEVEL=$nprocs DIST=$i ARCH=amd64 sudo pbuilder build $dsc
	done
}
&lt;/pre&gt;


&lt;p&gt;Dans le fichier .bashrc, j'ai ajouté la ligne &lt;em&gt;source ~/.scripts/pbuilder_utils&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;Vu comme ça, c'est un peu bourrin, mais voici les explications&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;update_pbuilder&amp;nbsp;: Permet de faire une mise à jour des pbuilders voulus, dans les 2 architectures, exemple&amp;nbsp;: update_pbuilder squeeze natty&lt;/li&gt;
&lt;li&gt;create_pbuilder&amp;nbsp;: Permet de créer les pbuilders voulus, dans les 2 architectures, exemple&amp;nbsp;: create_pbuilder squeeze natty&lt;/li&gt;
&lt;li&gt;clean_pbuilder&amp;nbsp;: Permet de nettoyer les pbuilders voulus, dans les 2 architectures, exemple&amp;nbsp;: clean_pbuilder squeeze natty&lt;/li&gt;
&lt;li&gt;build_pbuilder&amp;nbsp;: Permet de compiler un paquet pour les distributions voulues et dans les 2 architectures, exemple&amp;nbsp;: build_pbuilder paquet.dsc natty lenny squeeze&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Voila, c'est à peu près tout.&lt;/p&gt;


&lt;p&gt;Pour le pbuilderrc fourni ici, j'ai pris comme base celui fourni sur le wiki de ubuntu.com à l'adresse suivante&amp;nbsp;: https://wiki.ubuntu.com/PbuilderHowto#Multiple%20pbuilders&lt;/p&gt;


&lt;p&gt;Pour le reste, ben c'est de l'arrachage de cheveux, de la bidouille et de multiples essais infructueux.&lt;/p&gt;


&lt;p&gt;Sur ce, bonne lecture.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.davromaniak.eu/index.php?post/2011/03/03/La-machine-ultime-pour-compiler-ses-paquets-debian#comment-form</comments>
      <wfw:comment>http://www.davromaniak.eu/index.php?post/2011/03/03/La-machine-ultime-pour-compiler-ses-paquets-debian#comment-form</wfw:comment>
      <wfw:commentRss>http://www.davromaniak.eu/index.php?feed/atom/comments/200</wfw:commentRss>
      </item>
    
</channel>
</rss>