<?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>Le mpg-blog &#187; howto</title>
	<atom:link href="http://weblog.elzevir.fr/par-tag/howto/feed/" rel="self" type="application/rss+xml" />
	<link>http://weblog.elzevir.fr</link>
	<description>LaTeX et autres geekeries</description>
	<lastBuildDate>Fri, 10 Sep 2010 08:49:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>LuaTeX récent sur TeX Live, compléments</title>
		<link>http://weblog.elzevir.fr/2009/04/luatex-recent-sur-tex-live-complements/</link>
		<comments>http://weblog.elzevir.fr/2009/04/luatex-recent-sur-tex-live-complements/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 13:55:11 +0000</pubDate>
		<dc:creator>mpg</dc:creator>
				<category><![CDATA[TeX et compagnie]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[luatex]]></category>
		<category><![CDATA[texlive]]></category>

		<guid isPermaLink="false">http://weblog.elzevir.fr/2009/04/lautex-recent-sur-tex-live-2008-2/</guid>
		<description><![CDATA[Dans un article précédent, j&#8217;expliquais comment installer une version récente
de LuaTeX sur TeX Live. Suite à un changement depuis la version 0.39.0
de LuaTeX, un action supplémentaire (modification des fichiers d&#8217;initialisation)
est requise. Celle-ci doit être effectuée une fois pour toute pour permettre
d&#8217;utiliser une version supérieure à 0.39.0, contrairement aux étapes décrites
précédemment qui sont à refaire pour [...]]]></description>
			<content:encoded><![CDATA[<p>Dans un article précédent, j&#8217;expliquais comment <a href="http://weblog.elzevir.fr/2009/02/integrer-un-luatex-recent-a-tex-live/">installer une version récente
de LuaTeX sur TeX Live</a>. Suite à un changement depuis la version <code>0.39.0</code>
de LuaTeX, un action supplémentaire (modification des fichiers d&#8217;initialisation)
est requise. Celle-ci doit être effectuée une fois pour toute pour permettre
d&#8217;utiliser une version supérieure à <code>0.39.0</code>, contrairement aux étapes décrites
précédemment qui sont à refaire pour chaque installation d&#8217;une nouvelle
version.<span id="more-51"></span></p>

<h2>Le comment</h2>

<p>Vu que l&#8217;installation des binaires se fait forcément dans l&#8217;arborescence
principale de TeX Live, toutes les explications qui suivent supposent que vous
installez les fichiers d&#8217;initialisation dans <code>TEXMFLOCAL</code>, car je ne vois pas de
raison d&#8217;utiliser plutôt <code>TEXMFHOME</code>. Pour connaître la valeur de <code>TEXMFLOCAL</code>,
utilisez la commande suivante.</p>

<pre><code>kpsewhich --var-value TEXMFLOCAL
</code></pre>

<p>Par ailleurs, je suppose que vous avez les privilèges suffisants pour effectuer
toutes les opérations décrites. Il est conseillé d&#8217;installer TeX Live en tant
que simple utilisateur (surtout si vous comptez la bidouiller beaucoup, comme
c&#8217;est l&#8217;objet de ces billets), mais si vous ne l&#8217;avez pas fait, n&#8217;hésitez pas à
utiliser <code>sudo</code> ou <code>su</code> sous Unix, ou « ouvrir une ligne de commande en tant
qu&#8217;administrateur » sous Windows au besoin.</p>

<p>Dans <code>TEXMFLOCAL/tex/generic/config</code>, créez un fichier nommé
<code>luatexiniconfig.tex</code> ayant le contenu suivant.</p>

<pre><code>\begingroup
\catcode `\{=1
\catcode `\}=2
\expandafter\ifx\csname luatexversion\endcsname\relax
  \let\luatexversion\undefined
  \directlua{tex.enableprimitives('', tex.extraprimitives())}
\fi
\endgroup
</code></pre>

<p>Ensuite, trouvez l&#8217;arborescence <code>TEXMFDIST</code> (utilisez <code>kpsewhich --var-value</code>
au besoin), et copiez de cette arborescence vers <code>TEXMFLOCAL</code> les fichiers
suivants.</p>

<pre><code>tex/plain/config/luatex.ini
tex/plain/config/pdfluatex.ini
tex/latex/latexconfig/lualatex.ini
tex/latex/latexconfig/pdflualatex.ini
</code></pre>

<p>Éditez ensuite la copie présente dans <code>TEXMFLOCAL</code> de chacun de ces fichiers,
pour ajouter au tout début (juste après les commentaires initiaux) la ligne</p>

<pre><code>\input luatexiniconfig
</code></pre>

<p>Il faut maintenant mettre à jour la base de données des fichiers de TeX. Vu
que tous les fichiers créés sont dans <code>TEXMFLOCAL</code>, il suffit de se placer dans
ce répertoire et de taper</p>

<pre><code>mktexlsr .
</code></pre>

<p>Tout ceci est à effectuer une fois avant d&#8217;installer une version supérieure ou
égale à <code>0.39.0</code> de LuaTeX, par la méthode donnée dans le billet précédent.</p>

<h2>Le pourquoi du comment</h2>

<p>Sans la manipulation décrite ci-dessus, vous aurez une erreur au moment de
re-générer les formats (l&#8217;étape <code>fmtutil-sys</code>). En effet, les fichiers
d&#8217;initialisation des formats supposent qu&#8217;un certain nombre de primitives
fournies par e-TeX ou pdfTeX existent, ce qui est bien naturel vu qu&#8217;il sont
destinés à un moteur précis.</p>

<p>Or, depuis la version <code>0.39.0</code>, LuaTeX (en mode INI, c&#8217;est-à-dire sans format
pré-chargé) démarre avec exactement les même primitives que TeX82, sauf
<code>\directlua</code> en plus. Si on veut accéder aux nouvelles primitives, il faut
explicitement demander leur activation avec la fonction Lua
<code>tex.enableprimitives()</code>. Ceci présente deux avantages :</p>

<ul>
<li>si dans un futur distant on veut réellement remplacer pdfTeX par LuaTeX, on
peut (en utilisant le deuxième argument de <code>tex.enableprimitives()</code>) n&#8217;activer
que les primitives pdfTeX dans ce mode-là.</li>
<li>en activant les primitives, on peut si on veut (premier argument de
<code>tex.enableprimitives()</code>) leur ajouter un préfixe (par exemple
<code>\LuaTeXprimitive</code> au lieu de <code>\primitive</code>) pour éviter les conflits de noms
avec des macros déjà utilisés dans différents paquets.</li>
</ul>

<p>Pour plus de détails, voir les parties 2.1 et 4.1.14 d&#8217;un <a href="http://luatex.org/svn/trunk/manual/luatexref-t.pdf">version récente du
manuel LuaTeX</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.elzevir.fr/2009/04/luatex-recent-sur-tex-live-complements/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Intégrer un LuaTeX récent à TeX Live</title>
		<link>http://weblog.elzevir.fr/2009/02/integrer-un-luatex-recent-a-tex-live/</link>
		<comments>http://weblog.elzevir.fr/2009/02/integrer-un-luatex-recent-a-tex-live/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 14:43:42 +0000</pubDate>
		<dc:creator>mpg</dc:creator>
				<category><![CDATA[TeX et compagnie]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[luatex]]></category>
		<category><![CDATA[texlive]]></category>

		<guid isPermaLink="false">http://weblog.elzevir.fr/2009/02/integrer-un-luatex-recent-a-tex-live/</guid>
		<description><![CDATA[LuaTeX est une extension de TeX, activement développée, et destinée à (long)
terme à remplacer pdfTeX (l&#8217;extension de TeX utilisée par toutes les
distributions modernes pour compiler les documents LaTeX). Un des nouveautés de
TeX Live 2008 est d&#8217;intégrer une version de LuaTeX (la beta 0.25.4).
Cependant, pour le moment, il n&#8217;y a pas de mise à jour de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.luatex.org/">LuaTeX</a> est une extension de TeX, activement développée, et destinée à (long)
terme à remplacer <a href="http://www.tug.org/applications/pdftex/">pdfTeX</a> (l&#8217;extension de TeX utilisée par toutes les
distributions modernes pour compiler les documents LaTeX). Un des nouveautés de
<a href="http://www.tug.org/texlive/">TeX Live</a> 2008 est d&#8217;intégrer une version de LuaTeX (la beta 0.25.4).
Cependant, pour le moment, il n&#8217;y a pas de mise à jour de LuaTeX entre deux
versions annuelles de TeX Live. Ce billet explique comment intégrer une version
plus récente de LuaTeX (la beta 0.35 est sortie hier) à sa TeX Live 2008, aussi
bien sous windows que sous linux/unix, sans interférer avec le gestionnaire de
paquets de TeX Live..<span id="more-47"></span></p>

<h2>Avertissements préliminaires</h2>

<ul>
<li>Pour les versions de LuaTeX supérieures ou égales à <code>0.39.0</code>, une étape
supplémentaire est requise (à effectuer une seule fois), décrite dans <a href="http://weblog.elzevir.fr/2009/04/luatex-recent-sur-tex-live-complements/">le
billet suivant</a>.</li>
<li>Tout ceci concerne une version « nature » de TeX Live. Si vous utilisez les
paquets TeX Live de Debian, des paquets pour LuaTeX existent (dans sid et
testing) et fournissent des version relativement récentes de LuaTeX.</li>
</ul>

<h2>Le how-to et certaines explications</h2>

<p>Pour une fois, c&#8217;est un peu plus qu&#8217;un « comment j&#8217;ai fait », puisqu&#8217;au moins
une autre personne a testé. La première chose à faire est bien sûr de récupérer
le binaire d&#8217;une version récente de LuaTeX. On en trouve pour Linux et Windows
sur la <a href="http://foundry.supelec.fr/frs/?group_id=10">page Gforge de LuaTeX</a>, et pour d&#8217;autres plateformes, mais avec
potentiellement un peu plus de délai, sur la <a href="http://luatex.org/download.html">page téléchagement de
LuaTeX</a>. (Attention, sur la page Gforge, l&#8217;ordre est trompeur et les
version les plus récentes sont en bas de la page).</p>

<p>Il faut maintenant intégrer ce binaire à votre TeX Live. Si vous avez accepté
les réglages par défaut lors de l&#8217;installation, vos binaires « normaux » de TeX
Live sont sous</p>

<pre><code>/usr/local/texlive/2008/bin/&lt;arch&gt;-linux
C:\Program Files\texlive\2008\bin\win32
</code></pre>

<p>selon que vous êtes sous Linux ou Windows.  Nous allons placer les nouveaux
binaires dans un répertoire parallèle en remplaçant la dernière composante du
chemin ci-dessus par <code>i386-linux-latest</code> ou <code>win32-latest</code> par exemple. (Adaptez
au besoin.)</p>

<p>Cet emplacement n&#8217;est pas choisi au hasard : il y a dans TeX Live tout un tas de
fichiers que TeX et ses variantes on besoin de localiser. Comme il est a priori
possible d&#8217;installer TeX Live n&#8217;importe où sur le disque, il faut que les
programmes aient un moyen de s&#8217;y retrouver. Le moyen retenu (sous TeX Live) est
simple : le programme regarde où il se trouve sur le disque, et en déduit où se
trouvent les autres fichiers. Il faut donc bien prendre garde de ne pas le
placer n&#8217;importe où.</p>

<p>Il faut ensuite ajouter ce répertoire à son <code>PATH</code>, avant le répertoire par
défaut de TeX Live. Je reviendrai là-dessus dans la partie spécifique au système
d&#8217;exploitation.</p>

<p>Il faut ensuite re-générer les formats. Si cette dernière phrase vous paraît
incongrue, un mot d&#8217;explication. Quand on utilise la commande <code>latex</code>, il y a en
fait (essentiellement) deux fichiers en jeu : le programme <code>pdftex</code> (ou
<code>pdftex.exe</code>) et le « format » <code>latex.fmt</code>. Ce dernier comprend des définitions
(comme par exemple celle de <code>\documentclass</code>) sous une forme « pré-compilée » et
très rapide à charger. Les fichiers <code>.fmt</code> utilisent un format binaire qui ne
peut pas être partagé entre différentes versions du programme sous-jacent. Je
répète donc : il faut ensuite re-générer les formats (en espérant que ça passe
mieux cette fois).</p>

<p>C&#8217;est très simple, en ligne de commande on fait</p>

<pre><code>fmtutil-sys --byfmt luatex
fmtutil-sys --byfmt pdfluatex
fmtutil-sys --byfmt lualatex
fmtutil-sys --byfmt pdflualatex
</code></pre>

<p>(Muni des privilèges suffisants pour écrire dans les répertoire de TeX Live.
Pour un utilisateur d&#8217;Unix, ça peut impliquer l&#8217;usage de <code>sudo</code> où <code>su</code>.)</p>

<p>Bien, on a fait la moitié du travail pour pouvoir lancer une commande comme
<code>pdflualatex</code> : créer un fichier <code>pdflualatex.fmt</code> viable. L&#8217;autre moitié est de
faire comprendre à notre système d&#8217;exploitation que quand on lance la commande
<code>pdflualatex</code>, c&#8217;est en fait notre nouveau programme <code>luatex</code> (ou <code>luatex.exe</code>)
qu&#8217;il faut utiliser. Cette partie dépend du système d&#8217;exploitation.</p>

<h3>Sous Linux, Mac OS, ou autre variante d&#8217;Unix</h3>

<p>C&#8217;est très simple, il suffit, dans notre répertoire <code>ii386-linux-latest</code> (ou
autre) nouvellement créé, et qui ne contient que <code>luatex</code> pour le moment, de
créer des liens symboliques vers celui-ci.</p>

<pre><code>for l in pdfluatex lualatex pdflualatex texlua texluac; do
ln -s luatex $l; done
</code></pre>

<p>Hop, c&#8217;est tout. Vous avez remarqué <code>texlua</code> et <code>texluac</code> ? C&#8217;est pour utiliser
LuaTeX comme un simple interpréteur Lua (resp. un compilateur de Lua en
<em>bytecode</em>). Utile si vous voulez pratiquer tranquillement Lua, ou écrire des
scripts portable à utiliser dans le contexte de TeX (par exemple, <code>texdoc</code> est
un script interprété par <code>texlua</code> depuis TeX Live 2008, ce qui lui permet de
fonctionner aussi sur windows, contrairement à la précédente implémentation sous
forme de script shell).</p>

<p>Maintenant, ça vous dérange peut-être d&#8217;avoir dans votre <code>PATH</code> deux répertoires
rien que pour TeX Live. Moi ça me dérange en tout cas. Pas de problème, on fait
(par exemple)</p>

<pre><code>for f in ../x86_64-linux/*; do ln -s $f; done
</code></pre>

<p>pour créer des liens symboliques de notre nouveau répertoire vers les fichiers
de l&#8217;ancien, et on peut ainsi ne garder que le nouveau dans le <code>PATH</code>.</p>

<p>Attention, si lors de l&#8217;installation vous aviez choisi l&#8217;option « ajouter des
liens symboliques dans les répertoires standard », oubliez tout ce que j&#8217;ai dit
précédemment sur le <code>PATH</code>. Placez simplement des liens symboliques vers
<code>.../bin/&lt;arch&gt;-latest</code> en amont de <code>/usr/local/bin</code> dans votre <code>PATH</code>. En
principe, <code>~/bin</code> fait très bien l&#8217;affaire pour ça (enfin, peut-être pas sous OS
X). Il vous faut bien sûr créer des liens symboliques avec tous les noms
voulus. Par contre, il faut continuer à placer le binaire à l&#8217;endroit
indiqué (et pas par exemple directement dans votre <code>~/bin</code>, car c&#8217;est ce qui
compte pour qu&#8217;il trouve ensuite les fichiers de TeX Live.</p>

<h3>Sous windows</h3>

<p>Ici, on n&#8217;a pas de liens symboliques (quoi que&#8230; sous NTFS je crois que si,
mais je ne sais pas faire). Qu&#8217;à cela ne tienne, on va faire des copies. On
crée donc dans notre nouveau répertoire <code>win32-latest</code> des copies de
<code>luatex.exe</code> nommées <code>pdfluatex.exe</code>, <code>lualatex.exe</code>, <code>pdflualatex.exe</code>,
<code>texlua.exe</code> et <code>texluac.exe</code> (voir ci-dessus pour l&#8217;utilité de ces deux
derniers).</p>

<p>Si vous souhaitez n&#8217;avoir qu&#8217;un seule répertoire TeX Live dans votre <code>PATH</code>, le
plus simple est de commencer par recopier le précédent sous le nouveau nom, et
ensuite seulement de remplacer les fichiers dans la copie.</p>

<h2>Dernières remarques</h2>

<p>LuaTeX est <strong>vraiment</strong> en bêta. Ne l&#8217;utilisez qu&#8217;à des fins de test ou de
développement. Par ailleurs, une bonne raison pour en installer une version plus
récente que 0.25.4 est que cette dernière souffre d&#8217;un problème important. Elle
ne peut pas charger les fontes qui sont utilisée par défaut par LaTeX avec
<code>usepackage[T1]{fontenc}</code>. (Pour l&#8217;anecdote, ce n&#8217;est pas à proprement parler un
bug de LuaTeX : c&#8217;est une anomalie dans les fichiers <code>.tfm</code> de ces fontes, non
détectée par les variantes de TeX usuel. Dans un sens, LuaTeX avait « raison »
de ne pas les accepter, mais les version récentes préfèrent avoir tort et
fonctionner&#8230;)</p>

<p>Au passage, si vous voulez tester <code>pdflualatex</code>, attention, suite à des progrès
importants réalisé par LuaTeX (par rapport à pdfTeX) en matière d&#8217;encodages
d&#8217;entrées et de fontes, <code>inputenc</code> et <code>fontenc</code> ne sont pas actuellement
compatibles avec LuaTeX. Il suffit de supprimer <code>inputenc</code> et d&#8217;encoder son
fichier en utf-8 pour régler le premier point. Pour le deuxième, on peut quand
même utiliser <code>fontenc</code> avec <code>T1</code> en attendant, mais on aura des problèmes sur
certains caractères (tout ceux, heureusement rares, qui ne sont pas à la même
position dans latin1 et dans T1).</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.elzevir.fr/2009/02/integrer-un-luatex-recent-a-tex-live/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ma vie sans libc</title>
		<link>http://weblog.elzevir.fr/2009/01/ma-vie-sans-libc/</link>
		<comments>http://weblog.elzevir.fr/2009/01/ma-vie-sans-libc/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 02:46:09 +0000</pubDate>
		<dc:creator>mpg</dc:creator>
				<category><![CDATA[Informatique générale]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://weblog.elzevir.fr/2009/01/ma-vie-sans-libc/</guid>
		<description><![CDATA[Avoir des amis geeks, c&#8217;est mal. Ça pousse à parler de blagues de geek, ce
qui pousse à tester des trucs pas clairs. Pas plus tard qu&#8217;aujourd&#8217;hui, je
parlais à un ami du message marrant lancé par apt-get, aptitude ou dpkg
(je ne sais plus) quand on demande à désinstaller la libc : au lieu de
confirmer seulement en [...]]]></description>
			<content:encoded><![CDATA[<p>Avoir des amis <em>geeks</em>, c&#8217;est mal. Ça pousse à parler de blagues de <em>geek</em>, ce
qui pousse à tester des trucs pas clairs. Pas plus tard qu&#8217;aujourd&#8217;hui, je
parlais à un ami du message marrant lancé par <em>apt-get</em>, <em>aptitude</em> ou <em>dpkg</em>
(je ne sais plus) quand on demande à désinstaller la <a href="http://fr.wikipedia.org/wiki/Biblioth%C3%A8que_standard_du_C">libc</a> : au lieu de
confirmer seulement en appuyant sur <code>y</code>, on doit recopier textuellement une
longue phrase du style « Oui, je sais que ça a l&#8217;air bizarre, mais je suis un
grand garçon et je veux le faire quand même ». <span id="more-34"></span></p>

<p>Petite parenthèse pour qui se demande d&#8217;où vient cette idée de désinstaller la
<code>libc</code> : ça fait partie du folklore de <a href="news://fr.misc.bavarges.linux">fr.misc.bavardages.linux</a>, un
groupe <a href="http://www.usenet-fr.net/">iouzenette</a> ma foi fort sympathique (voir ses <a href="http://www.usenet-fr.net/fur/chartes/misc.bavardages.linux.html">conseils
d&#8217;utilisation</a> et notamment les liens de la section 4 (<em>alerte
procrastination</em>) mais aussi le <em><a href="http://hivernal.org/resources/static/FMBL/GFA">fortune-file</a></em> (alerte bis)). La
vérification du rapport avec la <a href="http://www.pafoo.net/uninstallglibc/uninstglibc.html">désinstallation de <code>libc</code></a> est laissée
au lecteur.</p>

<p>Bref, souhaitant retrouver les termes exacts de la phase de sécurité en question
(pour vérifier si elle suppose bien que l&#8217;utilisateur est de sexe masculin, ce
qui ne serait pas forcément sexiste : une fille est bien trop responsable pour
désinstaller sa <code>libc</code>&#8230;), me voilà parti à bidouiller les trois commandes
sus-citées pour leur faire cracher le message. Quand, sûr de moi car n&#8217;ayant pas
précisé <code>--force-remove-essential</code> je tape (en <code>root</code> sur mon <em>laptop</em>, qui est
ma machine principale) :</p>

<pre><code>dpkg --force-depends --remove libc6
</code></pre>

<p>à ma grande surprise ça « marche » (si l&#8217;on peut dire), sauf les scripts
post-désinstallation, qui échouent, comme on devrait s&#8217;en douter. J&#8217;ai alors le
plaisir d&#8217;entretenir avec mon <em>shell</em> préféré un dialogue aussi réjouissant que</p>

<pre><code>% /bin/ls
zsh: command not found: /bin/ls
% ??!
</code></pre>

<p>le temps de réaliser ce que je viens de faire.</p>

<p>Arrivés à ce stade de votre lecture, vous êtes sans doute mort de rire. Même si
j&#8217;en suis heureux, ce n&#8217;est pas la finalité principale de ce blog, qui avait
plutôt pour but de partager des astuces techniques en LaTeX, ou en <em>geekeries</em>
linuxiennes. La partie technique arrive : je vais vous expliquer comment il est
facile de réinstaller sa <code>libc</code>. (Je lis la déception dans votre regard :
rassurez-vous, ça m&#8217;a quand même pris un bon moment avant de comprendre que
c&#8217;était facile.)</p>

<p>On s&#8217;arme bien sûr d&#8217;un bon Live CD, car le système n&#8217;est pas <em>bootable</em> (on
pourrait en fait, avec l&#8217;option <code>init=/sbin/sash</code> mais je ne pense pas que ça
avance à grand chose). Mon choix se porte que <a href="http://grml.org/">grml</a> pour sa parenté avec
Debian, son état d&#8217;esprit et sa finition que j&#8217;apprécie (je pratique aussi
<a href="http://www.sysresccd.org/Index.fr.php">sysresccd</a> à l&#8217;occasion). Je vous épargne les détails, mais je finis par
découvrir <a href="http://www.debian.org/doc/manuals/reference/ch-package.en.html#s-un-bootable">ici</a> l&#8217;option <code>--root</code> de <code>dpkg</code> qui semble résoudre mon
problème.</p>

<p>Après avoir monté toutes les partition adéquates de mon disque dur (petit
instant de doute en voyant qu&#8217;il n&#8217;y a rien dans <code>/dev/mapper</code>, mais la FAQ grml
me conseille <code>Start lvm</code> et a bien raison), j&#8217;essaie et là c&#8217;est le drame : la
version de <code>dpkg</code> du CD grml gravé il y a un an est trop vieille pour toucher à
ma <em>Lenny</em> (la prochaine version de Debian) à jour. Yaka en graver une plus
récente. Ou pas, parce que graver un CD en tournant sur Live CD, euh&#8230;
Bref, vivent le <em>boot</em> sur clé USB, et les <a href="http://wiki.grml.org/doku.php?id=usb">tutoriels</a> qui marchent du
premier coup (c&#8217;est aussi pour ça que j&#8217;aime grml).</p>

<p>Deuxième essai. Ok, <code>dpkg</code> fait de son mieux mais c&#8217;est le script d&#8217;installation
qui marche pas : <code>command not found: /bin/ls</code>, ça vous dit quelque chose ?
Visiblement <code>--root</code> en fait un peu trop. On passe donc au 6.3.7 de <a href="http://www.debian.org/doc/manuals/reference/ch-package.en.html#s-un-bootable">la
page</a> qui en parlait : faire soi-même le boulot de <code>dpkg</code>. Enfin, juste
une partie de son boulot, lui il est plus subtil. Mais ça suffit, ouf.</p>

<p>Donc résumé en deux mots, le <em>how-to</em> (même si le mieux c&#8217;est de pas commencer,
hein) :</p>

<ol>
<li>Démarrer sur Live CD, récent ou pas.</li>
<li>Télécharger le <code>.deb</code> de la <code>libc</code> sur <a href="http://packages.debian.org">http://packages.debian.org</a>.</li>
<li>Monter ses partoches ou volumes LVM du système cassé quelque part.</li>
<li><code>ar x lic6-*.deb</code> où vous voulez, puis <code>tar xf data.tar.gz</code> à la racine du
point de montage.</li>
<li>Redémarrage sur le système anciennement cassé, et <code>dpkg -i libc6-*.deb</code> quand
même, juste pour que les petits papiers de <code>dpkg</code> soient à jour.</li>
</ol>

<p>Morale de l&#8217;histoire : ne plus jamais tester des trucs idiots ailleurs que sur
une machine de test (fut-ce une machine virtuelle ou un simple <em>chroot</em>).</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.elzevir.fr/2009/01/ma-vie-sans-libc/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Noyau à la vanille façon Debian</title>
		<link>http://weblog.elzevir.fr/2008/12/noyau-a-la-vanille-facon-debian/</link>
		<comments>http://weblog.elzevir.fr/2008/12/noyau-a-la-vanille-facon-debian/#comments</comments>
		<pubDate>Sat, 06 Dec 2008 20:21:02 +0000</pubDate>
		<dc:creator>mpg</dc:creator>
				<category><![CDATA[Informatique générale]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[unix-admin]]></category>

		<guid isPermaLink="false">http://weblog.elzevir.fr/2008/12/noyau-a-la-vanille-facon-debian/</guid>
		<description><![CDATA[Aide-mémoire perso qui peut éventuellement servir à d&#8217;autres : compilation d&#8217;un
noyau Linux upstream en utilisant les outils fournis par Debian (Lenny) pour
construire un paquet .deb du noyau et l&#8217;installer sans douleur. 

Télécharger les sources du noyau sur kernel.org. Pour une version
stable (ex. aujourd&#8217;hui : 2.6.27.7), utiliser le lien F (full source) sur la
ligne.  Dans [...]]]></description>
			<content:encoded><![CDATA[<p>Aide-mémoire perso qui peut éventuellement servir à d&#8217;autres : compilation d&#8217;un
noyau Linux <em>upstream</em> en utilisant les outils fournis par Debian (Lenny) pour
construire un paquet <code>.deb</code> du noyau et l&#8217;installer sans douleur. <span id="more-31"></span></p>

<p>Télécharger les sources du noyau sur <a href="http://kernel.org/">kernel.org</a>. Pour une version
stable (ex. aujourd&#8217;hui : 2.6.27.7), utiliser le lien <strong>F</strong> (full source) sur la
ligne.  Dans tous les autres cas, il faut télécharger le patch (lien du numéro
de version, ex.  2.6.28-rc6) <em>et</em> la base à laquelle l&#8217;appliquer, donnée par le
lien <strong>B</strong> sur la même ligne. Dans les exemples qui suivent, je suppose que les
trucs sont enregistrés sous <code>~/tmp</code>.</p>

<p>Ajouter son utilisateur au groupe <code>src</code> si ce n&#8217;est pas déjà fait. Par
exemple :</p>

<pre><code># adduser mpg src
</code></pre>

<p>Puis se relogguer avec cet utilisateur pour que la modification soit effective.
Le vérifier en tapant <code>id</code> ou <code>groups</code>.</p>

<p>En utilisateur, aller dans <code>/usr/src</code>, y détruire le lien symbolique <code>linux</code>.
Décompresser l&#8217;archive des sources. S&#8217;il s&#8217;agit d&#8217;une version à patcher,
procéder comme dans l&#8217;exemple suivant.</p>

<pre><code>% tar xjf ~/tmp/linux-2.6.27.tar.bz
% bunzip2 ~/tmp/patch-2.6.28-rc6.bz2
% cp -r linux-2.6.27 linux-2.6.28-rc6
% cd linux-2.6.28-rc6
% patch -p1 &lt;~/tmp/patch-2.6.28-rc6
</code></pre>

<p>Une fois obtenue une belle arborescence des sources dûment patchée au besoin,
rétablir le lien symbolique <code>linux</code> vers sa racine.</p>

<p>Il faut maintenant configurer le nouveau noyau. Pour partir de la
configuration de l&#8217;ancien, faire par exemple</p>

<pre><code>% cp /boot/config-2.6.27.5 /usr/src/linux/.config
</code></pre>

<p>Aller alors dans <code>/usr/src/linux</code> et y lancer alors <code>make menuconfig</code>. (Il faut
sans doute installer un ou deux paquets pour ça, dont <code>libncurses-dev</code>et
peut-être d&#8217;autres.) Selon les besoins, sélectionner les drivers voulus (chez
moi, c&#8217;est <code>ath9k</code> qui m&#8217;a motivé à installer une version récente du noyau, et
que je vais activer la première fois dans Device driver -> Networks device
support -> Wireless Lan -> Atheros 802.11n wireless cards support).</p>

<p>Il est alors temps de construire le noyau. Pour cela, il faut avoir installé
les paquets nécessaires : <code>kernel-package</code>, <code>fakeroot</code>, <code>build-essential</code> et
<code>initramfs-tools</code> en font partie, et je crois qu&#8217;ils suffisent. Exécuter alors</p>

<pre><code>% fakeroot make-kpkg clean
% fakeroot make-kpkg --initrd kernel_image
</code></pre>

<p>(Si on envisage de faire plusieurs noyaux personnalisés successifs à partir
d&#8217;une même version <em>upstream</em>, on a intérêt à utiliser l&#8217;option
<code>--append-to-version=.20081107</code> (ou tout autre numéro) pour les distinguer et ne
pas mélanger leurs modules.) C&#8217;est en tout cas le moment de s&#8217;en jeter une
petite de son breuvage favori, ou de faire autre chose d&#8217;intéressant sur sa
machine si on elle a un double cœur.</p>

<p>Maintenant, la seule étape nécessitant les droits de <code>root</code> : l&#8217;installation
du paquet créé.</p>

<pre><code># dpkg -i /usr/src/linux-image-2.6.27.5_2.6.27.5-10.00.Custom_amd64.deb
</code></pre>

<p>Voilà, il ne reste plus qu&#8217;à rebooter sur le nouveau noyau, et éventuellement
recompiler les modules externes.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.elzevir.fr/2008/12/noyau-a-la-vanille-facon-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TeX Live 2008 à la vanille sur Debian-like</title>
		<link>http://weblog.elzevir.fr/2008/11/tex-live-2008-a-la-vanille-sur-debian-like/</link>
		<comments>http://weblog.elzevir.fr/2008/11/tex-live-2008-a-la-vanille-sur-debian-like/#comments</comments>
		<pubDate>Sat, 29 Nov 2008 23:15:16 +0000</pubDate>
		<dc:creator>mpg</dc:creator>
				<category><![CDATA[TeX et compagnie]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[texlive]]></category>
		<category><![CDATA[unix-admin]]></category>

		<guid isPermaLink="false">http://weblog.elzevir.fr/2008/11/tex-live-2008-a-la-vanille-sur-debian-like/</guid>
		<description><![CDATA[Suite notamment à une discussion sur fr.comp.text.tex, mais aussi pour me
servir d&#8217;aide-mémoire, voici une description de mon installation de TeX Live
2008 « à la vanille » (c&#8217;est-à-dire la version upstream non empaquetée par
Debian), et plus précisément de comment établir de bonnes relations entre cette
installation locale et la gestionnaire de paquets de Debian.


Premièrement, pourquoi avoir installé une [...]]]></description>
			<content:encoded><![CDATA[<p>Suite notamment à une discussion sur <code>fr.comp.text.tex</code>, mais aussi pour me
servir d&#8217;aide-mémoire, voici une description de mon installation de TeX Live
2008 « à la vanille » (c&#8217;est-à-dire la version <em>upstream</em> non empaquetée par
Debian), et plus précisément de comment établir de bonnes relations entre cette
installation locale et la gestionnaire de paquets de Debian.<br />
<span id="more-22"></span></p>

<p>Premièrement, pourquoi avoir installé une TeX Live nature plutôt que les paquets
TeX Live de Debian ?  Plusieurs raisons :</p>

<ul>
<li>L&#8217;équipe TeX de Debian n&#8217;a pas encore eu le temps d&#8217;empaqueter la version
2008, et j&#8217;étais impatient de jouer avec les nouveautés de cette version.</li>
<li>La version 2008 de TeX Live possède son propre gestionnaire de paquet, et je
ne sais pas comment il sera utilisable dans la version Debian de la chose :
dans le doute, installer la version nature me paraît raisonnable.</li>
<li>Une raison personnelle : étant développeur TeX Live, il me paraît naturel
d&#8217;utiliser la version nature pour mieux la connaître.</li>
</ul>

<p>Maintenant, le problème qui se pose avec les installations locales, c&#8217;est que le
gestionnaire de paquets de la distribution n&#8217;en est a priori pas au courant, et
qu&#8217;il faudrait qu&#8217;il en tienne compte dans ses calculs de dépendance pour ne pas
installer une deuxième version de ce qu&#8217;on a déjà installé. (On peut bien sûr
choisir d&#8217;installer côte à côte une TeX Live de Debian et une nature, mais il
faut être sûr de bien contrôler son environnement si on veut éviter les
problèmes.)</p>

<p>La solution proposée par Debian tient en un mot : <code>equivs</code>. Ce petit paquet
contient ce qu&#8217;il faut pour créer facilement des paquets Debian ne contenant
rien à part des informations de dépendances pour APT. Voyons comment s&#8217;en servir
pour créer un paquet <code>texlive-local</code> qui informera APT qu&#8217;on a déjà une TeX
Live, merci. On commence par installer <code>equivs</code> et se mettre dans un répertoire
temporaire de travail (je suppose que <code>~/tmp</code> existe et que c&#8217;est là-dessous
qu&#8217;on aime travailler). On commence alors par utiliser <code>equivs-control</code>.</p>

<pre><code># aptitude install equivs
$ mkdir ~/tmp/tl-loc
$ cd !$
$ equivs-control texlive-local
</code></pre>

<p>La dernière ligne a pour effet de préparer un squelette fichier de contrôle pour
notre futur paquet. C&#8217;est là qu&#8217;on va indiquer à quels paquets Debian réels
correspond notre installation locale, grâce à la ligne <code>Provides:</code>. On édite
aussi quelques autres informations au passage (champs <code>Package</code>, <code>Version</code>,
<code>Maintainner</code> et <code>Description</code>) ; le fichier obtenu est le suivant.</p>

<pre><code>Section: misc
Priority: optional
Standards-Version: 3.6.2

Package: texlive-local
Version: 2008-1
Maintainer: MPG &lt;mpg@roth.elzevir.fr&gt;
Provides: cm-super, cm-super-minimal, context, latex-beamer,
 latex-cjk-all, latex-cjk-chinese, latex-cjk-chinese-arphic-bkai00mp,
 latex-cjk-chinese-arphic-bsmi00lp, latex-cjk-chinese-arphic-gbsn00lp,
 latex-cjk-chinese-arphic-gkai00mp, latex-cjk-common, latex-cjk-japanese,
 latex-cjk-japanese-wadalab, latex-cjk-korean, latex-cjk-thai,
 latex-sanskrit, latex-xcolor, lmodern, luatex, musixtex, pgf, prosper,
 tex4ht, tex4ht-common, texinfo, texlive-base, texlive-base-bin,
 texlive-base-bin-doc, texlive-bibtex-extra, texlive-common,
 texlive-doc-base, texlive-doc-bg, texlive-doc-cs+sk, texlive-doc-de,
 texlive-doc-el, texlive-doc-en, texlive-doc-es, texlive-doc-fi,
 texlive-doc-fr, texlive-doc-it, texlive-doc-ja, texlive-doc-ko,
 texlive-doc-mn, texlive-doc-nl, texlive-doc-pl, texlive-doc-pt,
 texlive-doc-ru, texlive-doc-th, texlive-doc-tr, texlive-doc-uk,
 texlive-doc-vi, texlive-doc-zh, texlive-extra-utils, texlive-font-utils,
 texlive-fonts-extra, texlive-fonts-extra-doc, texlive-fonts-recommended,
 texlive-fonts-recommended-doc, texlive-formats-extra, texlive-full,
 texlive-games, texlive-generic-extra, texlive-generic-recommended,
 texlive-humanities, texlive-humanities-doc, texlive-lang-african,
 texlive-lang-arab, texlive-lang-armenian, texlive-lang-croatian,
 texlive-lang-cyrillic, texlive-lang-czechslovak, texlive-lang-danish,
 texlive-lang-dutch, texlive-lang-finnish, texlive-lang-french,
 texlive-lang-german, texlive-lang-greek, texlive-lang-hebrew,
 texlive-lang-hungarian, texlive-lang-indic, texlive-lang-italian,
 texlive-lang-latin, texlive-lang-manju, texlive-lang-mongolian,
 texlive-lang-norwegian, texlive-lang-other, texlive-lang-polish,
 texlive-lang-portuguese, texlive-lang-spanish, texlive-lang-swedish,
 texlive-lang-tibetan, texlive-lang-ukenglish, texlive-lang-vietnamese,
 texlive-latex-base, texlive-latex-base-doc, texlive-latex-extra,
 texlive-latex-extra-doc, texlive-latex-recommended,
 texlive-latex-recommended-doc, texlive-latex3, texlive-math-extra,
 texlive-metapost, texlive-metapost-doc, texlive-music, texlive-omega,
 texlive-pictures, texlive-pictures-doc, texlive-plain-extra,
 texlive-pstricks, texlive-pstricks-doc, texlive-publishers,
 texlive-publishers-doc, texlive-science, texlive-science-doc,
 texlive-xetex, tipa, 
Architecture: all
Description: Installation locale de TeX Live.
 Installation locale d'une TeX Live nature complete.
</code></pre>

<p>C&#8217;est presque fini. Maintenant que notre fichier de contrôle est prêt, on peut
créer le paquet et l&#8217;installer :</p>

<pre><code>$ equivs-build texlive-local
# dpkg -i texlive-local_2008-1_all.deb
</code></pre>

<p>(Seule le dernière étape se fait en root ou avec <code>sudo</code> : dans tous mes
exemples, <code>$</code> ou <code>%</code> représent un shell utilisateur, et <code>#</code> un shell root.)
On peut aussi si on le souhaite sauvegarder le paquet Debian créé :
personnellement, je garde une copie de tous mes paquets créés localement dans
<code>/usr/local/debs</code>.</p>

<p>Enfin, j&#8217;ai quand même installé <code>lmodern</code>, et <code>tex-common</code> dont il dépend,
depuis les dépôts Debian : le but est simplement d&#8217;enregistrer ces polices au
niveau de <code>defoma</code> et de <code>X11</code>. (Si j&#8217;étais un peu moins pataud en fontes, je le
ferais à la main.) Le paquet <code>tex-common</code> ne risque pas d&#8217;interférer avec mon
installation : il contient essentiellement des scripts de gestion propres à
Debian.</p>

<p>Je peux ainsi installer (depuis les dépôts Debian) des éditeurs comme Kile ou
TeXmaker, voire le module aucTeX pour Emacs (que j&#8217;essaierai un jour lointain,
quand j&#8217;aurai beaucoup de temps) sans qu&#8217;Aptitude n&#8217;essaie de m&#8217;installer le
moitié d&#8217;une TeX Live Debian en plus comme dépendances.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.elzevir.fr/2008/11/tex-live-2008-a-la-vanille-sur-debian-like/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>MinionPro sous pdfTeX</title>
		<link>http://weblog.elzevir.fr/2008/09/minionpro-sous-pdftex/</link>
		<comments>http://weblog.elzevir.fr/2008/09/minionpro-sous-pdftex/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 16:45:50 +0000</pubDate>
		<dc:creator>mpg</dc:creator>
				<category><![CDATA[TeX et compagnie]]></category>
		<category><![CDATA[fontes]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[latex]]></category>

		<guid isPermaLink="false">http://weblog.elzevir.fr/2008/09/minionpro-sous-pdftex/</guid>
		<description><![CDATA[Je n&#8217;ai pas encore finit de lire The Elements of Typographic Style
mais j&#8217;ai déjà eu le temps d&#8217;apprécier la qualité de l&#8217;ouvrage et de se
composition, notamment la police principale, Minion. Il se trouve que j&#8217;ai
justement la version (très complète) incluse dans les Adobe Type Classics for
Learning (une collection de fontes Adobe bon marché pour les [...]]]></description>
			<content:encoded><![CDATA[<p>Je n&#8217;ai pas encore finit de lire <em><a href="http://www.amazon.fr/Elements-Typographic-Style-Version-3-1/dp/toc/0881792063">The Elements of Typographic Style</a></em>
mais j&#8217;ai déjà eu le temps d&#8217;apprécier la qualité de l&#8217;ouvrage et de se
composition, notamment la police principale, <em>Minion</em>. Il se trouve que j&#8217;ai
justement la version (très complète) incluse dans les <em><a href="http://www.adobe.com/education/products/typeclassics.html">Adobe Type Classics for
Learning</a></em> (une collection de fontes Adobe bon marché pour les étudiants),
et naturellement j&#8217;ai envie de l&#8217;utiliser dans mes documents LaTeX.</p>

<p>Pour cela, on peut bien sûr utiliser XeLaTeX et l&#8217;excellent module
<em><a href="http://ctan.org/pkg/fontspec">fontspec</a></em>, ou convertir les polices au format PostScript Type 1, et générer
les fichiers (<code>tfm</code>, <code>vf</code>, <code>fd</code>,&#8230;) dont ont besoin (pdf)TeX et LaTeX pour les
utiliser. Je me propose ici de vous exposer comment j&#8217;ai mis en oeuvre cette
deuxième option,
<span id="more-20"></span>
 qui, on le verra dans un prochain billet, est également
utile avec XeLaTeX, en attendant un meilleur support de l&#8217;OpenType mathématique,
et une police mathématique OpenType accordée à Minion (peut-être <a href="http://river-valley.tv/conferences/tug2008/#0202-Johannes_Kuster">Minion Math</a>
?).</p>

<p>Tout le travail pénible et déjà été fait pour nous : on trouve sur le CTAN les
fichiers de support nécessaires, et un script pour la conversion des polices
elles-même, dans le paquet <a href="http://ctan.org/pkg/minionpro">minionpro</a>. Les fichiers dont vous avez besoin
dépendent de votre version de Minion. Parcourez le <a href="http://mirror.ctan.org/fonts/minionpro/README">README</a> pour savoir
comment adapter les explications ci-dessous.</p>

<p>Avant toute chose, vérifiez de vous avez installé <code>lcdf-typetools</code>, la
collection d&#8217;outils utilisée par les script de conversion. Puis créez un
répertoire temporaire, récupérez et décompressez les fichiers nécessaires.</p>

<pre><code>% mkdir tmp/minionpro
% cd !$
% wget http://mirror.ctan.org/fonts/minionpro/{README,enc-1.000.zip,metrics-base.zip,metrics-full.zip,metrics-opticals.zip,scripts.zip}
% for i in *.zip; do unzip $i; done
</code></pre>

<p>Il s&#8217;agit alors de copier dans le répertoire <code>otf</code> créé les fichiers de Minion
au format OpenType. Vous êtes alors prêts à lancer la conversion et à placer le
résultat dans un endroit approprié.</p>

<pre><code>%  cp ~/.fonts/Adobe/Western\ Fonts/Minion\ Pro\ Opticals/* otf
% ./convert.sh
% mkdir -p fonts/type1/adobe
% mv pfb !$/MinionPro
</code></pre>

<p>La dernière étape consiste à intégrer les fichiers au reste de votre
distribution TeX. Si vous n&#8217;êtes pas administrateur sur la machine en question,
ou ne souhaitez installer les fontes que pour vous, remplacez le répertoire
<code>TEXMF</code> de base par votre <code>TEXMFHOME</code>, et la commande <code>updmap-sys</code> par <code>updmap</code>.</p>

<pre><code>% cp -r doc fonts tex /usr/local/texlive/texmf-local
% mktexlsr !$
% updmap-sys --enable Map MinionPro.map
</code></pre>

<p>Voilà, c&#8217;est fini (c&#8217;était facile, hein ?), il ne vous reste plus qu&#8217;à tester.
Chez moi, ça marche avec pdflatex, latex+dvips+pstopdf, et latex+xdvipdfmx. Il
faut aussi avoir le paquet MnSymbol pour les maths, j&#8217;ai supposé qu&#8217;il était
déjà installé.</p>

<p>Un dernier mot d&#8217;avertissement : comme tous les <code>how-to</code> ici, c&#8217;est plutôt un «
comment j&#8217;ai fait chez moi pour que ça marche chez moi ». En particulier, je
fais les suppositions suivantes :</p>

<ul>
<li>on est sous Linux, le shell est zsh ou un truc voisin (bash doit convenir) ;</li>
<li>la distribution TeX est une TeX Live « nature », les chemins changent sinon ;</li>
<li>l&#8217;utilisateur qui fait la dernière étape a les droits en écriture sur
l&#8217;arborescence utilisée. Chez moi, j&#8217;ai donné à l&#8217;utilisateur <code>mpg</code> (moi) les
droits sur <code>/usr/local/texlive</code> : ça m&#8217;évite de passer <code>root</code> ou d&#8217;utiliser
<code>sudo</code> chaque fois que je veux bidouiller ma TeX Live.</li>
</ul>

<p>Amusez-vous bien avec cette jolie fonte, et faites de beaux documents !</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.elzevir.fr/2008/09/minionpro-sous-pdftex/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wordpress à ma sauce (partie 1)</title>
		<link>http://weblog.elzevir.fr/2008/07/wordpress-a-ma-sauce-partie-1/</link>
		<comments>http://weblog.elzevir.fr/2008/07/wordpress-a-ma-sauce-partie-1/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 15:07:37 +0000</pubDate>
		<dc:creator>mpg</dc:creator>
				<category><![CDATA[Informatique générale]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://weblog.elzevir.fr/2008/07/wp-syntax-ca-a-lair-bien/</guid>
		<description><![CDATA[Bon, ça faisait donc plus d&#8217;un mois que je n&#8217;avais pas posté ici. Pas bien.
Reprenons. Je viens donc de mettre la touche (pour l&#8217;instant) finale à mon
installation Wordpress en ajoutant la dernière brique qui me paraissait
indispensable pour publier facilement de jolis billets : wp-syntax. Mais
reprenons à partir du début.

Le première point qui m&#8217;a frappé en [...]]]></description>
			<content:encoded><![CDATA[<p>Bon, ça faisait donc plus d&#8217;un mois que je n&#8217;avais pas posté ici. Pas bien.
Reprenons. Je viens donc de mettre la touche (pour l&#8217;instant) finale à mon
installation Wordpress en ajoutant la dernière brique qui me paraissait
indispensable pour publier facilement de jolis billets : wp-syntax. Mais
reprenons à partir du début.</p>

<p>Le première point qui m&#8217;a frappé en essayant Wordpress, c&#8217;est que jamais je ne
pourrai m&#8217;habituer au pseudo-éditeur de texte en ligne qu&#8217;il propose par défaut
pour rédiger les billets. 
<span id="more-8"></span>
 J&#8217;ai pensé un moment copier-coller depuis vim,
mais c&#8217;est pénible, et de plus <abbr title="WordPress">WP</abbr> fait par défaut subir à mon texte un
traitement bizarre qui remplace les fins de lignes par des balises <code>&lt;br /&gt;</code> :
pénible, quand on édite sur 80 colonnes. (Je reviendrai sur ces traitements dans
le prochain billet.)</p>

<p>Pour l&#8217;intégration de vim et de <abbr title="WordPress">WP</abbr>, j&#8217;ai gougueuler un peu à tout hasard, et
après avoir trouvé une extension Firefox qui permettrait d&#8217;éditer n&#8217;importe quel
champ de texte d&#8217;une page ouèbe dans vim (ou emacs pour ceux qui y tiennent), ce
qui a l&#8217;air prometteur mais ne tient malheureusement pas ses promesse après 5
minutes d&#8217;essai/combat, j&#8217;ai plutôt rapidement trouvé le Nirvana, sous la forme
de <a href="http://friggeri.net/blog/2007/07/13/vimpress">vimpress</a>, un <a href="http://www.vim.org/scripts/script.php?script_id=1953">plugin
vim</a>.</p>

<p>L&#8217;idée est très simple : <abbr title="WordPress">WP</abbr> propose plusieurs <abbr title="Advanced programming interface">API</abbr> utilisant le protocole
<a href="http://en.wikipedia.org/wiki/Xml-rpc"><abbr title="XML remote procedure call">XMLRPC</abbr></a>. En gros, ce protocole (pour ce que j&#8217;en comprends) est très
générique et permet de représenter en <abbr title="eXtensible Markup Language">XML</abbr> quelques types de données naturels
dans les langages courants. À partir de là, on peut définir facilement des type
de données « billet de blog », « liste de billets », etc. et les échangers en
<abbr title="eXtensible Markup Language">XML</abbr>.  Pour l&#8217;utilisateur-programmeur, c&#8217;est magique : modulo l&#8217;existence d&#8217;une
bibliothèque <abbr title="XML remote procedure call">XMLRPC</abbr> dans son langage favori, on a un type de données dans ce
langage qui réprésente un billet de blog, et une fonction simple pour le
récupérer ou l&#8217;envoyer.</p>

<p><a href="http://friggeri.net/blog/2007/07/13/vimpress">vimpress</a>, c&#8217;est l&#8217;implémentation de tout ça sous la forme d&#8217;un plugin vim en
python, utilisant l&#8217;<abbr title="Advanced programming interface">API</abbr> <a href="http://www.sixapart.com/developers/xmlrpc/movable_type_api/">MovableType</a>, et sous <abbr title="General Public Licence">GPL</abbr>. (Il faut donc avoir une
version de vim compilée avec le support python, j&#8217;en reparlerai sans doute un de
ces jours.) C&#8217;est bel et bon, mais ça un défaut : ça ne gère pas la
fonctionalité qui permet d&#8217;affiicher seulement les première lignes d&#8217;un billets
comme je le fais sur le page d&#8217;accueil : quand on tente de récupérer un tel
billet pour l&#8217;éditer, on reçoit seulement ses prmières lignes, justement.</p>

<p>Heureusement, après avoir un peu fouillé, on finit par comprendre des choses sur
l&#8217;<abbr title="Advanced programming interface">API</abbr> metaWeblog (à mon avis mal documentée : là où j&#8217;ai le mieux compris, c&#8217;est
dans le source PHP de <abbr title="WordPress">WP</abbr>), à savoir que les premières lignes d&#8217;un message et sa
suite sont deux éléments metaWeblog distincts, à savoir <code>description</code> et
<code>mt_text_more</code>. Heureusement aussi que python est facile à lire et à éditer même
si on ne le connait pas : quelques temps après, j&#8217;avais patché avec succès ma
version locale de vimpress.</p>

<p>Bref, c&#8217;est maintenant un plaisir pour moi de pouvoir éditer mes billets sous
vim, confortablement. Pour augmenter ce confort, je rédige en <a href="http://daringfireball.net/projects/markdown/">markdown</a> (et
plus précisément en <a href="http://michelf.com/projects/php-markdown/extra/">markdown extra</a>), mais je vous ai déjà assez ennuyé
pour aujourd&#8217;hui : ce sera l&#8217;objet du prochain billet.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.elzevir.fr/2008/07/wordpress-a-ma-sauce-partie-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installation Wordpress sur Apache sur Debian</title>
		<link>http://weblog.elzevir.fr/2008/06/installation-wordpress-sur-apache-sur-debian/</link>
		<comments>http://weblog.elzevir.fr/2008/06/installation-wordpress-sur-apache-sur-debian/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 21:46:38 +0000</pubDate>
		<dc:creator>mpg</dc:creator>
				<category><![CDATA[Informatique générale]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[unix-admin]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://weblog.elzevir.fr/?p=5</guid>
		<description><![CDATA[En guise de premier article, un how-to de circonstance : tout frais avant que
j&#8217;aie oublié. Et un avertissement pour inaugurer le tag « how-to » : il ne faut
pas le lire « comment faire », mais plutôt « comment j&#8217;ai fait »&#8230;

Tout d&#8217;abord, j&#8217;ai lancé un petit aptitude install wordpress et commencé à
regarder ce qui [...]]]></description>
			<content:encoded><![CDATA[<p>En guise de premier article, un how-to de circonstance : tout frais avant que
j&#8217;aie oublié. Et un avertissement pour inaugurer le tag « how-to » : il ne faut
pas le lire « comment faire », mais plutôt « comment j&#8217;ai fait »&#8230;</p>

<p>Tout d&#8217;abord, j&#8217;ai lancé un petit <code>aptitude install wordpress</code> et commencé à
regarder ce qui se trouvait dans <code>/u/s/d/wordpress</code>. Il y avait un <code>README</code> et
des exemples de configuration Apache et de script pour aider à créer une base
mysql et permettre à wordpress d&#8217;y accéder.
<span id="more-5"></span></p>

<p>J&#8217;ai d&#8217;abord été surpris de constater que le script échouait, tout simplement
parce que je n&#8217;avais pas de serveur mysql qui tournait. Enquête faite,
mysql-server est simplement suggéré par wordpress et pas installé d&#8217;office, car
on pourrait en principe utiliser une <abbr title="base de données">bdd</abbr>
distante. Soit, j&#8217;installe <code>mysql-server-5.0</code> et tout marche.</p>

<p>Mais après quelques minutes à configurer la chose, je change d&#8217;avis et me met à
penser que c&#8217;est mieux d&#8217;installer wordpress à la main dans mon home : je trouve
lourd d&#8217;avoir à être root pour installer des thèmes par exemple. Donc on efface
tout et on recommence, sauf qu&#8217;avant de désinstaller on dit <code>aptitude
unmarkauto</code> avec la liste des dépendances de wordpress histoire de les garder
sous le coude.</p>

<p>Bref, je suis donc parti du site <a href="http://fr.wordpress.org/">http://fr.wordpress.org/</a>, j&#8217;ai téléchargé
l&#8217;archive et l&#8217;ai dézippée dans <code>~/www/weblog</code>. J&#8217;ai alors suivi les
instructions en bas de page et plus spécifiquement celles présentes
<a href="http://codex.wordpress.org/Installing_WordPress">ici</a> pour la création et
configuration de la bdd. Tout a bien marché.</p>

<p>Par contre, en testant, j&#8217;ai une mauvaise surprise, provenant des exemples de
<code>.htaccess</code> préalablement recopiés : il semblerait que la directive <code>ErrorLog</code>,
qui ne provoquait pas d&#8217;erreur à la relecture de la configuration, faisait par
contre tout bonnement mourir le serveur (dans des souffrances atroces,
j&#8217;imagine) quand on tentait d&#8217;accéder à la page. J&#8217;ai abandonné l&#8217;idée
d&#8217;utiliser cette fonctionnalité pour le moment.</p>

<p>L&#8217;autre petit souci est survenu quand j&#8217;ai voulu configurer des jolis
<em>permaliens</em> : d&#8217;une part il faut penser à mettre le code aimablement fournit
par wordpress dans une directive <code>&lt;Directory&gt;</code> comme nous l&#8217;apprend le message
d&#8217;erreur. D&#8217;autre part, c&#8217;est stupide mais il faut y penser : il faut activer
<code>mod_rewrite</code> <img src='http://weblog.elzevir.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<p>Pour finir, deux mots sur la configuration d&#8217;Apache. Comme souvent chez Debian,
c&#8217;est un peu sophistiqué mais assez bien fait : pour les sites comme pour les
modules, il y a un répertoire <code>*-available</code> et un <code>*-enabled</code> et on active les
trucs en faisant des liens symboliques du deuxième vers le premier. J&#8217;en profite
d&#8217;ailleurs pour place dans le home de mon utilisateur les fichiers de
configuration propres à chacun des serveurs virtuels, et lui donne le droit
grâce à sudo de demander à Apache de relire ses fichiers de configuration.</p>

<p>Je trouve ça plus pratique que de lister les sites virtuels dans le fichier de
conf principal d&#8217;Apache puis d&#8217;utiliser des <code>.haccess</code>. D&#8217;une part, au moment du
<code>reload</code> on a les messages d&#8217;erreur si les directives ne sont pas correctes,
d&#8217;autre part, ça fait toujours un fichier de moins à analyser chaque requête
pour Apache.</p>

<p>Bref, mon <code>~/www/weblog.conf</code> Kimarch® est le suivant :</p>

<pre><code>&lt;VirtualHost *:*&gt;
    ServerName weblog.elzevir.fr
    DocumentRoot /home/mpg/www/weblog
    &lt;Directory /&gt;
        Options FollowSymLinks
        AllowOverride All
    &lt;IfModule mod_rewrite.c&gt;
        RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]
    &lt;/IfModule&gt;
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</code></pre>

<p>Je crois n&#8217;avoir rien oublié, tout a l&#8217;air de marcher pour le moment.</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.elzevir.fr/2008/06/installation-wordpress-sur-apache-sur-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
