<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>gpocentek..blog</title>
	<atom:link href="http://gauvain.pocentek.net/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://gauvain.pocentek.net/blog</link>
	<description></description>
	<lastBuildDate>Thu, 11 Feb 2010 11:12:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Linutop OS : architecture</title>
		<link>http://gauvain.pocentek.net/blog/?p=86</link>
		<comments>http://gauvain.pocentek.net/blog/?p=86#comments</comments>
		<pubDate>Wed, 10 Feb 2010 18:31:38 +0000</pubDate>
		<dc:creator>gpocentek</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[linutop]]></category>
		<category><![CDATA[livecd]]></category>
		<category><![CDATA[persistance]]></category>
		<category><![CDATA[squashfs]]></category>

		<guid isPermaLink="false">http://gauvain.pocentek.net/blog/?p=86</guid>
		<description><![CDATA[Bientôt 3 ans de travail avec Linutop, il est plus que temps que je raconte un peu le boulot fait sur le Linutop OS depuis les débuts. Quand Fédéric Baille et Laurent Bervas m&#8217;ont contacté en 2007, suite à Solution Linux, le Linutop 1 avait fait ses premiers pas, livré avec un système Xubuntu Edgy [...]]]></description>
			<content:encoded><![CDATA[<p>Bientôt 3 ans de travail avec <a href="http://www.linutop.com">Linutop</a>, il est plus que temps que je raconte un peu le boulot fait sur le <a href="http://www.linutop.com/linutop2/software/index.en.html">Linutop OS</a> depuis les débuts.</p>
<p>Quand Fédéric Baille et Laurent Bervas m&#8217;ont contacté en 2007, suite à Solution Linux, le Linutop 1 avait fait ses premiers pas, livré avec un système Xubuntu Edgy (LiveCD) sur clé USB. C&#8217;était vaguement utilisable, pas du tout optimisé. Un gros challenge était là : partir d&#8217;une solution fonctionnelle mais lourde (1 processeur AMD LX700 et 256M de RAM), pour réussir à obtenir un système plus léger, robuste et utilisable par plus ou moins tout le monde – sans parler de la réduction du temps de boot, 3 minutes, c&#8217;est long.</p>
<p>La robustesse est une des idées essentielles du Linutop. Pas de pièces mobiles (disque dur, ventilateur&#8230;), un boitier solide, donc pas de casse. Le LiveCD pour l&#8217;OS était le penchant robuste du côté logiciel. Peu importe ce qui est fait durant la session, un reboot remet tout en place.</p>
<p>Ceci étant, on est vite limité sans persistance, et c&#8217;est d&#8217;autant plus dommage quand l&#8217;OS est fourni sur clé USB ! D&#8217;où la première modification importante, la création d&#8217;une seconde partition sur la clé, destinée à héberger les données de l&#8217;utilisateur (bookmarks, documents office, photos, j&#8217;en passe). Résultat, /dev/sda1 faisait office de système de base (via les techniques de LiveCD), l&#8217;écriture système était faite en RAM, et finalement un /dev/sda2 était monté sur /home pour la sauvegarde des documents. Plusieurs avantages à ce système :</p>
<ul>
<li>un système de base intouchable et facilement restoré (reboot)</li>
<li>l&#8217;écriture des logs et données de fonctionnement de l&#8217;OS en RAM limitent l&#8217;usure de la clé USB</li>
<li>un formattage de la seconde partition restaure la session utilisateur de base</li>
</ul>
<p>Cette utilisation d&#8217;un système de base (à base de squashfs + unionfs à l&#8217;époque) sur une partition, et de gestion des données sur la seconde est encore aujourd&#8217;hui utilisée, avec des évolutions.</p>
<p>Parmi ces évolutions, la persistance complète. Certains utilisateurs de Linutops ont voulu ajouter des logiciels, ou modifier les configurations sytème par défaut. Problème : comment faire quand tout est écrit en RAM ? Solution : ne plus écrire en RAM <img src='http://gauvain.pocentek.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Le mode persistant du Linutop est une simple extension du principe d&#8217;unionfs, en unifiant un système en squashfs avec une partition physique. Cette fois la partition sda2 contient les changements faits au système de base, y compris les données utilisateur. Le passage d&#8217;un mode à l&#8217;autre est possible (moyennant un reboot), et les données utilisateur conservées. Évidemment cette solution éloigne un peu l&#8217;OS de son idée première : la robustesse. L&#8217;OS réagit comme un OS standard, si sa configuration n&#8217;est pas bonne, il ne bootera pas. La solution de restauration est pourtant toujours possible, puisque le système de base est toujours contenu dans un fichier squashfs indisponible en écriture. Une option de restauration au boot a été ajoutée pour pouvoir simplement rétablir le système initial.</p>
<p>La dernière évolution a été un retour au concept de base. La persistance permettait plus de souplesse, mais apportait ses problèmes. Par sa &#8220;puissance&#8221; le Linutop implique une mono-utilisation du système (kiosk web, affichage, monitoring). C&#8217;est d&#8217;autant plus vrai que ce système s&#8217;adresse plus à un marché professionnel que <em>consumer</em>. Avoir une possibilité de figer le système dans une configuration est apparue nécessaire, et en accord avec l&#8217;idée première du Linutop. Le passage d&#8217;unionfs à aufs a fortement facilité l&#8217;ajout d&#8217;une 3ème couche au système d&#8217;unification, c&#8217;était le grand retour le la RAM. Le Linutop Lock superpose 3 parties distinctes du système :</p>
<ul>
<li>le système de base (squashfs)</li>
<li>la configuration système et utilisateur (2nde parition de la clé)</li>
<li>la couche d&#8217;écriture  (RAM)</li>
</ul>
<p>Le principe du Linutop Lock est simplement celui d&#8217;un LiveCD auquel on a ajouté une couche de configuration modifiable (configuration au sens large, l&#8217;ajout/suppression d&#8217;applications est aussi possible). Ce mode est idéal pour placer la machine à disposition d&#8217;utilisateurs de non-confiance (pour un kiosk internet par exemple). Si jamais l&#8217;utilisateur arrive à endommager le système, les dégats ne sont présents qu&#8217;en RAM, et un reboot suffit à tout restaurer. Résultat : 0 maintenance du matériel, 0 maintenance du système.</p>
<p>Un autre élément qu&#8217;a apporté ce système de partitionnement est une simplicité de déploiement. La plupart des clients Linutop déploient des machines sur de nombreux sites, systématiquement avec la même configuration. Des outils simplissimes d&#8217;utilisation permettent en 2 clics (ou une commande, je reste un geek quand même) de dupliquer intégralement un système sur clé USB bootable. L&#8217;opération est faisable en sens inverse bien évidemment. 1 Linutop maître est configuré, dupliqué sur une clé USB, et cette clé contenant le système bootable est utilisée comme source d&#8217;installation pour tous les autres Linutop ! Idéal pour diffuser une nouvelle version, ou une clé de restauration à des dizaines de sites. L&#8217;automatisation du &#8220;flashage&#8221; du disque interne permet à n&#8217;importe quel utilisateur de faire une installation d&#8217;un système préconfiguré en 3 minutes. Pas de prise de main à distance, pas de déplacement, et des connaissances plus que minimum nécessaires pour installer (je pense qu&#8217;à peu près tout le monde peut brancher une clé USB et appuyer sur le bouton de power !).</p>
<p>Le matériel Linutop a vraiment été conçu pour réduire les coûts de maintenance, son OS a suivi la même voie, et je pense que le résultat n&#8217;est pas mauvais <img src='http://gauvain.pocentek.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Parallèlement au développement de l&#8217;architecture, celui de l&#8217;interface a été le résultat de nombreuses réflexions sur ce que l&#8217;utilisateur attend en démarrant son Linutop. Plus du détails dans un prochain post&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://gauvain.pocentek.net/blog/?feed=rss2&amp;p=86</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Objectif : Libre</title>
		<link>http://gauvain.pocentek.net/blog/?p=65</link>
		<comments>http://gauvain.pocentek.net/blog/?p=65#comments</comments>
		<pubDate>Sat, 09 Jan 2010 17:50:55 +0000</pubDate>
		<dc:creator>gpocentek</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[objectif-libre]]></category>
		<category><![CDATA[u-classroom]]></category>
		<category><![CDATA[ulteo]]></category>

		<guid isPermaLink="false">http://gauvain.pocentek.net/blog/?p=65</guid>
		<description><![CDATA[Un mauvais jeu de mot (de ponctuation en fait) pour le premier post de l&#8217;année : je change de boulot et commence à travailler ce lundi avec Christophe Sauthier (aka huats, aka Mr le président d&#8217;Ubuntu fr) pour sa société Objectif Libre (]]></description>
			<content:encoded><![CDATA[<p>Un mauvais jeu de mot (de ponctuation en fait) pour le premier post de l&#8217;année : je change de boulot et commence à travailler ce lundi avec <a href="http://reponses.net/">Christophe Sauthier</a> (<em>aka</em> huats, <em>aka</em> Mr le président d&#8217;<a href="http://ubuntu-fr.org">Ubuntu fr</a>) pour sa société <a href="http://www.objectif-libre.com">Objectif Libre</a> (<= le jeu de ponctuation, vous suivez ?). Au programme, formation et expertise Linux et logiciels libres, et contributions aux LL dès que possible !</p>
<p>Je quitte donc mon poste chez <a href="http://ulteo.com">Ulteo</a>, et la <a href="http://www.ulteo.com/home/en/devel">place est libre</a> (si vous êtes debianeux/ubuntero, que vous codez et que vous connaissez bien les hyperviseurs et la virtualisation en général, le boulot est fait pour vous).</p>
<p>Toujours dans le domaine du libre, <a href="http://u-classroom">u-classroom</a> est au point mort, et je compte bien ressusciter un peu le tout dès que possible. Le chan freenode voit régulièrement arriver des visiteurs curieux de savoir quand sera la prochaine session&#8230; pas drôle de leur répondre que rien ne tourne en ce moment. L&#8217;idéal sera sans doute de redémarrer en réitérant des sessions passées, mais les propositions de nouvelles sessions, et les nouveaux intervenants sont les bienvenus !</p>
<p>Autres trucs en vrac et orientés &#8220;mylife&#8221; :</p>
<ul>
<li>je ne suis plus développeur Ubuntu ; pas la peine d&#8217;avoir son nom dans les équipes LP si on ne fait plus rien</li>
<li>j&#8217;ai l&#8217;intention d&#8217;essayer une nouvelle fois de contribuer à Debian (via Objectif Libre)</li>
<li>pour la première fois depuis des années j&#8217;ai autre chose que Debian sur certains de mes PCs (OpenSuSE pour le portable, Fedora pour le &#8220;media center&#8221;, et les deux fonctionnent vraiment bien !)</li>
<li>IMAP c&#8217;est mieux que POP</li>
<li>résolution du nouvel an : bloguer un peu plus (mouais&#8230; qui tient ses résolutions ?)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://gauvain.pocentek.net/blog/?feed=rss2&amp;p=65</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Utiliser une config apt autre que celle du système</title>
		<link>http://gauvain.pocentek.net/blog/?p=59</link>
		<comments>http://gauvain.pocentek.net/blog/?p=59#comments</comments>
		<pubDate>Sat, 10 Oct 2009 13:29:18 +0000</pubDate>
		<dc:creator>gpocentek</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[apt]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://gauvain.pocentek.net/blog/?p=59</guid>
		<description><![CDATA[En guise de reminder personnel et pour faire croire que ce blog est vivant, je vous propose un petit script qui crée une arborescence apt temporaire et qui l&#8217;utilise pour récupérer des données. Le but premier du script est d&#8217;extraire les traductions firefox et xulrunner des paquets de langue Ubuntu. Tout ça sous GPL 2 [...]]]></description>
			<content:encoded><![CDATA[<p>En guise de reminder personnel et pour faire croire que ce blog est vivant, je vous propose un petit script qui crée une arborescence apt temporaire et qui l&#8217;utilise pour récupérer des données. Le but premier du script est d&#8217;extraire les traductions firefox et xulrunner des paquets de langue Ubuntu. Tout ça sous GPL 2 (il faut au moins ça pour un tel script !).</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
&nbsp;
<span style="color: #007800;">HERE</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">pwd</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Drop the old data</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #007800;">$HERE</span><span style="color: #000000; font-weight: bold;">/</span>usr
&nbsp;
<span style="color: #666666; font-style: italic;"># Set the apt config</span>
<span style="color: #666666; font-style: italic;"># First create the needed directories and files</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> apt<span style="color: #000000; font-weight: bold;">/</span>archives<span style="color: #000000; font-weight: bold;">/</span>partial
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> apt<span style="color: #000000; font-weight: bold;">/</span>lists<span style="color: #000000; font-weight: bold;">/</span>partial
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> apt<span style="color: #000000; font-weight: bold;">/</span>preferences.d
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> apt<span style="color: #000000; font-weight: bold;">/</span>tmp
<span style="color: #c20cb9; font-weight: bold;">touch</span> apt<span style="color: #000000; font-weight: bold;">/</span>status
<span style="color: #666666; font-style: italic;"># Set the sources.list</span>
<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">&gt;</span> apt<span style="color: #000000; font-weight: bold;">/</span>sources.list <span style="color: #cc0000; font-style: italic;">&lt;&lt; EOF
deb http://archive.ubuntu.com/ubuntu karmic main
deb http://archive.ubuntu.com/ubuntu karmic-updates main
deb http://archive.ubuntu.com/ubuntu karmic-security main
EOF</span>
<span style="color: #666666; font-style: italic;"># And the config file</span>
<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">&gt;</span> apt.conf <span style="color: #cc0000; font-style: italic;">&lt;&lt; EOF
APT
{
  // We don't want to install the package, just download the binaries
  Get::Download-Only &quot;true&quot;;
  // We don't want interaction
  Get::Assume-Yes &quot;true&quot;;
  Get::force-yes &quot;true&quot;;
};
&nbsp;
Dir
{
  State &quot;$HERE/apt/&quot;;
  State::status &quot;status&quot;;
&nbsp;
  Cache &quot;$HERE/apt/tmp/&quot;;
  Cache::archives &quot;$HERE/apt/archives/&quot;;
&nbsp;
  Etc &quot;$HERE/apt/&quot;;
};
EOF</span>
&nbsp;
<span style="color: #007800;">APT_GET</span>=<span style="color: #ff0000;">&quot;apt-get -c <span style="color: #007800;">$HERE</span>/apt.conf&quot;</span>
<span style="color: #007800;">APT_CACHE</span>=<span style="color: #ff0000;">&quot;apt-cache -c <span style="color: #007800;">$HERE</span>/apt.conf&quot;</span>
&nbsp;
<span style="color: #007800;">$APT_GET</span> update
&nbsp;
<span style="color: #666666; font-style: italic;"># Get the list of known langs</span>
<span style="color: #007800;">LANGS</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$APT_CACHE</span> search <span style="color: #660033;">--names-only</span> language-pack <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">egrep</span> <span style="color: #660033;">-v</span> <span style="color: #ff0000;">&quot;(gnome|base|kde)&quot;</span>  <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">' '</span> <span style="color: #660033;">-f</span> <span style="color: #000000;">1</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">'-'</span> -f3-<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Install the package (download only)</span>
<span style="color: #000000; font-weight: bold;">for</span> lang <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #007800;">$LANGS</span>; <span style="color: #000000; font-weight: bold;">do</span>
    <span style="color: #007800;">$APT_GET</span> <span style="color: #c20cb9; font-weight: bold;">install</span> language-pack-<span style="color: #007800;">$lang</span>
    <span style="color: #c20cb9; font-weight: bold;">dpkg</span> <span style="color: #660033;">-x</span> apt<span style="color: #000000; font-weight: bold;">/</span>archives<span style="color: #000000; font-weight: bold;">/</span>language-pack-<span style="color: #ff0000;">&quot;<span style="color: #007800;">$lang</span>&quot;</span>_<span style="color: #000000; font-weight: bold;">*</span> <span style="color: #007800;">$HERE</span>
<span style="color: #000000; font-weight: bold;">done</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Cleanup, we only want FF 3.5 and Xul 1.9.1 translations</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> apt.conf lock apt<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> usr<span style="color: #000000; font-weight: bold;">/</span>share
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">find</span> usr <span style="color: #660033;">-name</span> <span style="color: #ff0000;">&quot;*firefox-3.0*&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">find</span> usr <span style="color: #660033;">-name</span> <span style="color: #ff0000;">&quot;*xulrunner-1.9.ubuntu*&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://gauvain.pocentek.net/blog/?feed=rss2&amp;p=59</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Misc news</title>
		<link>http://gauvain.pocentek.net/blog/?p=41</link>
		<comments>http://gauvain.pocentek.net/blog/?p=41#comments</comments>
		<pubDate>Wed, 08 Apr 2009 14:24:43 +0000</pubDate>
		<dc:creator>gpocentek</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[linutop]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[ovd]]></category>
		<category><![CDATA[ulteo]]></category>

		<guid isPermaLink="false">http://gauvain.pocentek.net/blog/?p=41</guid>
		<description><![CDATA[News en vrac de tous fronts : le Linutop 3 est dispo (yay \o/), et le Linutop OS 3.0 est sur le point de sortir ; Solutions Linux avec Linutop s&#8217;est bien passé, on a rencontré pas mal de monde intéressant (ça a été un vrai plaisir de passer un peu de temps avec Christophe et Didier [...]]]></description>
			<content:encoded><![CDATA[<p>News en vrac de tous fronts :</p>
<ul>
<li>le <a href="http://www.linutop.com/linutop2/linutop3.en.html">Linutop 3</a> est dispo (yay \o/), et le Linutop OS 3.0 est sur le point de sortir ;</li>
<li>Solutions Linux avec Linutop s&#8217;est bien passé, on a rencontré pas mal de monde intéressant (ça a été un vrai plaisir de passer un peu de temps avec <a href="http://www.linutop.com/mag.en/2009/04/04/solutions-linux-2009-christophe-sautier-ubuntu-fr/">Christophe</a> et <a href="http://blog.didrocks.fr/">Didier</a> au passage) ;</li>
<li><a href="http://www.ulteo.com/home/fr/ovdi/openvirtualdesktop/features">Ulteo OVD</a> 1.0 rc2 est également sorti, de manière discrète. N&#8217;hésitez pas à tester ! La finale devrait arriver dans les jours ou semaines qui viennent ;</li>
<li>pour l&#8217;occasion j&#8217;ai eu la joie de compiler et patcher un programme Windows pour la première fois de ma vie. Après 3 jours de setup de l&#8217;OS&#8230;</li>
<li>ça bouge sur <a href="http://u-classroom.net">u-classroom</a>, un grand merci à <a href="http://b.druuna.dud-t.org/">illovae</a> pour l&#8217;organisation des cours tty. J&#8217;ai entendu dire que <a href="http://skateinmars.net">skateinmars</a> prépare un cours sur Ruby. Avis aux amateurs ;</li>
<li>j&#8217;essaie de trouver l&#8217;énergie pour préparer un TP autotools pour ma part (didrocks devait le faire mais bon&#8230; :p)</li>
<li>la nouvelle gestion du recovery après crash sur firefox 3.[15] est bien foutue, moins il y a de popups mieux je me sens ;</li>
<li>Thunderbird 3.0 utilise des onglets (mr_pouit ne voit pas l&#8217;intérêt mais <a href="http://mrpouit.free.fr/?p=374">il est d&#8217;humeur négative</a> en ce moment, il passe trop de temps sous Windows) !</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://gauvain.pocentek.net/blog/?feed=rss2&amp;p=41</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erreurs à ne plus faire</title>
		<link>http://gauvain.pocentek.net/blog/?p=36</link>
		<comments>http://gauvain.pocentek.net/blog/?p=36#comments</comments>
		<pubDate>Tue, 27 Jan 2009 17:40:45 +0000</pubDate>
		<dc:creator>gpocentek</dc:creator>
				<category><![CDATA[FOSS]]></category>

		<guid isPermaLink="false">http://gauvain.pocentek.net/blog/?p=36</guid>
		<description><![CDATA[Notes pour l&#8217;avenir : ne pas écrire de bot IRC en perl, sinon on finit par le ré-écrire en python (mais en mieux, donc ça va)&#160;; mettre des espaces dans du code C&#8230; Merci vim et les regexps pour ajouter un espace entre nom de fonction et parenthèse ouvrante&#160;::%s/\([^ &#124;_]\)(/\1 (/g ne pas rester trop [...]]]></description>
			<content:encoded><![CDATA[<p>Notes pour l&#8217;avenir :</p>
<ul>
<li>ne pas écrire de bot IRC en perl, sinon on finit par le ré-écrire en python (mais en mieux, donc ça va)&nbsp;;</li>
<li>mettre des espaces dans du code C&#8230; Merci vim et les regexps pour ajouter un espace entre nom de fonction et parenthèse ouvrante&nbsp;:<br /><code>:%s/\([^ |_]\)(/\1 (/g</code></li>
<li>ne pas rester trop longtemps sans session U-Classroom (n&#8217;oubliez pas de venir nous voir jeudi soir si le <a href="http://u-classroom.net/post/2009/01/23/Prochaine-session-%3A-Initiation-au-packaging-Debian-/-Ubuntu">packaging debian/ubuntu</a> vous intéresse).</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://gauvain.pocentek.net/blog/?feed=rss2&amp;p=36</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chroot CentOS sous Debian</title>
		<link>http://gauvain.pocentek.net/blog/?p=34</link>
		<comments>http://gauvain.pocentek.net/blog/?p=34#comments</comments>
		<pubDate>Fri, 09 Jan 2009 18:56:09 +0000</pubDate>
		<dc:creator>gpocentek</dc:creator>
				<category><![CDATA[FOSS]]></category>

		<guid isPermaLink="false">http://gauvain.pocentek.net/blog/?p=34</guid>
		<description><![CDATA[Depuis quelques semaines je passe du temps sous RHEL/CentOS pour Ulteo, et j&#8217;ai commencé à bosser sur des rpms pour notre OVD. Utiliser une machine virtuelle n&#8217;est pas l&#8217;idéal (c&#8217;est long à démarrer), et après tout, un Linux est un Linux, ça tourne dans un chroot. Je me suis donc construit un chroot CentOS 5, [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis quelques semaines je passe du temps sous RHEL/CentOS pour <a href="http://ulteo.com">Ulteo</a>, et j&#8217;ai commencé à bosser sur des rpms pour notre <a href="http://www.ulteo.com/home/fr/ovdi/openvirtualdesktop">OVD</a>. Utiliser une machine virtuelle n&#8217;est pas l&#8217;idéal (c&#8217;est long à démarrer), et après tout, un Linux est un Linux, ça tourne dans un chroot.</p>
<p>Je me suis donc construit un chroot CentOS 5, disponible pour les users grâce à dchroot. Ca s&#8217;installe en 10 minutes, alors pourquoi s&#8217;en priver ?</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Préparation de l'environnement</span>
<span style="color: #c20cb9; font-weight: bold;">su</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">CHROOT</span>=<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>chroot<span style="color: #000000; font-weight: bold;">/</span>centos
&nbsp;
<span style="color: #666666; font-style: italic;"># Construction du système de base</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #660033;">-p</span> <span style="color: #007800;">$CHROOT</span>
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> rinse
rinse <span style="color: #660033;">--distribution</span> centos-<span style="color: #000000;">5</span> <span style="color: #660033;">--directory</span> <span style="color: #007800;">$CHROOT</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Fstab</span>
<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>fstab <span style="color: #cc0000; font-style: italic;">&lt;&lt;EOF
# centos chroot
proc  $CHROOT/proc    proc    defaults    0 0
/home $CHROOT /home    none    bind        0 0
/tmp   $CHROOT/tmp     none    bind        0 0
/dev  $CHROOT/dev     none    bind        0 0
devpts $CHROOT/dev/pts devpts  defaults    0 0
EOF</span>
<span style="color: #c20cb9; font-weight: bold;">mount</span> <span style="color: #660033;">-a</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Dchroot:</span>
<span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> dchroot
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;centos <span style="color: #007800;">$CHROOT</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>dchroot.conf
<span style="color: #7a0874; font-weight: bold;">echo</span> CentOS <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #007800;">$CHROOT</span><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>debian_chroot <span style="color: #666666; font-style: italic;"># le bashrc de debian affichera un joli prompt</span>
<span style="color: #c20cb9; font-weight: bold;">chroot</span> <span style="color: #007800;">$CHROOT</span> <span style="color: #c20cb9; font-weight: bold;">passwd</span> <span style="color: #666666; font-style: italic;"># mot de passe root</span>
<span style="color: #c20cb9; font-weight: bold;">chroot</span> <span style="color: #007800;">$CHROOT</span> useradd <span style="color: #660033;">-u</span> uid_user user <span style="color: #666666; font-style: italic;"># pour éviter les problèmes de permission</span>
<span style="color: #c20cb9; font-weight: bold;">chroot</span> <span style="color: #007800;">$CHROOT</span> <span style="color: #c20cb9; font-weight: bold;">passwd</span> user</pre></div></div>

<p>C&#8217;est maintenant possible de tester :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">exit</span>
dchroot <span style="color: #660033;">-c</span> centos <span style="color: #666666; font-style: italic;"># en tant qu'user</span></pre></div></div>

<p>Vous devriez voir un prompt du style :<br />
<code><br />
(CentOS)gauvain@zero:~$<br />
</code></p>
<p>J&#8217;ai eu quelques soucis avec urxvt, mais il existe un <a href="http://jupiter.jtan.com/~wingnut/jed-users/msg01866.html">workaround</a> :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> ~<span style="color: #000000; font-weight: bold;">/</span>.bashrc <span style="color: #cc0000; font-style: italic;">&lt;&lt;EOF
# urxvt terminal in centos
if [ &quot;$TERM&quot; = &quot;rxvt-unicode&quot; ] &amp;&amp; grep -qi centos /etc/issue; then
  TERM=&quot;rxvt&quot;
  export TERM
fi
EOF</span></pre></div></div>

<p>Après avoir installé les paquets nécessaire dans le chroot, un simple wrapper (<tt>/usr/local/bin/rpmbuild</tt> par exemple) pour rpmbuild me permet de lancer des builds de rpms de manière transparente :</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
&nbsp;
dchroot <span style="color: #660033;">-c</span> centos <span style="color: #660033;">-d</span> <span style="color: #ff0000;">&quot;rpmbuild $@&quot;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://gauvain.pocentek.net/blog/?feed=rss2&amp;p=34</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bzr vers svn avec tailor</title>
		<link>http://gauvain.pocentek.net/blog/?p=22</link>
		<comments>http://gauvain.pocentek.net/blog/?p=22#comments</comments>
		<pubDate>Sun, 07 Dec 2008 08:29:23 +0000</pubDate>
		<dc:creator>gpocentek</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[bzr]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[tailor]]></category>

		<guid isPermaLink="false">http://gauvain.pocentek.net/blog/?p=22</guid>
		<description><![CDATA[Je voulais passer de bzr à svn pour mon développement chez linutop (pour plusieurs raisons, vitesse, gestion de dépôts, pas de besoin de branches décentralisées, gestion des droits&#8230;), la contrainte étant de garder toutes les révisions venant des branches bzr, et d&#8217;insérer chacune des branches bzr dans un même dépôt svn. tailor fonctionne vraiment très [...]]]></description>
			<content:encoded><![CDATA[<p>Je voulais passer de bzr à svn pour mon développement chez <a href="http://linutop.com">linutop</a> (pour plusieurs raisons, vitesse, gestion de dépôts, pas de besoin de branches décentralisées, gestion des droits&#8230;), la contrainte étant de garder toutes les révisions venant des branches bzr, et d&#8217;insérer chacune des branches bzr dans un même dépôt svn. <a href="http://progetti.arstecnica.it/tailor">tailor</a> fonctionne vraiment très bien pour ça. Ce n&#8217;est pas super rapide, mais comme la conversion n&#8217;est à faire qu&#8217;une fois, ce n&#8217;est pas un gros problème.</p>
<p>Après avoir créé le dépôt svn et avoir commité une architecture initiale (du genre depot/app1/trunk, depot/app2/trunk, etc), il suffit d&#8217;utiliser un petit script (à lancer dans /home/you/tailor pour cet exemple), qui récupère chaque révision bzr pour la commiter dans le dépôt svn:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
&nbsp;
<span style="color: #007800;">ORIG</span>=<span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>bzr<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #007800;">DIRS</span>=<span style="color: #ff0000;">&quot;app1 app2 app3 app4&quot;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">for</span> D <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #007800;">$DIRS</span>; <span style="color: #000000; font-weight: bold;">do</span>
  <span style="color: #666666; font-style: italic;"># clean the work dir otherwise bzr will not be happy</span>
  <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> work
  <span style="color: #c20cb9; font-weight: bold;">mkdir</span> work
&nbsp;
  <span style="color: #666666; font-style: italic;"># set a tailor conf file for this conversion</span>
  <span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">&gt;</span> conf <span style="color: #cc0000; font-style: italic;">&lt;&lt;EOF
[DEFAULT]
verbose = True
&nbsp;
[project]
target = svn:target
start-revision = INITIAL
root-directory = /home/you/tailor/work
state-file = tailor.state
source = bzr:source
subdir =
&nbsp;
[bzr:source]
repository = $ORIG$D/mainline
&nbsp;
[svn:target]
repository = file:///path/to/svn/repo
module = /$D/trunk
EOF</span>
&nbsp;
  tailor <span style="color: #660033;">--configfile</span>=conf
<span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p>Après un petit moment tout est inclus dans le dépôt svn !</p>
]]></content:encoded>
			<wfw:commentRss>http://gauvain.pocentek.net/blog/?feed=rss2&amp;p=22</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Translatage</title>
		<link>http://gauvain.pocentek.net/blog/?p=21</link>
		<comments>http://gauvain.pocentek.net/blog/?p=21#comments</comments>
		<pubDate>Fri, 21 Nov 2008 10:29:05 +0000</pubDate>
		<dc:creator>gpocentek</dc:creator>
				<category><![CDATA[humeur]]></category>

		<guid isPermaLink="false">http://gauvain.pocentek.net/blog/?p=21</guid>
		<description><![CDATA[Il faudrait vraiment interdire les traductions des outils de développement, ça me déprime de lire des messages de ce genre : dpkg-source: avertissement: fichier ooo-build/bin/a2az.pl sans caractère nouvelle ligne terminal (soit l&#8217;original soit la version modifiée) Si vous ne l&#8217;avez jamais fait, lisez un build log utilisant gcc ou g++, ça vaut le détour. PS [...]]]></description>
			<content:encoded><![CDATA[<p>Il faudrait vraiment interdire les traductions des outils de développement, ça me déprime de lire des messages de ce genre :</p>
<blockquote><p>dpkg-source: avertissement: fichier ooo-build/bin/a2az.pl sans caractère nouvelle ligne terminal (soit l&#8217;original soit la version modifiée)</p></blockquote>
<p>Si vous ne l&#8217;avez jamais fait, lisez un build log utilisant gcc ou g++, ça vaut le détour.<br />
PS : ne me dites pas de passer mon système en anglais, c&#8217;est déjà le cas. J&#8217;ai eu ce message en utilisant un serveur dont la langue est le français par défaut.</p>
]]></content:encoded>
			<wfw:commentRss>http://gauvain.pocentek.net/blog/?feed=rss2&amp;p=21</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Machines à voter, le retour</title>
		<link>http://gauvain.pocentek.net/blog/?p=20</link>
		<comments>http://gauvain.pocentek.net/blog/?p=20#comments</comments>
		<pubDate>Tue, 04 Nov 2008 12:54:40 +0000</pubDate>
		<dc:creator>gpocentek</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[humeur]]></category>

		<guid isPermaLink="false">http://gauvain.pocentek.net/blog/?p=20</guid>
		<description><![CDATA[C&#8217;est pas très neuf et c&#8217;est du flash, mais c&#8217;est d&#8217;actualité. Si vous avez un peu de temps, ça vaut le détour : http://video.google.com/videoplay?docid=2812312035664732092 (merci pour le lien, gapz). C&#8217;est sans doute enfoncer une porte ouverte mais je le répète quand même, avoir des logiciels open source dans des cas aussi critiques résoudrait probablement une [...]]]></description>
			<content:encoded><![CDATA[<p>C&#8217;est pas très neuf et c&#8217;est du flash, mais c&#8217;est d&#8217;actualité. Si vous avez un peu de temps, ça vaut le détour : <a href="http://video.google.com/videoplay?docid=2812312035664732092">http://video.google.com/videoplay?docid=2812312035664732092</a> (merci pour le lien, gapz).</p>
<p>C&#8217;est sans doute enfoncer une porte ouverte mais je le répète quand même, avoir des logiciels open source dans des cas aussi critiques résoudrait probablement une partie des problèmes (probablement pas tous, ok, mais quand même).</p>
]]></content:encoded>
			<wfw:commentRss>http://gauvain.pocentek.net/blog/?feed=rss2&amp;p=20</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Misc news</title>
		<link>http://gauvain.pocentek.net/blog/?p=19</link>
		<comments>http://gauvain.pocentek.net/blog/?p=19#comments</comments>
		<pubDate>Mon, 13 Oct 2008 17:21:01 +0000</pubDate>
		<dc:creator>gpocentek</dc:creator>
				<category><![CDATA[FOSS]]></category>
		<category><![CDATA[linutop]]></category>
		<category><![CDATA[xfkc]]></category>

		<guid isPermaLink="false">http://gauvain.pocentek.net/blog/?p=19</guid>
		<description><![CDATA[Quelques news en vrac : Olivier Fourdan a repris une partie du code de Xfkc pour l&#8217;intégrer dans le plugin de config du clavier Xfce. Yay ! Je vais probablement abandonner le développement, qui n&#8217;était de toute manière plus très actif. Linutop OS 2.2.2 devrait sortir d&#8217;ici peu (un jour je ferai un post sur [...]]]></description>
			<content:encoded><![CDATA[<p>Quelques news en vrac :</p>
<ul>
<li>Olivier Fourdan a repris une partie du code de Xfkc pour l&#8217;intégrer dans le plugin de config du clavier Xfce. Yay ! Je vais probablement abandonner le développement, qui n&#8217;était de toute manière plus très actif.</li>
<li>Linutop OS 2.2.2 devrait sortir d&#8217;ici peu (un jour je ferai un post sur mon taff chez Linutop, promis). Une beta/rc/whatever est dispo en ligne of course (cf notre <a href="http://linutop.com/wiki">wiki</a> pour les updates).</li>
<li>Regardez ce qui se passe chez <a href="http://ulteo.com">Ulteo</a>, il devrait y avoir des news sympas d&#8217;ici peu.</li>
<li>OpenOffice 3 est sorti, vous pouvez le tester sans l&#8217;installer sur le <a href="http://www.ulteo.com/home/ooo">bureau en ligne Ulteo</a> (faudra que je parle de ce que je fais là bas aussi&#8230;).</li>
<li>J&#8217;ai mis en place <a href="/wiki">un wiki</a> avec quelques code snippets, sorte de mémo un peu en vrac pour le moment. Je m&#8217;en servirai peut être pour préparer des potentiels cours pour la <a href="http://u-classroom.net">classroom</a>. Si vous avez des choses à ajouter, allez-y (mais pas d&#8217;ajouts du genre &#8220;installer google earth sous Hardy&#8221; s&#8217;il-vous-plaît-merci).</li>
</ul>
<p>Ce sera tout pour ce soir.</p>
]]></content:encoded>
			<wfw:commentRss>http://gauvain.pocentek.net/blog/?feed=rss2&amp;p=19</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
