aboutsummaryrefslogtreecommitdiff
path: root/fr_FR.ISO8859-1/books/handbook/ports
diff options
context:
space:
mode:
authorNik Clayton <nik@FreeBSD.org>1999-11-10 21:29:15 +0000
committerNik Clayton <nik@FreeBSD.org>1999-11-10 21:29:15 +0000
commit0f9e3260d70b88672037b1ccf761db8079500840 (patch)
treef8ad8659aabb0980cf651bc5b5bfdf2d9b8337cb /fr_FR.ISO8859-1/books/handbook/ports
parent212679edca0d1e666ee1cffbbd82e2ddba57c69a (diff)
downloaddoc-0f9e3260d70b88672037b1ccf761db8079500840.tar.gz
doc-0f9e3260d70b88672037b1ccf761db8079500840.zip
French translation tree, meet CVS, CVS, this is the French translation
tree. A round of applause, please, for Sebastien Gioria, Frederic Haby, and the other volunteers on the French FreeBSD Documentation Project. I haven't turned this on in the top level Makefile yet because I've almost certainly missed something. I want to be able to grab a copy of the tree after I've committed it and build it from scratch to make sure everything works before I break the website. . .
Notes
Notes: svn path=/head/; revision=6043
Diffstat (limited to 'fr_FR.ISO8859-1/books/handbook/ports')
-rw-r--r--fr_FR.ISO8859-1/books/handbook/ports/chapter.sgml5197
1 files changed, 5197 insertions, 0 deletions
diff --git a/fr_FR.ISO8859-1/books/handbook/ports/chapter.sgml b/fr_FR.ISO8859-1/books/handbook/ports/chapter.sgml
new file mode 100644
index 0000000000..461ba197cb
--- /dev/null
+++ b/fr_FR.ISO8859-1/books/handbook/ports/chapter.sgml
@@ -0,0 +1,5197 @@
+<!--
+ The FreeBSD Documentation Project
+ The FreeBSD French Documentation Project
+
+ $FreeBSD$
+ Original revision: n.nn
+-->
+
+ <chapter id="ports">
+ <title>Installer des applications du &ldquo;Catalogue des logiciels
+ port&eacute;s&rdquo;</title>
+
+ <para><emphasis>Contribution de &a.jraynard;.</emphasis></para>
+ &trans.a.haby;
+
+ <para>Le catalogue des logiciels port&eacute;s de FreeBSD vous permet de
+ compiler et d'installer une grande vari&eacute;t&eacute; d'applications avec
+ un minimum d'efforts.</para>
+
+ <para>Malgr&eacute; toutes les d&eacute;clarations exag&eacute;r&eacute;es sur les standards ouverts,
+ faire fonctionner un programme sur diff&eacute;rentes versions d'Unix
+ peut en r&eacute;alit&eacute; &ecirc;tre fastidieux et d&eacute;licat, comme tous ceux qui
+ ont essay&eacute; le savent. Vous aurez peut-&ecirc;tre la chance d'arriver
+ &agrave; compiler, installer o&ugrave; il faut et ex&eacute;cuter sans incident le
+ programme que vous voulez &ldquo;tel quel&rdquo;, mais c'est
+ malheureusement assez rare. Dans la plupart des cas, vous devrez
+ vous creuser un peu la t&ecirc;te, et il y a un certain nombre de programmes
+ qui vous donneront pr&eacute;maturement des cheveux blancs, ou m&ecirc;me une
+ calvitie chronique...</para>
+
+ <para>Certaines distributions de logiciels ont r&eacute;solu ce probl&egrave;me
+ en fournissant des proc&eacute;dures de configuration. Certaines sont tr&egrave;s
+ sophistiqu&eacute;es, mais ont une f&acirc;cheuse tendance &agrave; vous annoncer
+ triomphalement que votre syst&egrave;me est d'une esp&egrave;ce dont vous n'avez
+ jamais entendu parler et &agrave; vous poser un tas de questions qui
+ ressemblent plus &agrave; un examen de programmation syst&egrave;me Unix.
+ <literal>(La fonction gethitlist de votre syst&egrave;me vous rend-elle un
+ pointeur const sur un schmilblick ou un pointeur sur un schmilblick
+ const? Avez-vous la gestion des exceptions inconnues de style
+ Foonix? Et sinon, pourquoi?)</literal></para>
+
+ <para>Heureusement, gr&acirc;ce au catalogue des logiciels port&eacute;s, tout le
+ travail p&eacute;nible a d&eacute;j&agrave; &eacute;t&eacute; fait, et il vous suffit de taper
+ <command>make install</command> pour avoir un logiciel qui
+ fonctionne.</para>
+
+ <sect1>
+ <title>Pourquoi un catalogue des logiciels port&eacute;s?</title>
+
+ <para>Le syst&egrave;me FreeBSD de base comporte une grande vari&eacute;t&eacute; d'outils
+ et d'utilitaires syst&egrave;me, mais de nombreux logiciels d'usage
+ courant n'en font pas partie, et il y a de bonnes raisons &agrave;
+ cela:</para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>Il y a des programmes dont certains ne peuvent se passer
+ et que d'autres ne peuvent pas voir en peinture, un certain
+ &eacute;diteur bas&eacute; sur Lisp, par exemple.</para>
+ </listitem>
+
+ <listitem>
+ <para>Certains programmes sont trop sp&eacute;cialis&eacute;s pour faire partie
+ du syst&egrave;me de base (Conception Assist&eacute;e par Ordinateur, bases de donn&eacute;es).</para>
+ </listitem>
+
+ <listitem>
+ <para>Les programmes de la cat&eacute;gorie &ldquo;Je devrais y jeter
+ un coup d'oeil quand j'aurais cinq minutes&rdquo;, et qui n'ont
+ rien d'indispensable (certains langages, peut-&ecirc;tre).</para>
+ </listitem>
+
+ <listitem>
+ <para>Les programmes qui sont bien trop amusants pour &ecirc;tre fournis
+ avec un syst&egrave;me d'exploitation s&eacute;rieux comme FreeBSD ;-)</para>
+ </listitem>
+
+ <listitem>
+ <para>Peut importe la quantit&eacute; de programmes fournis de base,
+ les gens en veulent toujours plus, et il faut d&eacute;finir une
+ s&eacute;paration quelque part (sans quoi les distributions de FreeBSD
+ deviendraient absolument &eacute;normes).</para>
+ </listitem>
+
+ </orderedlist>
+
+ <para>Il serait &eacute;videmment irr&eacute;aliste d'attendre que chacun porte
+ ses programmes favoris &agrave; la main (sans mentionner la quantit&eacute;
+ invraisemblable de travail refait &agrave; chaque fois), le Projet
+ FreeBSD a donc mis en place une m&eacute;thode ing&eacute;nieuse d'utilisation
+ d'outils standard pour automatiser le processus.</para>
+
+ <para>C'est, au passage, une excellente illustration de la
+ &ldquo;mani&egrave;re Unix&rdquo; de faire en combinant un jeu
+ d'outils simples mais souples pour arriver &agrave; un m&eacute;canisme
+ tr&egrave;s puissant.</para>
+
+ </sect1>
+
+ <sect1>
+ <title>Comment fonctionne le catalogue des logiciels port&eacute;s?</title>
+
+ <para>Les logiciels sont typiquement distribu&eacute;s sur l'Internet sous
+ forme d'<link linkend="ports-tarball">archives</link> incluant un
+ fichier <filename>Makefile</filename>, le code source du programme
+ et habituellement quelques instructions (qui ne sont pas toujours
+ aussi instructives qu'elles pourraient l'&ecirc;tre), avec peut-&ecirc;tre aussi
+ une proc&eacute;dure de configuration.</para>
+
+ <para>Le sc&eacute;nario standard consiste &agrave; t&eacute;l&eacute;charger l'archive par FTP,
+ l'extraire quelque part, parcourir les instructions, faire les
+ modifications qui vous paraissent n&eacute;cessaires, lancer la proc&eacute;dure
+ de configuration pour mettre tout au point et utiliser la commande
+ <command>make</command> habituelle pour compiler et installer le
+ programme &agrave; partir du source.</para>
+
+ <para>Les logiciels port&eacute;s de FreeBSD utilisent toujours le m&eacute;canisme
+ des archives, mais se servent d'un
+ <link linkend="ports-skeleton">squelette</link> qui renferme
+ la &ldquo;connaissance&rdquo; n&eacute;cessaire pour pouvoir obtenir un
+ logiciel utilisable sous FreeBSD, plut&ocirc;t que d'attendre de
+ l'utilisateur qu'il se d&eacute;brouille. Ils comportent aussi leurs
+ propres
+ <link linkend="ports-makefile"><filename>Makefile</filename>s</link>,
+ de sorte que presque tous les logiciels port&eacute;s se compilent et
+ s'installent de la m&ecirc;me fa&ccedil;on.</para>
+
+ <para>Si vous regardez le squelette pour un logiciel port&eacute; (soit sur
+ <ulink url="file://localhost/usr/ports/devel/ElectricFence">votre
+ machine FreeBSD</ulink>, soit sur <ulink
+ url="ftp://ftp.freebsd.org/pub/FreeBSD/ports/devel/ElectricFence">le
+ site FTP</ulink>), et esp&eacute;rez y trouver toutes sortes de techniques
+ d'avant-garde, vous serez d&eacute;&ccedil;u par les quelques fichiers et
+ r&eacute;pertoires sans &eacute;clat que vous y verrez. (Nous parlerons bient&ocirc;t de
+ la fa&ccedil;on de <link linkend="ports-getting">Se procurer un logiciel
+ port&eacute;</link>).</para>
+
+ <para>Je vous entends d'ici: &ldquo;Comment diable cela peut-il arriver
+ &agrave; faire quoi que ce soit? Le code source n'y est m&ecirc;me
+ pas!&rdquo;</para>
+
+ <para>Ne craignez rien, aimable lecteur, tout va s'&eacute;clairer
+ (esp&eacute;rons-le). Examinons ce qui se passe lorsque nous essayons
+ d'installer un logiciel port&eacute;. J'ai choisi
+ <application>ElectricFence</application>, un bon outil pour les
+ d&eacute;veloppeurs, car son squelette est plus explicite que la
+ plupart.</para>
+
+ <note>
+ <para>Si vous essayez de le faire chez vous, vous devez &ecirc;tre
+ super-utilisateur.</para>
+ </note>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>cd /usr/ports/devel/ElectricFence</userinput>
+&prompt.root; <userinput>make install</userinput>
+&gt;&gt; Checksum OK for ElectricFence-2.0.5.tar.gz.
+===&gt; Extracting for ElectricFence-2.0.5
+===&gt; Patching for ElectricFence-2.0.5
+===&gt; Applying FreeBSD patches for ElectricFence-2.0.5
+===&gt; Configuring for ElectricFence-2.0.5
+===&gt; Building for ElectricFence-2.0.5
+[une tonne de r&eacute;sultats de compilation...]
+===&gt; Installing for ElectricFence-2.0.5
+===&gt; Warning: your umask is "0002". If this is not desired, set it to
+ an appropriate value and install this port again by ``make reinstall''.
+install -c -o bin -g bin -m 444 /usr/ports/devel/ElectricFence/work/ElectricFence-2.0.5/libefence.a /usr/local/lib
+install -c -o bin -g bin -m 444 /usr/ports/devel/ElectricFence/work/ElectricFence-2.0.5/libefence.3 /usr/local/man/man3
+===&gt; Compressing manual pages for ElectricFence-2.0.5
+===&gt; Registering installation for ElectricFence-2.0.5</screen>
+ </informalexample>
+
+ <para>Pour &eacute;viter la confusion, je n'ai pas donn&eacute; les r&eacute;sultats de la
+ compilation.</para>
+
+ <para>Si vous avez essay&eacute; de votre c&ocirc;t&eacute;, vous avez peut-&ecirc;tre obtenu au
+ d&eacute;but quelque chose du genre:</para>
+
+ <informalexample id="ports-fetch">
+ <screen>&prompt.root; <userinput>make install</userinput>
+&gt;&gt; ElectricFence-2.0.5.tar.gz doesn't seem to exist on this system.
+&gt;&gt; Attempting to fetch from
+ ftp://ftp.doc.ic.ac.uk/Mirrors/sunsite.unc.edu/pub/Linux/devel/lang/c/.</screen>
+ </informalexample>
+
+ <para>Le programme <command>make</command> s'est rendu compte que vous
+ n'aviez pas de copie locale du source et a essay&eacute; de le t&eacute;l&eacute;charger
+ pour pouvoir continuer son travail. J'avais d&eacute;j&agrave; le source, il n'a
+ donc pas eu besoin d'aller le chercher.</para>
+
+ <para>Continuons et voyons ce que le programme <command>make</command>
+ a fait:</para>
+
+ <procedure>
+
+ <step>
+ <para>Localiser l'<link linkend="ports-tarball">archive</link>
+ du code source. Si elle n'est pas localement disponible, aller
+ la chercher sur un site FTP.</para>
+ </step>
+
+ <step>
+ <para>Lancer un test de la <link linkend="ports-checksum">somme de
+ contr&ocirc;le</link> sur le fichier d'archive pour s'assurer qu'il
+ a bien &eacute;t&eacute; r&eacute;cup&eacute;r&eacute;, et non accidentellement tronqu&eacute;,
+ t&eacute;l&eacute;charg&eacute; en mode ASCII, ou bombard&eacute; de neutrinos pendant le
+ transfert.</para>
+ </step>
+
+ <step>
+ <para>Extraire l'archive dans un r&eacute;pertoire temporaire.</para>
+ </step>
+
+ <step>
+ <para>Appliquer les
+ <link linkend="ports-patch">&ldquo;patches&rdquo;</link>&nbsp;-&nbsp;mises
+ &agrave; jour&nbsp;-&nbsp;n&eacute;cessaires &agrave; la compilation et &agrave; l'ex&eacute;cution
+ sous FreeBSD.</para>
+ </step>
+
+ <step>
+ <para>Lancer les proc&eacute;dures de configuration n&eacute;cessaires &agrave; la
+ compilation et r&eacute;pondre correctement aux questions
+ pos&eacute;es.</para>
+ </step>
+
+ <step>
+ <para>(Finalement!) Compiler le code.</para>
+ </step>
+
+ <step>
+ <para>Installer le programme ex&eacute;cutable et les autres fichiers
+ qui vont avec, pages de manuel, etc. dans un sous-r&eacute;pertoire de
+ <filename>/usr/local</filename>, o&ugrave; ils ne se m&eacute;langeront pas
+ avec vos programmes syst&egrave;me. Cela garantit aussi que tous les
+ logiciels port&eacute;s soient au m&ecirc;me endroit, au lieu d'&ecirc;tre
+ &eacute;parpill&eacute;s &agrave; droite et &agrave; gauche sur votre syst&egrave;me.</para>
+ </step>
+
+ <step>
+ <para>Enregistrez l'installation dans une base de donn&eacute;es. Si vous
+ ne voulez pas conserver le programme par la suite, vous pourrez
+ le <link linkend="ports-remove">d&eacute;sinstaller</link> proprement
+ de votre syst&egrave;me.</para>
+ </step>
+
+ </procedure>
+
+ <para>Parcourez les r&eacute;sultats de <command>make</command> et voyez si
+ vous retrouvez ces diff&eacute;rentes &eacute;tapes. Si vous n'&eacute;tiez pas encore
+ impressionn&eacute;, vous devriez l'&ecirc;tre maintenant!</para>
+
+ </sect1>
+
+ <sect1 id="ports-getting">
+ <title>Se procurer un logiciel port&eacute; pour FreeBSD</title>
+
+ <para>Il y a deux fa&ccedil;ons d'obtenir la version port&eacute;e pour FreeBSD d'un
+ logiciel. Il vous faut soit le <link linkend="ports-cd">CD-ROM
+ FreeBSD</link>, soit une <link linkend="ports-inet">connexion
+ Internet</link>.</para>
+
+ <sect2 id="ports-cd">
+ <title>Compiler les logiciels port&eacute;s depuis le CD-ROM</title>
+
+ <para>Si vous avez r&eacute;pondu oui &agrave; la question &ldquo;Do you want to
+ link the ports collection to your
+ CD-ROM?&rdquo;&nbsp;-&nbsp;&ldquo;Voulez-vous cr&eacute;er un lien
+ symbolique sur le catalogue des logiciels port&eacute;s du
+ CD-ROM?&rdquo;&nbsp;-&nbsp;pendant la configuration de
+ l'installation de FreeBSD, le programme aura d&eacute;j&agrave; effectu&eacute; &agrave; votre
+ place les &eacute;tapes pr&eacute;liminaires.</para>
+
+ <para>Sinon, v&eacute;rifiez que le CD-ROM <emphasis>FreeBSD</emphasis> est
+ bien dans le lecteur et mont&eacute; sur, par exemple,
+ <filename>/cdrom</filename>. puis tapez:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>mkdir /usr/ports</userinput>
+&prompt.root; <userinput>cd /usr/ports</userinput>
+&prompt.root; <userinput>ln -s /cdrom/ports/distfiles distfiles</userinput></screen>
+ </informalexample>
+
+ <para>pour que le m&eacute;canisme d'installation puisse trouver
+ les archives (il s'attend &agrave; ce qu'elles soient dans le r&eacute;pertoire
+ <filename>/usr/ports/distfiles</filename>, c'est la raison pour
+ laquelle nous avons cr&eacute;&eacute; un lien symbolique du r&eacute;pertoire
+ d'archive du CD-ROM sur ce r&eacute;pertoire).</para>
+
+ <para>Supposons maintenant que nous voulions installer le programme
+ <application>gnats</application> qui se trouve dans le r&eacute;pertoire
+ des bases de donn&eacute;es. Voici comment nous proc&eacute;derions:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
+&prompt.root; <userinput>mkdir databases</userinput>
+&prompt.root; <userinput>cp -R /cdrom/ports/databases/gnats databases</userinput>
+&prompt.root; <userinput>cd databases/gnats</userinput>
+&prompt.root; <userinput>make install</userinput></screen>
+ </informalexample>
+
+ <para>Si vous utilisez s&eacute;rieusement les bases de donn&eacute;es et que vous
+ voulez comparer toutes celles qui sont disponibles au catalogue,
+ tapez:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
+&prompt.root; <userinput>cp -R /cdrom/ports/databases .</userinput>
+&prompt.root; <userinput>cd databases</userinput>
+&prompt.root; <userinput>make install</userinput></screen>
+ </informalexample>
+
+ <para>(oui, il y a vraiment un &ldquo;.&rdquo; &agrave; la fin de la
+ commande <command>cp</command>, ce n'est pas une erreur. C'est une
+ &ldquo;Unixerie&rdquo; qui veut dire: &ldquo;le r&eacute;pertoire
+ courant&rdquo;) et le syst&egrave;me d'installation des logiciels port&eacute;s
+ compilera et installera automatiquement tous les logiciels de
+ base de donn&eacute;es disponibles!</para>
+
+ <para>Si cette m&eacute;thode ne vous convient pas, voici une fa&ccedil;on
+ enti&egrave;rement diff&eacute;rente de faire:</para>
+
+ <para>Cr&eacute;ez une &ldquo;arborescence de liens&rdquo; vers le catalogue
+ en vous servant de la commande <citerefentry><refentrytitle>lndir</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ de la distribution de <emphasis>XFree86</emphasis>. Trouvez un
+ endroit o&ugrave; vous avez de la place, cr&eacute;ez-y un r&eacute;pertoire et
+ placez-vous dans ce r&eacute;pertoire avec <command>cd</command>. Utilisez
+ maintenant la commande
+ <citerefentry><refentrytitle>lndir</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ avec comme premier argument le chemin d'acc&egrave;s complet au r&eacute;pertoire
+ <filename>ports</filename> du CD-ROM et un &ldquo;.&rdquo; (le
+ r&eacute;pertoire courant) comme second argument. Quelque chose du
+ genre:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>lndir /cdrom/ports .</userinput></screen>
+ </informalexample>
+
+ <para>Vous pouvez alors installer les logiciels port&eacute;s directement
+ &agrave; partir du CD-ROM en le faisant depuis l'arborescence de liens que
+ vous venez de cr&eacute;er.</para>
+
+ <para>Remarquez que les sources d'origine de certains logiciels ne
+ peuvent &ecirc;tre fournis sur le CD-ROM, pour des questions de licence.
+ Dans ce cas, vous devrez vous reporter &agrave; la section
+ <link linkend="ports-inet">Installer de logiciels port&eacute;s via
+ une connexion Internet</link>.</para>
+
+ </sect2>
+
+ <sect2 id="ports-inet">
+ <title>Installer des logiciels port&eacute;s via une connexion
+ Internet</title>
+
+ <para>Si vous n'avez pas de CD-ROM, ou voulez &ecirc;tre s&ucirc;r d'avoir
+ la toute derni&egrave;re version d'un logiciel, vous devrez
+ t&eacute;l&eacute;charger le <link linkend="ports-skeleton">squelette</link>
+ associ&eacute; au logiciel port&eacute;. Cela peut para&icirc;tre une combine
+ pleine d'emb&ucirc;ches, mais c'est en r&eacute;alit&eacute; tr&egrave;s
+ simple.</para>
+
+ <para>Le secret est que le serveur FTP FreeBSD peut vous g&eacute;n&eacute;rer
+ des <link linkend="ports-tarball">archives</link> &agrave; la vol&eacute;e. Voici
+ comment cela fonctionne, avec toujours comme exemple le programme
+ <application>gnats</application> du r&eacute;pertoire des bases de donn&eacute;es
+ (les textes entre crochets sont des commentaires. Ne le tapez pas
+ si vous essayez cela de votre c&ocirc;t&eacute;!):</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
+&prompt.root; <userinput>mkdir databases</userinput>
+&prompt.root; <userinput>cd databases</userinput>
+&prompt.root; <userinput>ftp ftp.freebsd.org</userinput>
+[ouvrez une session en tant qu'utilisateur `ftp' et donnez votre adresse
+de courrier &eacute;lectronique quand on vous demande un mot de passe. N'oubliez
+pas d'utiliser le mode binaire (appel&eacute; aussi 'image')!]
+<prompt>&gt;</prompt> <userinput>cd /pub/FreeBSD/ports/databases</userinput>
+<prompt>&gt;</prompt> <userinput>get gnats.tar</userinput>
+[archive et r&eacute;cup&egrave;re le squelette de gnats]
+<prompt>&gt;</prompt> <userinput>quit</userinput>
+&prompt.root; <userinput>tar xf gnats.tar</userinput>
+[extrait le squelette de gnats]
+&prompt.root; <userinput>cd gnats</userinput>
+&prompt.root; <userinput>make install</userinput>
+[compile et installe gnats]</screen>
+ </informalexample>
+
+ <para>Que se passe-t-il? Nous nous sommes connect&eacute;s comme &agrave;
+ l'ordinaire au serveur FTP et sommes all&eacute;s dans son sous-r&eacute;pertoire
+ des bases de donn&eacute;es. Quand nous lui
+ avons donn&eacute; la commande <command>get gnats.tar</command>, le serveur
+ FTP a cr&eacute;&eacute; une <link linkend="ports-tarball">archive</link> du
+ r&eacute;pertoire gnats &agrave; notre usage.</para>
+
+ <para>Nous avons alors extrait de cette archive le squelette pour
+ gnats qu'elle contenait et sommes all&eacute;s dans le r&eacute;pertoire gnats
+ pour compiler et installer le logiciel. Comme nous l'avons expliqu&eacute;
+ <link linkend="ports-fetch">plus haut</link>, le processus
+ d'installation s'est rendu compte que nous n'avions pas de copie
+ locale des sources, en a t&eacute;l&eacute;charg&eacute; une avant de l'extraire, de la
+ mettre &agrave; jour et de la compiler.</para>
+
+ <para>Essayons maintenant quelque chose de plus ambitieux. Au lieu
+ de r&eacute;cup&eacute;rer un seul squelette, r&eacute;cup&eacute;rons un sous-r&eacute;pertoire
+ complet, par exemple, tous les squelettes pour les bases de donn&eacute;es
+ du catalogue des logiciels port&eacute;s. La fa&ccedil;on de proc&eacute;der est
+ quasi identique:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
+&prompt.root; <userinput>ftp ftp.freebsd.org</userinput>
+[ouvrez une session en tant qu'utilisateur `ftp' et donnez votre adresse
+de courrier &eacute;lectronique quand on vous demande un mot de passe. N'oubliez
+pas d'utiliser le mode binaire (appel&eacute; aussi 'image')!]
+<prompt>&gt;</prompt> <userinput>cd /pub/FreeBSD/ports</userinput>
+<prompt>&gt;</prompt> <userinput>get databases.tar</userinput>
+[archive et r&eacute;cup&egrave;re les squelettes pour les bases de donn&eacute;es]
+<prompt>&gt;</prompt> <userinput>quit</userinput>
+&prompt.root; <userinput>tar xf databases.tar</userinput>
+[extrait les squelettes de toutes les bases de donn&eacute;es]
+&prompt.root; <userinput>cd databases</userinput>
+&prompt.root; <userinput>make install</userinput>
+[compile et installe les logiciels de base de donn&eacute;es port&eacute;s]</screen>
+ </informalexample>
+
+ <para>Avec une demi-douzaine de commandes &eacute;l&eacute;mentaires, nous
+ disposons maintenant d'un &eacute;ventail de logiciels de base de
+ donn&eacute;es sur notre machine FreeBSD. La seule diff&eacute;rence avec
+ l'installation d'un seul logiciel est que nous avons r&eacute;cup&eacute;r&eacute;
+ et compil&eacute; d'un seul coup tout un r&eacute;pertoire de programmes.
+ Impressionnant, non?</para>
+
+ <para>Si vous envisagez d'installer de nombreux logiciels port&eacute;s, cela
+ vaut probablement la peine de t&eacute;l&eacute;charger tous les r&eacute;pertoires du
+ catalogue.</para>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="ports-skeleton">
+ <title>Les squelettes</title>
+
+ <para>Une bande de programmeurs compulsifs qui ont oubli&eacute; de manger
+ lors d'une tentative d&eacute;sesp&eacute;r&eacute;e de respecter une &eacute;ch&eacute;ance? Des choses
+ d&eacute;sagr&eacute;ables hantant les sous-sols de FreeBSD? Non, un squelette est
+ un environnement minimal qui contient tout ce qu'il faut pour que la
+ magie des logiciels port&eacute;s fonctionne.</para>
+
+ <sect2 id="ports-makefile">
+ <title><filename>Makefile</filename></title>
+
+ <para>Le composant le plus important d'un squelette est le fichier
+ <filename>Makefile</filename>. Il contient les divers ordres qui
+ pr&eacute;cisent comment le logiciel doit &ecirc;tre compil&eacute; et install&eacute;. Voici
+ le <filename>Makefile</filename> pour
+ <application>ElectricFence</application>:</para>
+
+ <programlisting>
+# New ports collection makefile for: Electric Fence
+# Version required: 2.0.5
+# Date created: 13 November 1997
+# Whom: jraynard
+#
+# &#36;Id&#36;
+#
+
+DISTNAME= ElectricFence-2.0.5
+CATEGORIES= devel
+MASTER_SITES= ${MASTER_SITE_SUNSITE}
+MASTER_SITE_SUBDIR= devel/lang/c
+
+MAINTAINER= jraynard@freebsd.org
+
+MAN3= libefence.3
+
+do-install:
+ ${INSTALL_DATA} ${WRKSRC}/libefence.a ${PREFIX}/lib
+ ${INSTALL_MAN} ${WRKSRC}/libefence.3 ${PREFIX}/man/man3
+
+.include &lt;bsd.port.mk&gt;</programlisting>
+
+ <para>Les lignes qui commencent par un &ldquo;#&rdquo; sont des
+ commentaires &agrave; l'intention des lecteurs humains (comme dans la
+ plupart des proc&eacute;dures Unix).</para>
+
+ <para><literal>DISTNAME</literal> donne le nom, sans extension, de
+ l'<link linkend="ports-tarball">archive</link>.</para>
+
+ <para><literal>CATEGORIES</literal> indique de quel type de logiciel
+ il s'agit. Dans le cas pr&eacute;sent, c'est un outil pour les
+ d&eacute;veloppeurs.</para>
+
+ <para><literal>MASTER_SITES</literal> est l'URL(s) du site FTP
+ principal, d'o&ugrave; sera t&eacute;l&eacute;charg&eacute;
+ l'<link linkend="ports-tarball">archive</link>, si elle n'est
+ pas disponible sur la machine locale. C'est un site consid&eacute;r&eacute;
+ comme fiable, normalement celui de la distribution officielle
+ (dans la mesure o&ugrave; un logiciel peut &ecirc;tre
+ &ldquo;officiellement&rdquo; distribu&eacute; sur l'Internet).</para>
+
+ <para><literal>MAINTAINER</literal> est l'adresse &eacute;lectronique de
+ la personne responsable de la maintenance du squelette, qui
+ intervient lorsque, par exemple, il sort une nouvelle version du
+ programme.</para>
+
+ <para>Sautons pour l'instant quelques lignes, la ligne
+ <literal>.include &lt;bsd.port.mk&gt;</literal> indique que les
+ autres directives et commandes n&eacute;cessaires se trouvent dans le
+ fichier g&eacute;n&eacute;rique <filename>bsd.port.mk</filename>. Comme ce sont
+ les m&ecirc;mes pour tous les logiciels port&eacute;s, il n'y a pas de raison
+ de les dupliquer &agrave; chaque fois, elles sont donc enregistr&eacute;es dans un
+ fichier standard.</para>
+
+ <para>Ce n'est probablement pas l'endroit o&ugrave; expliquer en d&eacute;tail
+ comment le <filename>Makefile</filename> fonctionne; il suffit de
+ pr&eacute;ciser que la ligne qui commence par <literal>MAN3</literal>
+ garantit que les pages de manuel d'ElectricFence seront compress&eacute;es
+ apr&egrave;s installation, pour &eacute;conomiser votre pr&eacute;cieux espace disque. Le
+ logiciel d'origine ne d&eacute;finissait pas de cible
+ <maketarget>install</maketarget>, les trois lignes qui commencent &agrave;
+ <maketarget>do-install</maketarget> veillent &agrave; ce que les fichiers
+ g&eacute;n&eacute;r&eacute;s soient bien plac&eacute;s l&agrave; o&ugrave; il faut.</para>
+
+ </sect2>
+
+ <sect2>
+ <title>Le r&eacute;pertoire <filename>files</filename></title>
+
+ <para>Le fichier qui contient la <link linkend="ports-checksum">somme
+ de contr&ocirc;le</link> pour ce logiciel s'appelle
+ <filename>md5</filename>, du nom de l'algorithme MD5 utilis&eacute; pour
+ la calculer. Il se trouve dans un r&eacute;pertoire au nom quelque peu
+ trompeur de <filename>files</filename>.</para>
+
+ <para>Ce r&eacute;pertoire peut aussi contenir divers fichiers n&eacute;cessaires
+ au portage et qui n'ont pas de raison particuli&egrave;re
+ d'&ecirc;tre ailleurs.</para>
+
+ </sect2>
+
+ <sect2>
+ <title>Le r&eacute;pertoire <filename>patches</filename></title>
+
+ <para>Ce r&eacute;pertoire contient les <link linkend="ports-patch">mises &agrave;
+ niveau</link> qu'il faut appliquer pour que tout fonctionne
+ correctement sous FreeBSD.</para>
+
+ </sect2>
+
+ <sect2>
+ <title>Le r&eacute;pertoire <filename>pkg</filename></title>
+
+ <para>Ce r&eacute;pertoire contient trois fichiers assez utiles:</para>
+
+ <itemizedlist>
+
+ <listitem>
+ <para><filename>COMMENT</filename>&nbsp;-&nbsp;une description
+ en une seule ligne du logiciel.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>DESCR</filename>&nbsp;-&nbsp;une description
+ plus d&eacute;taill&eacute;e.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>PLIST</filename>&nbsp;-&nbsp;la liste de tous
+ les fichiers qui seront cr&eacute;&eacute;s quand le logiciel sera
+ install&eacute;.</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="ports-troubleshooting">
+ <title>Que faire quand un portage &eacute;choue?</title>
+
+ <para>Oh. Il y a quatre (4) choses que vous pouvez faire :</para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>Corriger le probl&egrave;me vous-m&ecirc;me. Vous trouverez des d&eacute;tails
+ techniques sur le m&eacute;canisme des portages &agrave; la section
+ <link linkend="porting">Faire vous-m&ecirc;me un portage</link>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Rousp&eacute;ter. Cela ne se fait <emphasis>que</emphasis> par
+ courrrier &eacute;lectronique! adressez-vous &agrave; la &a.ports; et pr&eacute;cisez
+ s'il vous pla&icirc;t le nom et la version du logiciel, sur quel site
+ vous avez r&eacute;cup&eacute;r&eacute; le squelette et l'(les) archive(s) et quel
+ message d'erreur vous obtenez.</para>
+ </listitem>
+
+ <listitem>
+ <para>Faire une croix dessus. C'est la m&eacute;thode la plus facile pour
+ la plupart des gens&nbsp;-&nbsp;il y a bien peu de programmes
+ du catalogue qui soient vraiment essentiels!</para>
+ </listitem>
+
+ <listitem>
+ <para>R&eacute;cup&eacute;rer la version pr&eacute;compil&eacute;e sur un serveur ftp. Le
+ catalogue de r&eacute;f&eacute;rence des logiciels pr&eacute;compil&eacute;s se trouve
+ sur le serveur FTP de FreeBSD dans le r&eacute;pertoire des
+ <ulink
+ url="ftp://ftp.FreeBSD.org/pub/FreeBSD/packages/">logiciels
+ pr&eacute;compil&eacute;s</ulink>, bien que nous souhaiterions
+ s'il vous pla&icirc;t que
+ vous consultiez d'abord vos sites miroirs locaux! Il y a
+ globalement plus de chances que cela marche, que lorsque vous
+ essayez de les compiler d'apr&egrave;s les sources, et cela va
+ de plus beaucoup plus vite. Servez-vous du programme
+ <citerefentry><refentrytitle>pkg_add</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ pour installer le fichier contenant un logiciel pr&eacute;compil&eacute; sur
+ votre syst&egrave;me.</para>
+ </listitem>
+
+ </orderedlist>
+
+ </sect1>
+
+ <sect1>
+ <title>Quelques questions et leurs r&eacute;ponses</title>
+
+ <itemizedlist>
+
+ <listitem>
+ <para>Q. Je pensais que cela allait &ecirc;tre une discussion sur les
+ modems??!</para>
+
+ <para>R. Ah. Vous pensiez peut-&ecirc;tre aux &ldquo;ports&rdquo;
+ s&eacute;rie sur la face arri&egrave;re de votre ordinateur. Nous utilisons
+ ici le terme
+ &ldquo;port&rdquo;&nbsp;-&nbsp;logiciels port&eacute;s&nbsp;-&nbsp;pour
+ parler du r&eacute;sultat du &ldquo;portage&rdquo; d'un logiciel d'une
+ version d'Unix &agrave; une autre. (Les informaticiens ont la f&acirc;cheuse
+ habitude d'employer le m&ecirc;me mot pour parler de choses
+ diff&eacute;rentes.)</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. Je pensais qu'il fallait utiliser des
+ &ldquo;paquetages&rdquo; pour installer des logiciels
+ suppl&eacute;mentaires.</para>
+
+ <para>R. Oui, c'est habituellement la fa&ccedil;on la plus rapide et la
+ plus facile de le faire.</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. Pourquoi alors se pr&eacute;occuper de logiciels port&eacute;s?</para>
+
+ <para>R. Il y a plusieurs raisons:</para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>Les licences de certains logiciels stipulent qu'ils
+ doivent &ecirc;tre distribu&eacute;s sous forme de sources et non de
+ binaires.</para>
+ </listitem>
+
+ <listitem>
+ <para>Certains ne font pas confiance aux distributions sous
+ forme binaire. Avec le code source, vous pouvez au moins
+ (en th&eacute;orie) le lire pour y rep&eacute;rer d'&eacute;ventuels
+ probl&egrave;mes.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si vous avez des corrections/&eacute;volutions qui vous sont
+ propres, vous avez besoin des sources pour les
+ appliquer.</para>
+ </listitem>
+
+ <listitem>
+ <para>Vous pouvez vouloir compiler le programme avec des
+ options diff&eacute;rentes de celles qu'a utilis&eacute;es la personne
+ qui a construit le
+ &ldquo;paquetage&rdquo;&nbsp;-&nbsp;certains ont des
+ opinions bien arr&ecirc;t&eacute;es sur la mani&egrave;re dont il faut
+ optimiser, sur le fait qu'il faut ou non disposer de
+ versions d&eacute;bogables et y inclure ou non les symboles,
+ etc.</para>
+ </listitem>
+
+ <listitem>
+ <para>Certains aiment disposer du code source, pour pouvoir
+ le lire en cas de probl&egrave;me, le modifier, en emprunter des
+ morceaux (si la licence le permet, bien s&ucirc;r!), et ainsi de
+ suite.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si vous n'avez pas le source, ce n'est pas du
+ logiciel! <!-- smiley -->;-)</para>
+ </listitem>
+
+ </orderedlist>
+
+ </listitem>
+
+ <listitem>
+ <para><anchor id="ports-patch"> Q. Qu'est-ce qu'un
+ &ldquo;patch&rdquo;&nbsp;-&nbsp;mise &agrave; jour?</para>
+
+ <para>R. Un &ldquo;patch&rdquo; est (habituellement) un petit
+ fichier qui pr&eacute;cise comment passer d'une version &agrave; une autre. Il
+ contient du texte qui dit, par exemple, des choses comme
+ &ldquo;effacez la ligne 23&rdquo;, &ldquo;ajoutez ces deux
+ lignes apr&egrave;s la ligne 468&rdquo; ou &ldquo;modifiez comme suit
+ la ligne 197&rdquo;. On appelle aussi cela un
+ &ldquo;diff&rdquo; parce qu'il est g&eacute;n&eacute;r&eacute; avec un programme
+ du m&ecirc;me nom.</para>
+ </listitem>
+
+ <listitem>
+ <para><anchor id="ports-tarball"> Q. Que sont les archives?</para>
+
+ <para>R. C'est un fichier d'extension <filename>.tar</filename> ou
+ <filename>.tar.gz</filename> (avec des variantes du style
+ <filename>.tar.Z</filename>, ou m&ecirc;me <filename>.tgz</filename>
+ si vous voulez utiliser ces noms de fichiers avec un syst&egrave;mes
+ de fichiers DOS).</para>
+
+ <para>C'est essentiellement une arborescence de r&eacute;pertoires qui a
+ &eacute;t&eacute; archiv&eacute;e en un seul fichier (<filename>.tar</filename>) et
+ &eacute;ventuellement compress&eacute; (<filename>.gz</filename>). Cette
+ technique &eacute;tait &agrave; l'origine utilis&eacute;e pour les
+ &ldquo;<emphasis>T</emphasis>ape&rdquo;&nbsp;-&nbsp;bande&nbsp;-&nbsp;&ldquo;<emphasis>AR</emphasis>chives&rdquo;
+ (d'o&ugrave; le nom <command>tar</command>), mais c'est une m&eacute;thode
+ tr&egrave;s utilis&eacute;e pour distribuer du code source sur
+ l'Internet.</para>
+
+ <para>Vous pouvez avoir la liste des fichiers qu'elles
+ contiennent, ou m&ecirc;me les extraire vous-m&ecirc;me, avec le programme
+ Unix standard <command>tar</command>, qui fait partie du syst&egrave;me
+ FreeBSD de base, comme ceci:</para>
+
+ <informalexample>
+ <screen>&prompt.user; <userinput>tar tvzf foobar.tar.gz</userinput> # conna&icirc;tre le contenu de foobar.tar.gz
+&prompt.user; <userinput>tar xzvf foobar.tar.gz</userinput> # extraire le contenu de foobar.tgz dans le r&eacute;pertoire courant
+&prompt.user; <userinput>tar tvf foobar.tar</userinput> # conna&icirc;tre le contenu de foobar.tar
+&prompt.user; <userinput>tar xvf foobar.tar</userinput> # extraire le contenu de foobar.tar dans le r&eacute;pertoire courant
+ </screen>
+ </informalexample>
+ </listitem>
+
+ <listitem>
+ <para><anchor id="ports-checksum"> Q. Et une somme de
+ contr&ocirc;le?</para>
+
+ <para>R. C'est un nombre calcul&eacute; en additionnant tout ce que
+ contient le fichier. Si un caract&egrave;re change, la somme de
+ contr&ocirc;le n'est plus la m&ecirc;me, et une simple comparaison vous
+ permettra de rep&eacute;rer la diff&eacute;rence. (En pratique, le calcul
+ est un peu plus compliqu&eacute; pour pouvoir rep&eacute;rer des probl&egrave;mes
+ comme les permutations de caract&egrave;res, ce que ne permettrait
+ pas une simple addition.)</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. J'ai suivi vos indications au paragraphe
+ <link linkend="ports-cd">Compiler les logiciels port&eacute;s depuis
+ le CD-ROM</link> et &ccedil;a a march&eacute; sans probl&egrave;me jusqu'&agrave; ce que
+ j'essaie d'installer <command>kermit</command></para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>make install</userinput>
+&gt;&gt; cku190.tar.gz doesn't seem to exist on this system.
+&gt;&gt; Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/.</screen>
+ </informalexample>
+ <para>Pourquoi ne le trouve-t-il pas? Ai-je un CD-ROM
+ endommag&eacute;?</para>
+
+ <para>R. La licence de <command>kermit</command> ne nous permet
+ pas d'inclure l'archive sur le CD-ROM, vous devrez donc la
+ r&eacute;cup&eacute;rez vous-m&ecirc;me&nbsp;-&nbsp;d&eacute;sol&eacute;! Vous avez tous ces
+ messages d'erreur parce que vous n'&eacute;tiez pas alors connect&eacute; &agrave;
+ l'Internet. Une fois que vous l'avez t&eacute;l&eacute;charg&eacute; &agrave; partir de l'un
+ des sites mentionn&eacute;s, vous pouvez recommencer l'installation
+ (essayez et choisissez le site le plus proche, pour &eacute;conomiser
+ votre temps et de la bande passante);</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. Je l'ai fait, mais quand j'ai essay&eacute; de la mettre
+ dans <filename>/usr/ports/distfiles</filename>, j'ai eu des
+ erreurs &agrave; propos de permissions que je n'avais pas.</para>
+
+ <para>R. Le m&eacute;canisme des logiciels port&eacute;s cherche les archives
+ dans <filename>/usr/ports/distfiles</filename>, mais il ne peut
+ rien y copier parce que c'est un lien symbolique sur le CD-ROM,
+ sur lequel on ne peut que lire. Vous pouvez lui dire de chercher
+ ailleurs avec:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>make DISTDIR=/where/you/put/it install</userinput></screen>
+ </informalexample>
+ </listitem>
+
+ <listitem>
+ <para>Q. Le syst&egrave;me des logiciels port&eacute;s ne fonctionne-t-il
+ qu'avec <filename>/usr/ports</filename>? Mon administrateur
+ syst&egrave;me veut que je mette tout dans
+ <filename>/u/people/guests/wurzburger</filename>, mais cela ne
+ marche apparemment pas.</para>
+
+ <para>R. Vous pouvez utiliser les variables
+ <makevar>PORTSDIR</makevar> et <makevar>PREFIX</makevar>
+ pour dire au m&eacute;canisme des logiciels port&eacute;s de travailler dans
+ d'autres r&eacute;pertoires. Par exemple:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>make PORTSDIR=/u/people/guests/wurzburger/ports install</userinput></screen>
+ </informalexample>
+
+ <para>compilera le logiciel dans
+ <filename>/u/people/guests/wurzburger/ports</filename> et
+ l'installera dans <filename>/usr/local</filename>.</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>make PREFIX=/u/people/guests/wurzburger/local install</userinput></screen>
+ </informalexample>
+
+ <para>le compilera dans <filename>/usr/ports</filename> et
+ l'installera dans
+ <filename>/u/people/guests/wurzburger/local</filename>.</para>
+
+ <para>Et bien s&ucirc;r:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>make PORTSDIR=.../ports PREFIX=.../local install</userinput></screen>
+ </informalexample>
+
+ <para>combinera les deux (c'est trop long pour tenir enti&egrave;rement
+ sur la page, mais je suis s&ucirc;r que vous avez compris le
+ principe).</para>
+
+ <para>Si vous ne voulez pas avoir &agrave; retaper tout cela &agrave; chaque
+ fois que vous installez un logiciel (et pour &ecirc;tre honn&ecirc;te,
+ pourquoi le feriez-vous?), c'est une bonne id&eacute;e de d&eacute;finir
+ ces deux variables dans votre environnement par d&eacute;faut.</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. Je n'ai pas le CD-ROM FreeBSD, mais je voudrais avoir les
+ archives sous la main sur mon syst&egrave;me pour ne pas avoir &agrave;
+ attendre la fin du t&eacute;l&eacute;chargement chaque fois que j'installe un
+ logiciel. y-a-t-il une fa&ccedil;on simple de tout r&eacute;cup&eacute;rer d'un
+ coup?</para>
+
+ <para>R. Pour r&eacute;cup&eacute;rer toutes les archives du catalogue des
+ logiciels port&eacute;s, tapez:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
+&prompt.root; <userinput>make fetch</userinput></screen>
+ </informalexample>
+
+ <para>Pour avoir toutes les archives d'un seul sous-r&eacute;pertoire,
+ utilisez:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>cd /usr/ports/<replaceable>directory</replaceable></userinput>
+&prompt.root; <userinput>make fetch</userinput></screen>
+ </informalexample>
+
+ <para>et pour un seul port&nbsp;-&nbsp;bon, je suppose que vous
+ avez d&eacute;j&agrave; devin&eacute;.</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. Je sais qu'il est probablement plus rapide de r&eacute;cup&eacute;rer
+ les archives de sites miroir FreeBSD proches. Y'a-t-il un moyen
+ de dire au m&eacute;canisme de s'adresser &agrave; d'autres serveurs que ceux
+ list&eacute;s dans les MASTER_SITES?</para>
+
+ <para>R. Oui. Si vous savez que, par exemple,
+ <hostid role="fqdn">ftp.FreeBSD.ORG</hostid> est plus pr&egrave;s que
+ les sites list&eacute;s dans <makevar>MASTER_SITES</makevar>, faites
+ comme dans l'exemple suivant:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>cd /usr/ports/directory</userinput>
+&prompt.root; <userinput>make MASTER_SITE_OVERRIDE=ftp://ftp.FreeBSD.ORG/pub/FreeBSD/distfiles/ fetch</userinput></screen>
+ </informalexample>
+ </listitem>
+
+ <listitem>
+ <para>Q. Je veux savoir de quels fichiers j'aurai besoin, avant
+ d'essayer de les t&eacute;l&eacute;charger.</para>
+
+ <para>R. <command>make fetch-list</command> affichera la liste des
+ fichiers n&eacute;cessaires pour installer un logiciel port&eacute;.</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. Y-a-t il un moyen de faire en sorte que le logiciel ne
+ soit pas compil&eacute;. Je veux modifier les sources avant de le
+ compiler et c'est fastidieux de surveiller ce qui ce passe &agrave;
+ chaque fois et de toujours taper Ctrl-C.</para>
+
+ <para>R. <command>make extract</command> ne fait que r&eacute;cup&eacute;rer et
+ extraire le code source.</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. J'essaie de faire mon propre portage, et voudrais qu'il
+ ne soit pas compil&eacute; avant que j'ai pu v&eacute;rifier que les mises &agrave;
+ jour aient &eacute;t&eacute; correctement appliqu&eacute;es. Y-a-t-il un &eacute;quivalent
+ de <command>make extract</command>, pour les mises &agrave;
+ jour?</para>
+
+ <para>A. Oui, <command>make patch</command> est ce qu'il vous
+ faut. Vous trouverez peut-&ecirc;tre aussi utile l'option
+ <option>PATCH_DEBUG</option>. Et, au
+ passage, merci de vos efforts!</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. J'ai entendu dire que certaines options du compilateur
+ posait des probl&egrave;mes. Est-ce exact? Comment puis-je &ecirc;tre s&ucirc;r
+ que je compile les logiciels avec les bonnes options?</para>
+
+ <para>R. Oui, avec la version 2.6.3 de <command>gcc</command> (la
+ version livr&eacute;e avec FreeBSD 2.1.0 et 2.1.5), l'option
+ <option>-O2</option> pouvait g&eacute;n&eacute;rer du code bogu&eacute;, &agrave; moins que
+ vous n'utilisiez en m&ecirc;me temps l'option
+ <option>-fno-strength-reduce</option>. (La plupart des logiciels
+ port&eacute;s n'utilisent pas l'option <option>-O2</option>). Vous
+ <emphasis>devriez</emphasis> pouvoir pr&eacute;ciser au compilateur les
+ options &agrave; utiliser avec quelque chose comme:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>make CFLAGS='-O2 -fno-strength-reduce' install</userinput></screen>
+ </informalexample>
+
+ <para>ou en &eacute;ditant <filename>/etc/make.conf</filename>, mais tous
+ les logiciels port&eacute;s n'en tiennent malheureusement pas compte.
+ Le plus s&ucirc;r est d'utiliser <command>make configure</command>,
+ puis d'aller dans le r&eacute;pertoire des sources et de regarder ce
+ que font les <filename>Makefile</filename>s, mais cela peut
+ devenir fastidieux s'il y a de nombreux sous-r&eacute;pertoires avec
+ chacun leurs <filename>Makefile</filename>s.</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. Il y a tellement de logiciels port&eacute;s qu'il est difficile
+ de trouver celui que je veux. Y-a-t-il quelque part une liste
+ des logiciels port&eacute;s?</para>
+
+ <para>R. Regardez dans le fichier <filename>INDEX</filename>
+ du r&eacute;pertoire <filename>/usr/ports</filename>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. J'ai install&eacute; le logiciel <literal>foo</literal> mais le
+ m&eacute;canisme s'est soudainement interrompu et a commenc&eacute; &agrave; compiler
+ le logiciel <literal>bar</literal>. Que se passe-t-il?</para>
+
+ <para>R. Le logiciel <literal>foo</literal> a besoin de quelque
+ chose qui fait partie de <literal>bar</literal>&nbsp;-&nbsp;par
+ exemple, si <literal>foo</literal> utilise des graphiques,
+ <literal>bar</literal> peut comporter une biblioth&egrave;que avec des
+ sous-programmes graphiques utiles. Ou bien
+ <literal>bar</literal> est un outil n&eacute;cessaire &agrave; la compilation
+ du logiciel <literal>foo</literal>.</para>
+ </listitem>
+
+ <listitem>
+ <para><anchor id="ports-remove">Q. J'ai install&eacute; le logiciel
+ <literal>grizzle</literal> du catalogue et c'est franchement
+ du gaspillage d'espace disque. Je veux le supprimer mais je
+ ne sais pas o&ugrave; il a mis tous les fichiers. Des
+ indications?</para>
+
+ <para>R. Pas de probl&egrave;me, tapez simplement:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>pkg_delete grizzle-6.5</userinput></screen>
+ </informalexample>
+ </listitem>
+
+ <listitem>
+ <para>
+ Q. Une minute, il faut conna&icirc;tre le num&eacute;ro de version pour
+ utiliser cette commande. Vous ne vous attendez s&eacute;rieusement pas
+ &agrave; ce que je l'ai retenu, n'est-ce pas?</para>
+
+ <para>R. Absolument pas, vous pouvez le trouver en tapant:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>pkg_info -a | grep grizzle</userinput>
+Information for grizzle-6.5:
+grizzle-6.5 - La m&eacute;thode de piano, l'interpr&eacute;teur LOGO et le casse-briques tout
+en un.</screen>
+ </informalexample>
+ </listitem>
+
+ <listitem>
+ <para>Q. A propos d'espace disque, le catalogue des logiciels
+ port&eacute;s occupe apparemment &eacute;norm&eacute;ment de place. Est-il possible
+ d'y faire du m&eacute;nage?</para>
+
+ <para>R. Oui, si vous avez install&eacute; un programme et &ecirc;tes &agrave; peu
+ pr&egrave;s certain que vous n'aurez plus besoin des sources, il est
+ inutile de les garder. La meilleure fa&ccedil;on de faire est:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
+&prompt.root; <userinput>make clean</userinput></screen>
+ </informalexample>
+
+ <para>qui parcourera tous les sous-r&eacute;pertoires et supprimera tout
+ ce qui se rapporte aux logiciels sauf les squelettes.</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. J'ai essay&eacute;, mais il reste toujours toutes ces archives,
+ quelque soit le nom que vous leur donniez, dans le r&eacute;pertoire
+ <filename>distfiles</filename>. Puis-je aussi les
+ effacer?</para>
+
+ <para>R. Oui, si vous &ecirc;tes s&ucirc;r d'en avez termin&eacute; avec elles, vous
+ pouvez aussi les supprimer.</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. J'aime avoir quantit&eacute; de logiciels pour les tester?
+ Y-a-t-il un moyen de tous les installer d'un seul coup?</para>
+
+ <para>R. Tapez simplement:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
+&prompt.root; <userinput>make install</userinput></screen>
+ </informalexample>
+ </listitem>
+
+ <listitem>
+ <para>Q. OK, j'ai essay&eacute;, mais comme je pensais que cela allait
+ prendre beaucoup de temps, j'ai laiss&eacute; la machine telle quelle
+ et je suis all&eacute; me coucher. Ce matin, quand j'ai jet&eacute; une coup
+ d'oeil &agrave; l'ordinateur, je n'avais que trois logiciels et demi
+ install&eacute;s. Quelque chose s'est-il mal pass&eacute;?</para>
+
+ <para>R. Non, le probl&egrave;me est que certains logiciels ont des
+ questions &agrave; vous poser auxquelles ils ne peuvent r&eacute;pondre &agrave;
+ votre place (par exemple, &ldquo;Voulez-vous imprimer au format
+ A4 ou au format l&eacute;gal US?&rdquo;) et il faut donc que quelqu'un
+ y r&eacute;ponde sur le moment.</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. Je ne veux pas passer toute la journ&eacute;e plant&eacute; devant
+ l'&eacute;cran. Une meilleure id&eacute;e?</para>
+
+ <para>A. OK, avant d'aller au lit/travail/jardin public,
+ tapez:</para>
+
+ <informalexample>
+ <screen>&prompt.root <userinput>cd /usr/ports</userinput>
+&prompt.root; <userinput>make -DBATCH install</userinput></screen>
+ </informalexample>
+
+ <para>Cela installera tous les logiciels sans interaction avec
+ l'utilisateur. A votre retour, tapez:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>cd /usr/ports</userinput>
+&prompt.root; <userinput>make -DIS_INTERACTIVE install</userinput></screen>
+ </informalexample>
+
+ <para>Pour terminer les installations.</para>
+ </listitem>
+
+ <listitem>
+ <para>Q. Au bureau, nous utilisons <literal>frobble</literal>, qui
+ fait partie de votre catalogue des logiciels port&eacute;s, mais nous
+ l'avons un peu modifi&eacute; pour nos besoins propres. Y-a-t-il un
+ moyen de faire notre propre &ldquo;paquetage&rdquo; pour le
+ distribuer plus facilement sur nos sites?</para>
+
+ <para>R. Pas de probl&egrave;me, si vous savez comment g&eacute;n&eacute;rer les
+ &ldquo;patches&rdquo; pour vos modifications:</para>
+
+ <informalexample>
+ <screen>&prompt.root; <userinput>cd /usr/ports/somewhere/frobble</userinput>
+&prompt.root; <userinput>make extract</userinput>
+&prompt.root; <userinput>cd work/frobble-2.8</userinput>
+[Appliquer vos mises &agrave; jour]
+&prompt.root; <userinput>cd ../..</userinput>
+&prompt.root; <userinput>make package</userinput></screen>
+ </informalexample>
+ </listitem>
+
+ <listitem>
+ <para>Q. Ce syst&egrave;me des logiciels port&eacute;s est vraiment g&eacute;nial. Je
+ d&eacute;sesp&egrave;re de comprendre comment vous avez fait. Quel est votre
+ secret?</para>
+
+ <para>R. Il n'y a absolument pas de secret, jetez juste un coup
+ d'oeil aux fichiers <filename>bsd.ports.mk</filename> et
+ <filename>bsd.ports.subdir.mk</filename> du r&eacute;pertoire des
+ <ulink url="file://localhost/usr/share/mk/"><filename>makefile</filename>s.</ulink></para>
+
+ <note>
+ <para>Cette lecture est d&eacute;conseill&eacute;e &agrave; ceux que les proc&eacute;dures
+ de commandes compliqu&eacute;es rebutent...)</para>
+ </note>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="porting">
+ <title>** Faire vous-m&ecirc;me un portage</title>
+
+ <para><emphasis>Contribution de &a.jkh;, &a.gpalmer;, &a.asami;
+ &a.obrien; et &a.hoek;. 28 Ao&ucirc;t 1996.</emphasis></para>
+
+ <para>Donc, vous voulez faire vous-m&ecirc;me votre propre portage?
+ G&eacute;nial!</para>
+
+ <para>Voici quelques indications sur la fa&ccedil;on de cr&eacute;er un nouveau
+ portage d'un logiciel pour FreeBSD. L'essentiel du travail
+ est fait par <filename>/usr/share/mk/bsd.port.mk</filename>, qui
+ est inclus dans le <filename>Makefile</filename> de chaque logiciel
+ port&eacute;. Reportez-vous s'il vous pla&icirc;t &agrave; ce fichier pour avoir plus
+ de d&eacute;tails sur le fonctionnement interne du catalogue des logiciels
+ port&eacute;s. M&ecirc;me si vous n'&eacute;crivez pas tous les jours des
+ <filename>Makefile</filename>s, il est pas mal comment&eacute;, et vous
+ en apprendrez malgr&eacute; tout beaucoup de choses.</para>
+
+ <note>
+ <para>Seule une partie des variables surchargeables
+ (<makevar><replaceable>VAR</replaceable></makevar>) est d&eacute;crite
+ dans ce document. La plupart (sinon toutes) sont explicit&eacute;es au
+ d&eacute;but de <filename>bsd.port.mk</filename>. Ce fichier utilise des
+ tabulations non standard. <application>Emacs</application> et
+ <application>Vim</application> devraient reconna&icirc;tre cette
+ configuration au chargement du fichier. <command>vi</command> ou
+ <command>ex</command> peuvent &ecirc;tre configur&eacute;s avec la valeur
+ ad&eacute;quate apr&egrave;s avoir charg&eacute; le fichier en tapant <command>:set
+ tabstop=4</command>.</para>
+ </note>
+
+ <sect2>
+ <title>Portage rapide</title>
+
+ <para>Cette section vous explique comment faire un portage rapide.
+ La plupart du temps, ce n'est pas suffisant, mais nous verrons
+ cela par la suite.</para>
+
+ <para>Commencez par r&eacute;cup&eacute;rer le fichier d'archive d'origine et
+ mettez-le dans <makevar>DISTDIR</makevar>, par d&eacute;faut c'est le
+ r&eacute;pertoire <filename>/usr/ports/distfiles</filename>.</para>
+
+ <note>
+ <para>Nous supposerons dans ce qui suit que le source a compil&eacute;
+ &ldquo;tel quel&rdquo;, i.e., il n'y a absolument pas eu de
+ modification &agrave; y apporter pour qu'il tourne sur votre machine
+ FreeBSD. Si vous avez d&ucirc; changer quelque chose, vous devrez
+ aussi vous reporter &agrave; la section suivante.</para>
+ </note>
+
+ <sect3>
+ <title>Ecrire le <filename>Makefile</filename></title>
+
+ <para>Le <filename>Makefile</filename> minimal ressemblera &agrave;
+ ceci&nbsp;:</para>
+
+ <programlisting>
+# Nouveau makefile du catalogue pour: oneko
+# Version correspondante: 1.1b
+# Date de cr&eacute;ation: 5 D&eacute;cembre 1994
+# Par: asami
+#
+# &#36;Id&#36;
+#
+
+DISTNAME= oneko-1.1b
+CATEGORIES= games
+MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/
+
+MAINTAINER= asami@FreeBSD.ORG
+
+MAN1= oneko.1
+MANCOMPRESSED= yes
+USE_IMAKE= yes
+
+.include &lt;bsd.port.mk&gt;</programlisting>
+
+ <para>Voyez si vous y comprenez quelque chose. Ne vous occupez
+ pas de la ligne <literal>&#36;Id&#36;</literal>, elle sera
+ automatiquement renseign&eacute;e par CVS quand le logiciel sera
+ import&eacute; dans notre arborescence principale des logiciels
+ port&eacute;s. Vous trouverez un exemple plus d&eacute;taill&eacute; &agrave; la section
+ <link linkend="porting-samplem">Exemple de
+ Makefile</link>.</para>
+
+ </sect3>
+
+ <sect3>
+ <title>Cr&eacute;er les fichiers de description</title>
+
+ <para>Il y a trois fichiers de description indispensables &agrave;
+ chaque logiciel port&eacute;, qu'il soit ou non pr&eacute;compil&eacute;. Ce sont
+ les fichiers <filename>COMMENT</filename>,
+ <filename>DESCR</filename> et <filename>PLIST</filename>,
+ du sous-r&eacute;pertoire <filename>pkg</filename>.</para>
+
+ <sect4>
+ <title><filename>COMMENT</filename></title>
+
+ <para>C'est une description en une seule ligne du logiciel.
+ <emphasis>S'il vous pla&icirc;t</emphasis>, n'incluez pas le nom
+ du logiciel (ni son num&eacute;ro de version) dans le commentaire.
+ Voici un exemple&nbsp;:</para>
+
+ <programlisting>
+Un chat poursuit une souris &agrave; travers l'&eacute;cran.</programlisting>
+
+ </sect4>
+
+ <sect4>
+ <title><filename>DESCR</filename></title>
+
+ <para>C'est une description plus longue du logiciel. Un &agrave;
+ quelques paragraphes, expliquant succintement ce qu'il
+ fait, suffisent.</para>
+
+ <note>
+ <para>Ce <emphasis>n'est pas</emphasis> un manuel, ni
+ une description d&eacute;taill&eacute;e de la mani&egrave;re de compiler et
+ d'utiliser le logiciel. Faites
+ <emphasis>s'il vous pla&icirc;t attention si vous la recopiez
+ du <filename>README</filename> ou des pages de
+ manuel</emphasis>; trop souvent, ce ne sont pas des
+ descriptions concises et elles sont mal format&eacute;es (e.g., les
+ pages de manuel sont justifi&eacute;es avec des espaces). S'il y a
+ une page Web officielle pour le logiciel, vous devriez la
+ mentionner ici.</para>
+ </note>
+
+ <para>Il vous est recommand&eacute; de signer en fin de fichier, comme
+ suit:</para>
+
+ <programlisting>
+C'est le portage de &ldquo;oneko&rdquo;, le chat qui poursuit la pauvre souris
+sur tout l'&eacute;cran.
+&nbsp;:
+(etc.)
+
+http://www.oneko.org/
+
+- Satoshi
+asami@cs.berkeley.edu</programlisting>
+
+ </sect4>
+
+ <sect4>
+ <title><filename>PLIST</filename></title>
+
+ <para>C'est la liste de tous les fichiers install&eacute;s pour ce
+ logiciel. On l'appelle aussi &ldquo;liste de paquetage&rdquo;
+ parce que le &ldquo;paquetage&rdquo; sera g&eacute;n&eacute;r&eacute; en archivant
+ tous les fichiers de cette liste. Les chemins d'acc&egrave;s sont
+ relatifs &agrave; <filename>/usr/local</filename> ou
+ <filename>/usr/X11R6</filename>). Si vous utilisez des
+ variables <makevar>MAN<replaceable>n</replaceable></makevar>
+ (comme vous devriez le faire), n'y listez pas les pages de
+ manuel.</para>
+
+ <para>Voici un court exemple:</para>
+
+ <programlisting>
+bin/oneko
+lib/X11/app-defaults/Oneko
+lib/X11/oneko/cat1.xpm
+lib/X11/oneko/cat2.xpm
+lib/X11/oneko/mouse.xpm
+@dirrm lib/X11/oneko</programlisting>
+
+ <para>Reportez-vous aux pages de manuel de
+ <citerefentry><refentrytitle>pkg_create</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+ pour plus de d&eacute;tails sur la &ldquo;liste de
+ paquetage&rdquo;.</para>
+
+ <note>
+ <para>Vous devez lister tous les fichiers, mais pas les noms
+ des r&eacute;pertoires. Par contre, s'il y a des r&eacute;pertoires cr&eacute;&eacute;s
+ &agrave; l'installation, veillez &agrave; ajouter les lignes
+ <literal>@dirrm</literal> n&eacute;cessaires pour qu'ils soient
+ d&eacute;truits si le logiciel est d&eacute;sinstall&eacute;.</para>
+
+ <para>Il est recommand&eacute; de lister les fichiers dans l'ordre
+ alphab&eacute;tique. Cela facilite beaucoup les contr&ocirc;les lors des
+ mises &agrave; jour.</para>
+ </note>
+ </sect4>
+ </sect3>
+
+ <sect3>
+ <title>Cr&eacute;er le fichier pour la somme de contr&ocirc;le</title>
+
+ <para>Tapez simplement <command>make makesum</command>.
+ Les r&egrave;gles de construction des logiciels port&eacute;s g&eacute;n&egrave;reront
+ automatiquement le fichier
+ <filename>files/md5</filename>.</para>
+
+ </sect3>
+
+ <sect3 id="porting-testing">
+ <title>Tester le portage</title>
+
+ <para>Vous devez v&eacute;rifiez que les r&egrave;gles de construction du
+ logiciel port&eacute; font exactement ce que vous voulez. Voici
+ les points importants &agrave; contr&ocirc;ler:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><filename>PLIST</filename> ne contient rien d'autre que
+ ce qu'installe votre logiciel.</para>
+ </listitem>
+
+ <listitem>
+ <para><filename>PLIST</filename> contient tout ce qu'installe
+ votre logiciel.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le logiciel peut &ecirc;tre install&eacute; plusieurs fois de suite
+ en utilisant la cible
+ <maketarget>reinstall</maketarget>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le m&eacute;canisme de portage du logiciel
+ <link linkend="porting-cleaning">fait le m&eacute;nage</link>
+ lors de la d&eacute;sinstallation.</para>
+ </listitem>
+ </itemizedlist>
+
+ <procedure>
+ <title>Ordre de test recommand&eacute;</title>
+
+ <step>
+ <para><command>make install</command></para>
+ </step>
+
+ <step>
+ <para><command>make package</command></para>
+ </step>
+
+ <step>
+ <para><command>make deinstall</command></para>
+ </step>
+
+ <step>
+ <para><command>pkg_add `make nom_du_paquetage`</command></para>
+ </step>
+
+ <step>
+ <para><command>make deinstall</command></para>
+ </step>
+
+ <step>
+ <para><command>make reinstall</command></para>
+ </step>
+
+ <step>
+ <para><command>make package</command></para>
+ </step>
+ </procedure>
+
+ <para>V&eacute;rifiez qu'il n'y a aucun message d'avertissement
+ aux &eacute;tapes <maketarget>package</maketarget> et
+ <maketarget>deinstall</maketarget>. Apr&egrave;s l'&eacute;tape 3, v&eacute;rifiez
+ que tous les r&eacute;pertoires cr&eacute;&eacute;s ont bien &eacute;t&eacute; d&eacute;truits. Essayez
+ aussi d'utilisez le logiciel apr&egrave;s l'&eacute;tape 4, pour vous assurer
+ qu'il fonctionne correctement apr&egrave;s installation sous forme
+ de &ldquo;paquetage&rdquo;.</para>
+ </sect3>
+
+ <sect3 id="porting-portlint">
+ <title>V&eacute;rifier votre portage avec
+ <command>portlint</command></title>
+
+ <para>Utilisez s'il vous pla&icirc;t la commande
+ <command>portlint</command> pour contr&ocirc;ler que votre portage
+ se conforme &agrave; nos recommandations.
+ Le programme <command>portlint</command> fait partie du catalogue
+ des logiciels port&eacute;s. En particulier, vous devriez v&eacute;rifier
+ que votre <link linkend="porting-samplem">Makefile</link> est
+ bien construit et que le nom du
+ <link linkend="porting-pkgname">paquetage</link> est
+ correct.</para>
+ </sect3>
+
+ <sect3 id="porting-submitting">
+ <title>Soumettre le portage</title>
+
+ <para>Veillez d'abord &agrave; lire la section <link
+ linkend="porting-dads">A faire et &agrave; ne pas
+ faire</link>.</para>
+
+ <para>Maintenant que vous &ecirc;tes satisfait de votre portage, la
+ seule chose qui reste &agrave; faire est de le mettre dans
+ l'arborescence principale des logiciels port&eacute;s de FreeBSD
+ de fa&ccedil;on &agrave; ce que tout le monde en profite. Nous n'avons
+ pas besoin de votre r&eacute;pertoire
+ <filename>work</filename> ni de votre fichier
+ <filename><replaceable>nom_du_paquetage</replaceable>.tgz</filename>,
+ effacez-les donc maintenant. Incluez simplement ensuite le
+ r&eacute;sultat de la commande <command>shar `find r&eacute;pertoire_portage`</command>
+ dans un rapport de bogue et envoyez-le nous avec le programme
+ <citerefentry>
+ <refentrytitle>send-pr</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>. (Voyez <link linkend="contrib-general">Rapports
+ de bogues et commentaires g&eacute;n&eacute;raux</link> pour plus
+ d'informations sur <citerefentry>
+ <refentrytitle>send-pr</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>.) Si le logiciel port&eacute; non compress&eacute; fait plus de
+ 20KB, vous devrez en faire une archive compress&eacute;e et utiliser
+ <citerefentry><refentrytitle>uuencode</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry> avant de l'inclure dans le rapport (les archives
+ &ldquo;tar&rdquo; &ldquo;uuencod&eacute;es&rdquo; sont admises m&ecirc;me
+ si le rapport de bogue fait moins de 20KB, quoique non
+ souhait&eacute;es dans ce cas). Veillez &agrave; classer le rapport dans la
+ cat&eacute;gorie
+ <literal>ports</literal>&nbsp;-&nbsp;&ldquo;portages&rdquo; et
+ la classe
+ <literal>change-request</literal>&nbsp;-&nbsp;&ldquo;demande
+ de modification&rdquo;. (Ne classez pas le rapport
+ <literal>confidential</literal>&nbsp;-&nbsp;&ldquo;confidentiel&rdquo;&nbsp;!)</para>
+
+ <para>Encore une fois, <emphasis>n'incluez pas la distribution
+ originale du source, le r&eacute;pertoire <filename>work</filename> ni le
+ &ldquo;paquetage&rdquo; construit avec <command>make
+ package</command></emphasis>.</para>
+
+ <note>
+ <para>Dans le pass&eacute;, nous demandions que les soumissions de
+ logiciels port&eacute;s passent par notre site ftp
+ (<hostid role="fqdn">ftp.freebsd.org</hostid>). Ce n'est plus
+ souhaitable parce que l'acc&egrave;s en lecture est interdit sur le
+ r&eacute;pertoire <filename>incoming/</filename> de ce site du fait
+ de la trop grande quantit&eacute; de logiciels pirat&eacute;s qui y
+ atterrissaient.</para>
+ </note>
+
+ <para>Nous regarderons votre portage, vous contacterons si n&eacute;cessaire,
+ et le mettrons dans l'arborescence. Votre nom appara&icirc;tra aussi dans
+ la liste des &ldquo;Autres collaborateurs de FreeBSD&rdquo; du
+ manuel FreeBSD et dans d'autres fichiers. G&eacute;nial,
+ non?!? <!-- smiley -->:)</para>
+
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Portage &eacute;volu&eacute;</title>
+
+ <para>Bon, ce n'&eacute;tait en fait pas si simple, et il a fallu
+ modifier le code pour que le portage fonctionne. Dans cette
+ section, nous allons expliquer, &eacute;tape par &eacute;tape, comment faire
+ dans ce cas pour appliquer le paradigme des logiciels
+ port&eacute;s.</para>
+
+ <sect3>
+ <title>Comment les choses fonctionnent</title>
+
+ <para>Pour commencer, voici ce qui se passe lorsque
+ l'utilisateur tape <command>make</command> dans le
+ r&eacute;pertoire de votre logiciel port&eacute;. Ouvrir le fichier
+ <filename>bsd.port.mk</filename> dans une autre fen&ecirc;tre
+ pendant que vous lisez ceci vous en facilitera la
+ compr&eacute;hension.</para>
+
+ <para>Ne vous inqui&eacute;tez pas si vous ne comprenez pas compl&egrave;tement
+ ce que fait <filename>bsd.port.mk</filename>, peu de gens y
+ arrivent... <!-- smiley --><emphasis>:&gt;</emphasis></para>
+
+ <procedure>
+
+ <step>
+ <para>La cible <maketarget>fetch</maketarget> est ex&eacute;cut&eacute;e.
+ La cible <maketarget>fetch</maketarget> est charg&eacute;e de
+ faire en sorte que l'archive soit localement
+ disponible dans <makevar>DISTDIR</makevar>. Si
+ <maketarget>fetch</maketarget> ne trouve pas les
+ fichiers dans
+ <makevar>DISTDIR</makevar>, elle regardera &agrave; l'URL
+ <makevar>MASTER_SITES</makevar>, d&eacute;finie dans le
+ <filename>Makefile</filename>, et sur notre site ftp
+ principal dans <ulink
+ URL="ftp://ftp.freebsd.org/pub/FreeBSD/distfiles/">ftp://ftp.freebsd.org/pub/FreeBSD/distfiles/</ulink> o&ugrave; nous avons mis les archives
+ valid&eacute;es, &agrave; titre de copie de secours. Elle essayera alors
+ de rapatrier le fichier de la distribution avec
+ <makevar>FETCH</makevar>, en pr&eacute;sumant que la machine
+ qui fait la demande a un acc&egrave;s direct &agrave; l'Internet. En
+ cas de succ&egrave;s, le fichier est sauvegard&eacute; dans
+ <makevar>DISTDIR</makevar> pour la suite, et le traitement
+ peut continuer.</para>
+ </step>
+
+ <step>
+ <para>La cible <maketarget>extract</maketarget> est ensuite
+ ex&eacute;cut&eacute;e. Elle cherche le fichier de distribution de votre
+ portage (typiquement une archive cr&eacute;&eacute;e par
+ <command>tar</command> et compress&eacute;e avec
+ <command>gzip</command>) dans
+ <makevar>DISTDIR</makevar> et en extrait le contenu dans
+ un sous-r&eacute;pertoire temporaire d&eacute;fini par
+ <makevar>WRKDIR</makevar>
+ (par d&eacute;faut <filename>work</filename>).</para>
+ </step>
+
+ <step>
+ <para>La cible suivante est <maketarget>patch</maketarget>.
+ Dans un premier temps, tous les fichiers de mise &agrave; jour
+ d&eacute;finis dans <makevar>PATCHFILES</makevar> sont appliqu&eacute;s.
+ Ensuite, s'il y a des fichiers de mise &agrave; jour dans
+ <makevar>PATCHDIR</makevar> (le sous-r&eacute;pertoire
+ <filename>patches</filename> par d&eacute;faut), ils sont
+ appliqu&eacute;s, dans l'ordre alphab&eacute;tique cette fois-ci.</para>
+ </step>
+
+ <step>
+ <para>Vient ensuite <maketarget>configure</maketarget> qui
+ peut faire l'une des op&eacute;rations suivantes:</para>
+
+ <orderedlist>
+
+ <listitem>
+ <para>Si elle existe, ex&eacute;cuter la proc&eacute;dure
+ <filename>scripts/configure</filename>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si <makevar>HAS_CONFIGURE</makevar> ou
+ <makevar>GNU_CONFIGURE</makevar>
+ est d&eacute;finie, ex&eacute;cuter
+ <filename><makevar>WRKSRC</makevar>/configure</filename>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si <makevar>USE_IMAKE</makevar> est d&eacute;finie,
+ ex&eacute;cuter <makevar>XMKMF</makevar>
+ (par d&eacute;faut: <command>xmkmf
+ -a</command>).</para>
+ </listitem>
+
+ </orderedlist>
+
+ </step>
+
+ <step>
+ <para>La derni&egrave;re cible est
+ <maketarget>build</maketarget>. Elle passe dans le
+ sous-r&eacute;pertoire de travail du portage
+ (<makevar>WRKSRC</makevar>) et se charge de la
+ compilation. Si la variable <makevar>USE_GMAKE</makevar>
+ est d&eacute;finie, la commande <command>make</command> GNU est
+ utilis&eacute;e, sinon c'est la commande <command>make</command>
+ du syst&egrave;me qui est employ&eacute;e.</para>
+ </step>
+
+ </procedure>
+
+ <para>Ce sont les op&eacute;rations par d&eacute;faut. Vous pouvez en plus
+ d&eacute;finir des cibles
+ <maketarget>pre-<replaceable>quelque_chose</replaceable></maketarget>
+ ou <maketarget>post-<replaceable>quelque_chose</replaceable></maketarget>,
+ ou mettre des proc&eacute;dures du m&ecirc;me nom dans le sous-r&eacute;pertoire
+ <filename>scripts</filename>, et elles pr&eacute;c&eacute;deront ou suivront
+ les op&eacute;rations par d&eacute;faut.</para>
+
+ <para>Par exemple, si vous avez d&eacute;fini une cible
+ <maketarget>post-extract</maketarget> dans votre
+ <filename>Makefile</filename>, et cr&eacute;&eacute; un fichier
+ <filename>pre-build</filename> dans le sous-r&eacute;pertoire
+ <filename>scripts</filename>, la cible
+ <maketarget>post-extract</maketarget> sera invoqu&eacute;e apr&egrave;s
+ l'op&eacute;ration habituelle d'extraction et la proc&eacute;dure
+ <filename>pre-build</filename> ex&eacute;cut&eacute;e avant d'appliquer les
+ r&egrave;gles de compilation par d&eacute;faut. Il est recommand&eacute; d'utiliser
+ des cibles dans le <filename>Makefile</filename> si les actions
+ sont suffisamment &eacute;l&eacute;mentaires, car il est alors plus facile &agrave;
+ quelqu'un d'autre de voir quelles sont les op&eacute;rations
+ suppl&eacute;mentaires effectu&eacute;es lors du portage.</para>
+
+ <para>Les op&eacute;rations par d&eacute;faut sont prises en charge par les
+ cibles
+ <maketarget>do-<replaceable>quelque_chose</replaceable></maketarget>
+ du fichier <filename>bsd.port.mk</filename>. Par exemple, les
+ commandes d'extraction sont d&eacute;finies par la cible
+ <maketarget>do-extract</maketarget>. Si la cible par d&eacute;faut ne
+ vous convient pas, vous pouvez r&eacute;definir
+ <maketarget>do-<replaceable>quelque_chose</replaceable></maketarget>
+ dans votre <filename>Makefile</filename>.</para>
+
+ <note>
+ <para>Les cibles &ldquo;principales&rdquo; (e.g., <maketarget>extract</maketarget>, <maketarget>configure</maketarget>, etc.) ne font rien
+ d'autre que de s'assurer que les &eacute;tapes qui les pr&eacute;c&egrave;dent se
+ sont bien d&eacute;roul&eacute;es et appellent les vrais cibles ou
+ proc&eacute;dures. Elles ne doivent donc pas &ecirc;tre modifi&eacute;es. Si vous
+ voulez changer la m&eacute;thode d'extraction, red&eacute;finissez
+ <maketarget>do-extract</maketarget>, mais ne modifiez pas
+ <maketarget>extract</maketarget>&nbsp;!</para>
+ </note>
+
+ <para>Maintenant que vous avez compris ce qui se passe quand
+ l'utilisateur tape <command>make</command>, passons en revue
+ les &eacute;tapes conseill&eacute;es pour cr&eacute;er le portage parfait.</para>
+
+ </sect3>
+
+ <sect3>
+ <title>Obtenez les sources d'origine</title>
+
+ <para>R&eacute;cup&eacute;rez les sources d'origine (normalement) sous forme
+ d'archive compress&eacute;e
+ (<filename><replaceable>foo</replaceable>.tar.gz</filename> ou
+ <filename><replaceable>foo</replaceable>.tar.Z</filename>) et
+ copiez-les dans <makevar>DISTDIR</makevar>. Utilisez toujours
+ des sources <emphasis>de premi&egrave;re main</emphasis> si vous le
+ pouvez.</para>
+
+ <para>Si vous ne trouvez pas de site ftp/http correctement
+ accessible sur le r&eacute;seau, ou ne trouvez que des sites qui
+ utilisent des formats non standard, vous voudrez peut-&ecirc;tre
+ mettre une copie sur un serveur ftp ou http fiable que vous
+ contr&ocirc;lez (e.g., votre page personnelle). Veillez &agrave; d&eacute;finir
+ <makevar>MASTER_SITES</makevar> pour refl&eacute;ter ce choix.</para>
+
+ <para>Si vous ne trouvez aucun endroit ad&eacute;quat et fiable o&ugrave; mettre
+ la distribution (si vous y &ecirc;tes autoris&eacute;, vous pouvez la mettre
+ dans votre sous-r&eacute;pertoire <filename>public_html/</filename> sur
+ <hostid>freefall</hostid>), nous pouvons en dernier ressort
+ &ldquo;l'accueillir&rdquo; nous-m&ecirc;me en la mettant dans
+ <filename>ftp://ftp.freebsd.org/pub/FreeBSD/distfiles/LOCAL_PORTS/</filename>.
+ D&eacute;finissez cette adresse dans
+ <makevar>MASTER_SITE_LOCAL</makevar>. Adressez un courrier
+ &eacute;lectronique &agrave; la &a.ports;, si vous n'&ecirc;tes pas s&ucirc;r de ce qu'il
+ faut faire.</para>
+
+ <para>Si la distribution est fr&eacute;quemment modifi&eacute;e sans raison
+ valable, envisagez de la recopier sur votre page personnelle et
+ listez-la en premier dans <makevar>MASTER_SITES</makevar>. Cela
+ &eacute;vitera que les utilisateurs aient des erreurs
+ &ldquo;<errorname>checksum mismatch</errorname>&rdquo;
+ sur les sommes de contr&ocirc;le, et r&eacute;duira aussi
+ le travail des personnes charg&eacute;es de maintenir notre site ftp.
+ D'autre part, s'il n'y a qu'un seul site pour le logiciel
+ d'origine, il est recommand&eacute; que vous ayez une sauvegarde sur
+ votre site et qu'elle soit mentionn&eacute;e en second lieu dans
+ <makevar>MASTER_SITES</makevar>.</para>
+
+ <para>S'il faut d'autres &ldquo;patches&rdquo; disponibles sur
+ l'Internet pour ce portage, r&eacute;cup&eacute;rez-les aussi et mettez-les
+ dans <makevar>DISTDIR</makevar>. Ce n'est pas un probl&egrave;me s'ils
+ proviennent d'autres sites que la distribution de base, nous
+ pouvons g&eacute;rer cette situation (voyez plus bas la description
+ de <link
+ linkend="porting-patchfiles">PATCHFILES</link>).</para>
+
+ </sect3>
+
+ <sect3>
+ <title>Modifier les sources</title>
+
+ <para>Extrayez le contenu de l'archive dans un sous-r&eacute;pertoire
+ priv&eacute; et faites-y les modifications n&eacute;cessaires pour que le
+ logiciel compile correctement avec la version courante de
+ FreeBSD. Gardez <emphasis>avec soin trace</emphasis> de tout
+ ce que vous faites, car vous allez bient&ocirc;t automatiser ces
+ op&eacute;rations. Tout, y compris suppressions, ajouts et
+ modifications de fichiers doit pouvoir &ecirc;tre fait par des
+ proc&eacute;dures ou fichiers de mise &agrave; jour une fois que vous aurez
+ termin&eacute; le portage.</para>
+
+ <para>Si le portage demande l'intervention ou des choix de
+ l'utilisateur &agrave; la compilation ou &agrave; l'installation, vous
+ devriez jeter un oeil aux proc&eacute;dures classiques
+ <application>Configure</application> de Larry Wall, et peut-&ecirc;tre
+ faire quelque chose du m&ecirc;me genre. L'objectif du nouveau
+ catalogue des logiciels port&eacute;s est que chaque logiciel soit
+ aussi &ldquo;pr&ecirc;t-a-l'emploi&rdquo; que possible pour
+ l'utilisateur final, tout en utilisant le minimum d'espace
+ disque.</para>
+
+ <note>
+ <para>Sauf si vous le pr&eacute;cisez explicitement, tous les fichiers
+ de mise &agrave; jour, proc&eacute;dures et fichiers que vous aurez cr&eacute;&eacute;s
+ et introduits comme contribution au catalogue des logiciels
+ port&eacute;s sont suppos&eacute;s couverts par les conditions standard
+ de copyright BSD.</para>
+ </note>
+ </sect3>
+
+ <sect3>
+ <title>Modifications</title>
+
+ <para>Les fichiers ajout&eacute;s ou modifi&eacute;s pendant la mise au point
+ du portage peuvent &ecirc;tre identifi&eacute;s avec un
+ <command>diff</command> r&eacute;cursif pour g&eacute;n&eacute;rer ensuite les
+ fichiers de mise &agrave;
+ jour&nbsp;-&nbsp;<foreignphrase>patches</foreignphrase>. Chaque
+ ensemble de mise &agrave; jour que vous souhaitez appliquer doit
+ &ecirc;tre rassembl&eacute; dans un fichier
+ <filename>patch-<replaceable>xx</replaceable></filename>, o&ugrave;
+ <replaceable>xx</replaceable> correspond au rang de cette
+ mise &agrave; jour dans la s&eacute;quence d'application de ces
+ modifications&nbsp;-&nbsp;elles sont trait&eacute;es en
+ <emphasis>ordre alphab&eacute;tique</emphasis>, donc
+ <literal>aa</literal> d'abord, <literal>ab</literal> en second
+ et ainsi de suite. Ces fichiers doivent &ecirc;tre plac&eacute;s dans
+ <makevar>PATCHDIR</makevar>, d'o&ugrave; ils seront automatiquement
+ appliqu&eacute;s. Toutes les modifications doivent &ecirc;tre relatives &agrave;
+ <makevar>WRKSRC</makevar> (c'est habituellement le r&eacute;pertoire
+ o&ugrave; l'archive s'extrait elle-m&ecirc;me, et o&ugrave; se fera la
+ compilation). Pour simplifier les corrections et les mises &agrave;
+ niveau, vous devriez &eacute;viter d'avoir plus d'un fichier de mise
+ &agrave; jour s'appliquant au m&ecirc;me fichier source
+ (e.g., <filename>patch-aa</filename> et <filename>patch-ab</filename> modifiant tous deux <filename><makevar>WRKSRC</makevar>/foobar.c</filename>).</para>
+
+ </sect3>
+
+ <sect3>
+ <title>Configuration</title>
+
+ <para>Ajoutez toutes les autres commandes de mise au point &agrave; votre
+ proc&eacute;dure <filename>configure</filename> et enregistrez-la dans
+ le sous-r&eacute;pertoire <filename>scripts</filename>. Comme on l'a
+ dit plus haut, vous pouvez aussi utiliser les cibles du
+ <filename>Makefile</filename> et/ou les proc&eacute;dures
+ <filename>pre-configure</filename> ou
+ <filename>post-configure</filename>.</para>
+
+ </sect3>
+
+ <sect3>
+ <title>Interactions avec l'utilisateur</title>
+
+ <para>Si vos proc&eacute;dures de compilation, configuration ou
+ installation ont besoin d'interagir avec l'utilisateur,
+ d&eacute;finissez la variable <makevar>IS_INTERACTIVE</makevar> dans
+ votre <filename>Makefile</filename>. Cela permettra aux
+ &ldquo;compilations de nuits&rdquo; d'ignorer le logiciel
+ que vous avez port&eacute;, si l'utilisateur d&eacute;finit dans son
+ environnement la variable <envar>BATCH</envar> (s'il d&eacute;finit
+ la variable <envar>INTERACTIVE</envar>,
+ <emphasis>seuls</emphasis> les logiciels port&eacute;s pour lesquels
+ il faut des r&eacute;ponses de l'utilisateur sont compil&eacute;s).</para>
+
+ <para>Il est aussi recommand&eacute;, s'il y a des r&eacute;ponses par d&eacute;faut
+ raisonnables &agrave; vos questions, de tester la variable
+ <makevar>PACKAGE_BUILDING</makevar> et de d&eacute;sactiver la partie
+ interactive de la proc&eacute;dure si cette variable est d&eacute;finie. Cela
+ permet de compiler les &ldquo;paquetages&rdquo; pour les CD-ROMs
+ et les sites ftp.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Configurer le Makefile</title>
+
+ <para>Il est assez facile de configurer le Makefile, et nous vous
+ sugg&eacute;rons &agrave; nouveau de jeter un coup d'oeil aux exemples
+ existants avant de commencer. Il y a aussi un
+ <link linkend="porting-samplem">exemple de Makefile</link> dans ce
+ manuel, consultez-le donc et respectez s'il vous pla&icirc;t l'ordre
+ des variables et des sections de ce mod&egrave;le pour que votre
+ portage soit plus facile &agrave; lire pour les autres.</para>
+
+ <para>Envisageons maintenant les probl&egrave;mes suivants en
+ s&eacute;quence au fur et &agrave; mesure que vous mettez au point
+ votre nouveau Makefile&nbsp;:</para>
+
+ <sect3>
+ <title>Le source original</title>
+
+ <para>Se trouve-t-il dans <makevar>DISTDIR</makevar> sous forme standard
+ d'archive compress&eacute;e avec
+ <citerefentry><refentrytitle>gzip</refentrytitle> <manvolnum>1</manvolnum></citerefentry>.
+ Si ce n'est pas le cas, vous devriez envisager de surcharger une des
+ variables <makevar>EXTRACT_CMD</makevar>,
+ <makevar>EXTRACT_BEFORE_ARGS</makevar>,
+ <makevar>EXTRACT_AFTER_ARGS</makevar>,
+ <makevar>EXTRACT_SUFX</makevar> ou <makevar>DISTFILES</makevar> selon
+ le degr&eacute; de non-conformit&eacute; du fichier de distribution
+ de votre logiciel &agrave; porter. (Le cas le plus fr&eacute;quent est
+ <literal>EXTRACT_SUFX=.tar.Z</literal>, quand l'archive est
+ compress&eacute;e avec
+ <citerefentry><refentrytitle>compress</refentrytitle> <manvolnum>1</manvolnum></citerefentry>
+ et non
+ <citerefentry><refentrytitle>gzip</refentrytitle> <manvolnum>1</manvolnum></citerefentry>.)</para>
+
+ <para>Dans le pire des cas, vous pouvez simplement cr&eacute;er votre
+ propre cible <maketarget>do-extract</maketarget> pour surcharger la
+ cible par d&eacute;faut, bien que ce ne soit que rarement, sinon
+ jamais, n&eacute;cessaire.</para>
+ </sect3>
+
+ <sect3>
+ <title><makevar>DISTNAME</makevar></title>
+
+ <para>Vous devez affecter &agrave; <makevar>DISTNAME</makevar> le nom de
+ fichier de votre logiciel &agrave; porter. Les r&egrave;gles par
+ d&eacute;faut veulent que le fichier de distribution
+ (<makevar>DISTFILES</makevar>) s'appelle
+ <makevar>DISTNAME</makevar><makevar>EXTRACT_SUFX</makevar> qui, si
+ c'est un fichier d'archive habituel, sera quelque chose du style
+ <literal>foozolix-1.0.tar.gz</literal> si
+ <literal>DISTNAME=foozolix-1.0</literal>.</para>
+
+ <para>Les r&egrave;gles par d&eacute;faut veulent aussi que l(es)
+ archive(s) soi(en)t extraite(s) dans un sous-r&eacute;pertoire
+ appel&eacute; <filename>work/<makevar>DISTNAME</makevar></filename>,
+ e.g., <filename>work/foozolix-1.0/</filename>.</para>
+
+ <para>Toutes ces conventions peuvent bien s&ucirc;r &ecirc;tre
+ surcharg&eacute;es; ce sont simplement les valeurs par d&eacute;faut
+ qui font gagner le plus de temps. Pour un logiciel &agrave; porter
+ pour lequel il y a plusieurs fichiers de distribution,
+ d&eacute;finissez simplement explicitement
+ <makevar>DISTFILES</makevar>. S'il n'y a qu'un sous-ensemble de
+ <makevar>DISTFILES</makevar> qui est effectivement constitu&eacute;
+ d'archives extractibles, d&eacute;finissez-les dans
+ <makevar>EXTRACT_ONLY</makevar>, qui surchargera la liste de
+ <makevar>DISTFILES</makevar> au moment de l'extraction, les autres
+ restant dans <makevar>DISTDIR</makevar> pour usage
+ ult&eacute;rieur.</para>
+ </sect3>
+
+ <sect3>
+ <title><makevar>PKGNAME</makevar></title>
+
+ <para>Si <makevar>DISTNAME</makevar> n'est pas conforme &agrave; nos
+ <link linkend="porting-pkgname">recommandations pour un bon nom de
+ paquetage</link>, vous devriez affecter &agrave; la variable
+ <makevar>PKGNAME</makevar> une meilleure valeur. Reportez-vous aux
+ recommandations mentionn&eacute;es ci-dessus pour plus de
+ d&eacute;tails.</para>
+ </sect3>
+
+ <sect3>
+ <title><makevar>CATEGORIES</makevar></title>
+
+ <para>Quand un paquetage est cr&eacute;e, il est mis dans
+ <filename>/usr/ports/packages/All</filename> et des liens sont
+ d&eacute;finis dans un ou plusieurs sous-r&eacute;pertoires de
+ <filename>/usr/ports/packages</filename>. Les noms de ces
+ sous-r&eacute;pertoires sont sp&eacute;cifi&eacute;s par la
+ variable <makevar>CATEGORIES</makevar>. L'objectif est de faciliter
+ la vie de l'utilisateur qui erre dans la quantit&eacute; de
+ paquetages sur le site ftp ou le CD-ROM. Jettez un oeil s'il vous
+ pla&icirc;t aux
+ <link linkend="porting-categories">cat&eacute;gories</link>
+ existantes et choisissez celles qui conviennent &agrave; votre
+ logiciel &agrave; porter.</para>
+
+ <para>Cette liste d&eacute;termina aussi o&ugrave; le logiciel sera
+ import&eacute; dans l'arborescence du catalogue des logiciels
+ port&eacute;s Si vous y mentionnez plus d'une cat&eacute;gorie, les
+ fichiers iront dans le sous-r&eacute;pertoire de m&ecirc;me nom que la
+ premi&egrave;re de ces cat&eacute;gories. Reportez-vous &agrave; la
+ section <link linkend="porting-categories">Cat&eacute;gories</link>
+ pour plus d'informations sur la mani&egrave;re de s&eacute;lectionner
+ les bonnes cat&eacute;gories.</para>
+
+ <para>Si votre logiciel &agrave; porter appartient vraiment &agrave; une
+ autre cat&eacute;gorie que celles qui sont d&eacute;j&agrave;
+ d&eacute;finies, vous pouvez m&ecirc;me cr&eacute;er une nouvelle
+ cat&eacute;gorie. Dans ce cas, envoyez s'il vous pla&icirc;t un
+ courrier &eacute;lectronique &agrave; la &a.ports; pour proposer la
+ cr&eacute;ation d'une nouvelle cat&eacute;gorie.</para>
+
+ <note>
+ <para>Il n'y a pas de contr&ocirc;le des noms de cat&eacute;gorie.
+ <command>make paquetage</command> cr&eacute;era sans sourcillier un
+ nouveau sous-r&eacute;pertoire si vous orthographiez mal le nom de
+ la cat&eacute;gorie, soyez donc prudent&nbsp;!</para>
+ </note>
+ </sect3>
+
+ <sect3>
+ <title><makevar>MASTER_SITES</makevar></title>
+
+ <para>Indiquez le r&eacute;pertoire de l'&ldquo;URL&rdquo; ftp/http
+ o&ugrave; se trouve l'archive originale dans
+ <makevar>MASTER_SITES</makevar>. N'oubliez pas le &ldquo;slash&rdquo;
+ final (<filename>/</filename>)&nbsp;!</para>
+
+ <para>Les macros-instructions <command>make</command> essayerons
+ d'utiliser cette valeur pour r&eacute;cup&eacute;rer le fichier de
+ distribution avec <makevar>FETCH</makevar>, si elles ne le trouvent
+ pas sur votre syst&egrave;me.</para>
+
+ <para>Il est conseill&eacute; de mentionner plusieurs sites dans cette
+ liste, si possible sur des continents diff&eacute;rents. Cela
+ constituera un garde-fou contre les probl&egrave;mes du r&eacute;seau
+ mondial, et nous envisageons m&ecirc;me d'ajouter la
+ d&eacute;termination automatique du site de r&eacute;f&eacute;rence
+ le plus proche, pour aller y chercher la distribution&nbsp;!</para>
+
+ <para>Si l'archive d'origine se trouve sur l'une des archives classiques suivantes&nbsp;: X-contrib, GNU, Perl CPAN, TeX CTAN ou Linux Sunsite,
+ vous pouvez y faire r&eacute;f&eacute;rence sous forme plus compacte
+ en vous servant de <makevar>MASTER_SITE_XCONTRIB</makevar>,
+ <makevar>MASTER_SITE_GNU</makevar>,
+ <makevar>MASTER_SITE_PERL_CPAN</makevar>,
+ <makevar>MASTER_SITE_TEX_CTAN</makevar> et
+ <makevar>MASTER_SITE_SUNSITE</makevar>. Affectez simplement &agrave;
+ <makevar>MASTER_SITE_SUBDIR</makevar> le chemin d'acc&egrave;s au
+ fichier dans l'archive. En voici un exemple&nbsp;:</para>
+
+ <programlisting>
+MASTER_SITES= ${MASTER_SITE_XCONTRIB}
+MASTER_SITE_SUBDIR= applications
+ </programlisting>
+
+ <para>L'utilisateur peut aussi configurer les variables
+ <makevar>MASTER_SITE_*</makevar> dans
+ <filename>/etc/make.conf</filename> pour surcharger vos choix, et
+ utiliser &agrave; la place ses sites miroir favoris pour ces
+ archives.</para>
+ </sect3>
+
+ <sect3 id="porting-patchfiles">
+ <title><makevar>PATCHFILES</makevar></title>
+
+ <para>Si votre logiciel &agrave; porter a besoin de
+ correctifs&nbsp;-&nbsp;<foreignphrase>patches</foreignphrase>&nbsp;-&nbsp;disponibles
+ via ftp ou http, affectez &agrave; <makevar>PATCHFILES</makevar> les
+ noms des fichiers et &agrave; <makevar>PATCH_SITES</makevar>
+ l'&ldquo;URL&rdquo; du r&eacute;pertoire o&ugrave; ils se trouvent (le
+ format est le m&ecirc;me que pour
+ <makevar>MASTER_SITES</makevar>).</para>
+
+ <para>Si le correctif ne s'applique pas &agrave; la racine de
+ l'arborescence des sources (i.e., <makevar>WKRSRC</makevar>) parce
+ qu'il contient des chemins d'acc&egrave;s suppl&eacute;mentaires,
+ d&eacute;finissez <makevar>PATCH_DIST_STRIP</makevar> en
+ cons&eacute;quence. Par exemple, si tous les noms de fichiers dans le
+ correctif sont pr&eacute;c&eacute;d&eacute;s de
+ <literal>foozolix-1.0/</literal>, configurez alors
+ <literal>PATCH_DIST_STRIP=-p1</literal>.</para>
+
+ <para>Ne vous inqui&eacute;tez pas si les correctifs sont
+ compress&eacute;s, ils seront automatiquement
+ d&eacute;compress&eacute;s si les noms des fichiers se terminent par
+ <filename>.gz</filename> ou <filename>.Z</filename>.</para>
+
+ <para>Si le correctif est distribu&eacute; avec d'autres fichiers, de la
+ documentation par exemple, sous forme d'archive compress&eacute;e avec
+ <citerefentry><refentrytitle>gzip</refentrytitle> <manvolnum>1</manvolnum></citerefentry>,
+ vous ne pouvez pas utiliser <makevar>PATCHFILES</makevar>. Dans ce
+ cas, ajoutez le nom et la localisation du correctif &agrave;
+ <makevar>DISTFILES</makevar> et <makevar>MASTER_SITES</makevar>. Puis,
+ appliquez le correctif depuis la cible
+ <maketarget>pre-patch</maketarget>, soit en y ex&eacute;cutant la
+ commande <command>patch</command>, soit en copiant le correctif dans
+ le r&eacute;pertoire <makevar>PATCHDIR</makevar> et en l'appelant
+ <filename>patch-<replaceable>xx</replaceable></filename>.</para>
+
+ <note>
+ <para>Remarquez que cette archive sera extraite en m&ecirc;me temps
+ que le source de base, il n'est donc pas n&eacute;cessaire de
+ l'extraire explicitement si elle est normalement compress&eacute;e
+ avec
+ <citerefentry><refentrytitle>gzip</refentrytitle> <manvolnum>1</manvolnum></citerefentry>
+ ou
+ <citerefentry><refentrytitle>compress</refentrytitle> <manvolnum>1</manvolnum></citerefentry>.
+ Si vous le faites n&eacute;anmoins, faites attention &agrave;
+ ne rien &eacute;craser de ce qui existe dans le r&eacute;pertoire.
+ Et n'oubliez pas non plus d'ajouter une commande pour supprimer le
+ correctif recopi&eacute; &agrave; la cible
+ <maketarget>pre-clean</maketarget>.</para>
+ </note>
+ </sect3>
+
+ <sect3>
+ <title><makevar>MAINTAINER</makevar></title>
+
+ <para>Indiquez ici votre adresse &eacute;lectronique. S'il vous
+ pla&icirc;t. <!-- smiley --><emphasis>:)</emphasis></para>
+
+ <para>Pour une description d&eacute;taill&eacute; de la
+ responsabilit&eacute; du charg&eacute; de la maintenance,
+ reportez-vous &agrave; la section
+ <link linkend="policies-maintainer">MAINTAINER des
+ <filename>Makefile</filename>s</link>.</para>
+ </sect3>
+
+ <sect3>
+ <title>D&eacute;pendances</title>
+
+ <para>De nombreux logiciels port&eacute;s d&eacute;pendent d'autres
+ logiciels. Il y a cinq variables que vous pouvez utiliser pour vous
+ assurer qu'il y a tout ce qu'il faut sur la machine de l'utilisateur.
+ Il y a aussi des variables pr&eacute;d&eacute;finies pour les cas les
+ plus courants, et quelques autres pour contr&ocirc;ler le comportement
+ vis-&agrave;-vis des d&eacute;pendances.</para>
+
+ <sect4>
+ <title><makevar>LIB_DEPENDS</makevar></title>
+
+ <para>Cette variable d&eacute;finit les biblioth&egrave;ques
+ partag&eacute;es dont d&eacute;pend le logiciel &agrave; porter.
+ C'est une liste de tuples
+ <replaceable>bibloth&egrave;que</replaceable>:<replaceable>r&eacute;pertoire</replaceable><optional><replaceable>:cible</replaceable></optional>
+ o&ugrave; <replaceable>biblioth&egrave;que</replaceable> est
+ le nom de la biblioth&egrave;que partag&eacute;e,
+ <replaceable>r&eacute;pertoire</replaceable> est le nom du
+ r&eacute;pertoire o&ugrave; la trouver si elle n'est pas
+ encore install&eacute;e et <replaceable>cible</replaceable> celui de
+ la cible &agrave; ex&eacute;cuter dans ce r&eacute;pertoire. Par
+ exemple&nbsp:</para>
+ <programlisting>
+LIB_DEPENDS= jpeg\\.9\\.:${PORTSDIR}/graphics/jpeg:install
+ </programlisting>
+ <para>cherchera une biblioth&egrave;que partag&eacute;e
+ <literal>jpeg</literal> avec le num&eacute;ro de version majeure 9
+ et descendra dans le sous-r&eacute;pertoire
+ <filename>graphics/jpeg</filename> de l'arborescence du catalogue
+ des logiciels port&eacute;s pour la compiler et l'installer, s'il ne
+ la trouve pas. La <replaceable>cible</replaceable> peut &ecirc;tre
+ omise si elle est &eacute;gale &agrave;
+ <makevar>DEPENDS_TARGET</makevar> (dont la valeur par d&eacute;faut
+ est <literal>install</literal>).</para>
+
+ <note>
+ <para><replaceable>biblioth&egrave;que</replaceable> est
+ pass&eacute; en argument &agrave;
+ <command>ldconfig -r | grep -wF</command>. Cette variable ne doit
+ pas comporter d'expression r&eacute;guli&egrave;re.</para>
+ </note>
+
+ <para>La d&eacute;pendance est v&eacute;rifi&eacute;e deux fois, une
+ premi&egrave;re fois depuis la cible
+ <maketarget>extract</maketarget> et ensuite par la cible
+ <maketarget>install</maketarget>. Le nom de la d&eacute;pendance est
+ aussi enregistr&eacute; dans le paquetage de sorte que
+ <command>pkg_add</command> l'installe automatiquement si elle n'est
+ pas disponible sur le syst&egrave;me de l'utilisateur.</para>
+ </sect4>
+
+ <sect4>
+ <title><makevar>RUN_DEPENDS</makevar></title>
+
+ <para>Cette variable d&eacute;finit quels ex&eacute;cutables et
+ fichiers doivent &ecirc;tre pr&eacute;sents pour pouvoir utiliser le
+ logiciel port&eacute;. C'est une liste de tuples
+ <replaceable>chemin d'acc&egrave;s</replaceable>:<replaceable>r&eacute;pertoire</replaceable><optional><replaceable>:cible</replaceable></optional>
+ o&ugrave; <replaceable>chemin d'acc&egrave;s</replaceable> est le
+ nom de l'ex&eacute;cutable ou du fichier,
+ <replaceable>r&eacute;pertoire</replaceable> est le
+ r&eacute;pertoire o&ugrave; le trouver s'il n'est pas encore
+ install&eacute; et <replaceable>cible</replaceable> est la cible
+ &agrave; ex&eacute;cuter dans ce r&eacute;pertoire. Si
+ <replaceable>chemin d'acc&egrave;s</replaceable> commence par un
+ &ldquo;<foreignphrase>slash</foreignphrase>
+ (<literal>/</literal>), il est trait&eacute; comme un fichier et son
+ existence est test&eacute;e avec <command>test -e</command>&nbsp;;
+ sinon, on suppose que c'est un ex&eacute;cutable, et c'est la
+ commande <command>which -s</command> qui est utilis&eacute;e pour
+ voir si le programme existe dans les chemins d'acc&egrave;s par
+ d&eacute;faut de l'utilisateur.</para>
+
+ <para>Par exemple&nbsp;:</para>
+
+ <programlisting>
+RUN_DEPENDS= ${PREFIX}/etc/innd:${PORTSDIR}/news/inn \
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wish8.0:${PORTSDIR}/x11-toolkits/tk80</programlisting>
+
+ <para>regardera si le fichier ou le r&eacute;pertoire
+ <filename>/usr/local/etc/innd</filename> existe, et le compilera et
+ l'installera dans le sous-r&eacute;pertoiree
+ <filename>news/inn</filename> de l'arborescence du catalogue des
+ logiciels port&eacute;s s'il ne le trouve pas. Il s'assurera aussi
+ de la pr&eacute;sence d'un ex&eacute;cutable appel&eacute;
+ <command>wish8.0</command> dans vos chemins d'acc&egrave;s par
+ d&eacute;faut, et ira dans le sous-r&eacute;pertoire
+ <filename>x11-toolkits/tk80</filename> de l'arborescence du
+ catalogue des logiciels port&eacute;s pour le compiler et
+ l'installer s'il ne le trouve pas.</para>
+
+ <note>
+ <para>Dans ce cas, <command>innd</command> est en fait un
+ ex&eacute;cutable&nbsp;; si un programme n'est pas &agrave; la
+ place normale o&ugrave; on s'attend &agrave; le trouver dans les
+ chemins d'acc&egrave;s par d&eacute;faut de l'utilisateur, il faut
+ utiliser son nom complet depuis la racine.</para>
+ </note>
+
+ <para>La d&eacute;pendance est v&eacute;rifi&eacute;e par la cible
+ <maketarget>install</maketarget>. Le nom de la d&eacute;pendance est
+ aussi enregistr&eacute; dans le paquetage de sorte que
+ <command>pkg_add</command> l'installe automatiquement si elle n'est
+ pas disponible sur le syst&egrave;me de l'utilisateur. La
+ <replaceable>cible</replaceable> peut &ecirc;tre omise si elle est
+ &eacute;gale &agrave; <makevar>DEPENDS_TARGET</makevar>.</para>
+ </sect4>
+
+ <sect4>
+ <title><makevar>BUILD_DEPENDS</makevar></title>
+
+ <para>Cette variable d&eacute;finit quels ex&eacute;cutables et
+ fichiers sont n&eacute;cessaires pour installer le logiciel. Comme
+ <makevar>RUN_DEPENDS</makevar>, c'est une liste de tuples
+ <replaceable>chemin d'acc&egrave;s</replaceable>:<replaceable>r&eacute;pertoire</replaceable><optional><replaceable>:cible</replaceable></optional>.
+ Par exemple&nbsp;:</para>
+ <programlisting>
+BUILD_DEPENDS= unzip:${PORTSDIR}/archivers/unzip
+ </programlisting>
+ <para>recherchera un ex&eacute;cutable appel&eacute;
+ <command>unzip</command> et ira dans le sous-r&eacute;pertoire
+ <filename>archivers/unzip</filename> de l'arborescence du
+ catalogue des logiciels port&eacute;s pour le compiler et
+ l'installer s'il ne le trouve pas.</para>
+
+ <note>
+ <para>&ldquo;installer&rdquo; recouvre ici tout le processus, de
+ l'extraction &agrave; la compilation. La d&eacute;pendance est
+ v&eacute;rifi&eacute;e par la cible
+ <maketarget>extract</maketarget>. La
+ <replaceable>cible</replaceable> peut &ecirc;tre omise si elle
+ est &eacute;gale &agrave;
+ <makevar>DEPENDS_TARGET</makevar>.</para>
+ </note>
+ </sect4>
+
+ <sect4>
+ <title><makevar>FETCH_DEPENDS</makevar></title>
+
+ <para>Cette variable d&eacute;finit quels ex&eacute;cutables le
+ logiciel a besoin de r&eacute;cup&eacute;rer. Comme les deux
+ pr&eacute;c&eacute;dentes, c'est une liste de tuples
+ <replaceable>chemin d'acc&egrave;s</replaceable>:<replaceable>r&eacute;pertoire</replaceable><optional><replaceable>:cible</replaceable></optional>.
+ Par exemple&nbsp;:</para>
+ <programlisting>
+FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2
+ </programlisting>
+ <para>recherchera un ex&eacute;cutable appel&eacute;
+ <command>ncftp2</command> et descendera dans le
+ sous-r&eacute;pertoire <filename>net/ncftp2</filename> de
+ l'arborescence du catalogue des logiciels port&eacute;s pour le
+ compiler et l'installer s'il ne le trouve pas.</para>
+
+ <para>La d&eacute;pendance est v&eacute;rifi&eacute;e par la cible
+ <maketarget>fetch</maketarget>. La <replaceable>cible</replaceable>
+ peut &ecirc;tre omise si elle est &eacute;gale &agrave;
+ <makevar>DEPENDS_TARGET</makevar>.</para>
+ </sect4>
+
+ <sect4>
+ <title><makevar>DEPENDS</makevar></title>
+
+ <para>S'il y a une d&eacute;pendance qui ne rentre pas dans les quatre
+ cat&eacute;gories pr&eacute;c&eacute;dentes ou si votre logiciel
+ &agrave; porter a besoin que les sources d'un autre logiciel soient
+ install&eacute;s en plus de ce logiciel lui-m&ecirc;me,
+ utilisez cette variable. C'est une liste de
+ <replaceable>r&eacute;pertoire</replaceable><optional><replaceable>:cible</replaceable></optional>,
+ puisqu'il n'y a rien &agrave; v&eacute;rifier, &agrave; l'inverse
+ des quatre pr&eacute;c&eacute;dentes. La
+ <replaceable>cible</replaceable> peut &ecirc;tre omise si elle est
+ &eacute;gale &agrave; <makevar>DEPENDS_TARGET</makevar>.</para>
+ </sect4>
+
+ <sect4>
+ <title>Variables pr&eacute;d&eacute;finies</title>
+
+ <para>Utilisez <literal>USE_XLIB=yes</literal> si votre logiciel
+ &agrave; porter a besoin que le syst&egrave;me <application>X
+ Window</application> soit install&eacute; (c'est implicite avec
+ <makevar>USE_IMAKE</makevar>). Utilisez
+ <literal>USE_GMAKE=yes</literal> si votre logiciel &agrave; porter a
+ besoin de GNU <command>make</command> au lieu de BSD
+ <command>make</command>. Utilisez
+ <literal>USE_AUTOCONF=yes</literal> si votre logiciel &agrave;
+ porter a besoin que GNU <command>autoconf</command> soit
+ ex&eacute;cut&eacute;. Utilisez <literal>USE_QT=yes</literal> si
+ votre logiciel utilise la bo&icirc;te &agrave; outils
+ <application>Qt</application>. Utilisez
+ <literal>USE_PERL5=yes</literal> si votre logiciel &agrave; porter a
+ besoin de la version 5 du langage perl. (Cette derni&egrave;re
+ variable est particuli&egrave;rement importante parce que certaines
+ versions de FreeBSD comportent perl 5 install&eacute; de base, mais
+ d'autres non.)</para>
+ </sect4>
+
+ <sect4>
+ <title>Notes &agrave; propos des d&eacute;pendances</title>
+
+ <para>Comme indiqu&eacute; plus haut, la cible &agrave; appeler par
+ d&eacute;faut quand il y a un d&eacute;pendance requise est
+ <maketarget>DEPENDS_TARGET</maketarget>. Sa valeur par d&eacute;faut
+ est <literal>install</literal>. C'est une variable utilisateur. Elle
+ n'est jamais d&eacute;finie dans le <filename>Makefile</filename>
+ d'un logiciel &agrave; porter. Si votre logiciel &agrave; porter a
+ besoin qu'une d&eacute;pendance soit g&eacute;r&eacute;e d'une
+ fa&ccedil;on particuli&egrave;re, utilisez la partie
+ <literal>:cible</literal> des variables <makevar>*_DEPENDS</makevar>
+ au lieu de red&eacute;finir
+ <makevar>DEPENDS_TARGET</makevar>.</para>
+
+ <para>Quand vous tapez <command>make clean</command>, les
+ d&eacute;pendances sont aussi purg&eacute;es. Si vous ne voulez pas
+ qu'il en soit ainsi, d&eacute;finissez la variable
+ <makevar>NOCLEANDEPENDS</makevar> dans votre environnement.</para>
+
+ <para>Pour d&eacute;pendre sans condition d'un autre logiciel
+ port&eacute;, il est habituel d'utiliser l'indication
+ <literal>nonexistent</literal> comme premier champ de
+ <makevar>BUILD_DEPENDS</makevar> ou
+ <makevar>RUN_DEPENDS</makevar>. N'utilisez cela que si vous avez
+ besoin du source d'un autre logiciel port&eacute;. Vous pouvez aussi
+ avec cette cible &eacute;conomiser du temps de compilation. Par
+ exemple&nbsp;:</para>
+
+ <programlisting>
+BUILD_DEPENDS= /nonexistent:${PORTSDIR}/graphics/jpeg:extract
+ </programlisting>
+
+ <para>ira toujours dans le r&eacute;pertoire du logiciel port&eacute;
+ JPEG pour l'extraire.</para>
+
+ <para>N'utilisez <makevar>DEPENDS</makevar> que s'il n'y a pas d'autre
+ moyen d'obtenir ce que vous voulez. Cela provoquera toujours
+ la compilation (et par d&eacute;faut l'installation) d'autres
+ logiciels port&eacute;s et la d&eacute;pendance sera aussi
+ inclue aux paquetages. Si c'est vraiment ce dont vous avez besoin,
+ je vous recommande d'utiliser <literal>BUILD_DEPENDS</literal> et
+ <literal>RUN_DEPENDS</literal> &agrave; la place&mdash;au moins
+ votre intention sera claire.</para>
+ </sect4>
+ </sect3>
+
+ <sect3>
+ <title>M&eacute;canismes de compilation</title>
+
+ <para>Si votre paquetage utilise GNU <command>make</command>,
+ positionnez <literal>USE_GMAKE=yes</literal>. Si votre paquetage
+ utilise <command>configure</command>, positionnez
+ <literal>HAS_CONFIGURE=yes</literal>. Si votre paquetage utilise GNU
+ <command>configure</command>, positionnez
+ <literal>GNU_CONFIGURE=yes</literal> (ce qui implique
+ <literal>HAS_CONFIGURE</literal>). Si vous voulez passer des arguments
+ suppl&eacute;mentaires &agrave; <command>configure</command> (la liste
+ d'arguments par d&eacute;faut est
+ <literal>--prefix=&dollar;{PREFIX}</literal> pour GNU
+ <command>configure</command> et elle est vide pour les autres versions
+ de <command>configure</command>), d&eacute;finissez ces arguments
+ compl&eacute;mentaires avec la variable
+ <makevar>CONFIGURE_ARGS</makevar>. Si votre paquetage utilise GNU
+ <command>autoconf</command>, positionnez
+ <literal>USE_AUTOCONF=yes</literal>. Cela implique
+ <makevar>GNU_CONFIGURE</makevar>, et provoquera l'ex&eacute;cution
+ d'<command>autoconf</command> avant celle de
+ <command>configure</command>.</para>
+
+ <para>Si votre paquetage est une application X qui g&eacute;n&egrave;re
+ des <filename>Makefile</filename>s &agrave; partir
+ d'<filename>Imakefile</filename>s avec <command>imake</command>,
+ positionnez alors <literal>USE_IMAKE=yes</literal>. A l'&eacute;tape
+ de configuration, la commande <command>xmkmf -a</command> sera
+ automatiquement ex&eacute;cut&eacute;e. Si l'option
+ <option>-a</option> pose une probl&egrave;me pour votre portage,
+ positionnez <literal>XMKMF=xmkmf</literal>. Si le portage utilise
+ <command>imake</command> mais ne comprend pas la cible
+ <maketarget>install.man</maketarget>, il faut alors d&eacute;finir
+ <literal>NO_INSTALL_MANPAGES=yes</literal>. De plus, l'auteur
+ d'origine du logiciel devrait &ecirc;tre &ldquo;fusill&eacute;&rdquo;.
+ <!-- smiley --><emphasis>:&gt;</emphasis></para>
+
+ <para>Si le <filename>Makefile</filename> d'origine du logiciel que vous
+ portez utilise une autre cible principale que
+ <maketarget>all</maketarget>, d&eacute;finissez en cons&eacute;quence
+ <makevar>ALL_TARGET</makevar>. Il en va de m&ecirc:me pour
+ <maketarget>install</maketarget> et
+ <makevar>INSTALL_TARGET</makevar>.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Consid&eacute;rations particuli&egrave;res</title>
+
+ <para>Il y a quelques autres points &agrave; prendre en compte lorsque
+ vous portez un logiciel. Cette section d&eacute;taille les plus
+ fr&eacute;quemment rencontr&eacute;s.</para>
+
+ <sect3>
+ <title><command>ldconfig</command></title>
+
+ <para>Si votre portage installe une biblioth&egrave;que partag&eacute;e,
+ ajoutez une cible <maketarget>post-install</maketarget> &agrave; votre
+ <filename>Makefile</filename> qui ex&eacute;cute
+ <literal>&dollar;{LDCONFIG} -m</literal> sur le r&eacute;pertoire
+ o&ugrave; la nouvelle biblioth&egrave;que est install&eacute;e
+ (habituellement <filename><makevar>PREFIX</makevar>/lib</filename>)
+ pour l'enregistrer dans le cache de biblioth&egrave;que
+ partag&eacute;e.</para>
+
+ <para>Ajoutez aussi une ligne <literal>@exec /sbin/ldconfig -m</literal>
+ et la ligne <literal>@unexec /sbin/ldconfig -R</literal>
+ correspondante &agrave; votre fichier <filename>pkg/PLIST</filename>
+ de fa&ccedil;on &agrave; ce que l'utilisateur qui installe le
+ paquetage puisse utiliser imm&eacute;diatement la biblioth&egrave;que
+ partag&eacute;e et qu'&agrave; la d&eacute;sinstallation, le
+ syst&egrave;me sache que la biblioth&egrave;que n'est plus l&agrave;.
+ Ces lignes doivent suivre imm&eacute;diatement celle qui concerne la
+ biblioth&egrave;que partag&eacute;e elle-m&ecirc;me, comme
+ dans&nbsp;:</para>
+
+ <programlisting>
+lib/libtvl80.so.1
+@exec /sbin/ldconfig -m %D/lib
+@unexec /sbin/ldconfig -R
+ </programlisting>
+
+ <para>N'ajoutez jamais, mais vraiment <emphasis>jamais</emphasis> de
+ ligne qui ne contienne que <literal>ldconfig</literal> sans argument
+ &agrave; votre <filename>Makefile</filename> ou &agrave; votre
+ <filename>pkg/PLIST</filename>. Cela r&eacute;initialisera le cache de
+ biblioth&egrave;que partag&eacute;e avec le contenu de
+ <filename>/usr/lib</filename> uniquement, et v&eacute;rolera
+ royalement la machine de l'utilisateur (&ldquo;A l'aide, xinit ne
+ fonctionne plus depuis que j'ai install&eacute; ce logiciel
+ port&eacute;&nbsp;!). Quiconque commet ce crime sera fusill&eacute;
+ et d&eacute;coup&eacute; en 65.536 morceaux avec un couteau
+ rouill&eacute;, son foie sera d&eacute;chiquet&eacute; par une bande
+ de corbeaux et il r&ocirc;tira &eacute;ternellement au tr&eacute;fonds
+ de l'enfer (pas n&eacute;cessairement dans cet ordre&hellip;)</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Support ELF</title>
+
+ <para>Comme FreeBSD passe &agrave; ELF peu de temps apr&egrave;
+ 3.0-release, il faut convertir de nombreux ports qui compilent des
+ bibloth&egrave;ques partag&eacute;es pour qu'ils supportent ELF. Cette
+ t&acirc;che est compliqu&eacute;e par le fait qu'un syst&egrave;me 3.0
+ peut s'ex&eacute;cuter &agrave; la fois en ELF et en a.out et que nous
+ voulons supporter la version 2.2 aussi longtemps que possible. Voici
+ quelques indications pour la conversion de logiciels port&eacute;s a.out
+ pour qu'ils supportent &agrave; la fois la compilation en a.out et
+ ELF.</para>
+
+ <para>Certains points cit&eacute;s ne s'appliquent qu'&agrave; la
+ conversion elle-m&ecirc;me. Ils resteront mentionn&eacute;s
+ n&eacute;anmoins quelque temps pour le cas o&ugrave; vous tomberiez sur
+ un ancien logiciel port&eacute; que vous voulez mettre &agrave;
+ niveau.</para>
+
+ <sect3>
+ <title>Mettre de c&ocirc;t&eacute; les biblioth&egrave;ques
+ a.out</title>
+
+ <para>Les biblioth&egrave;ques a.out doivent &ecirc;tre
+ d&eacute;plac&eacute;es de <filename>/usr/local/lib</filename> et
+ autres vers un sous-r&eacute;pertoire <filename>aout</filename>. (Si
+ vous ne les mettez pas de c&ocirc;t&eacute;, les logiciels
+ port&eacute;s ELF les &eacute;craseront sans sourciller.)
+ La cible <maketarget>move-aout-libs</maketarget> du
+ <filename>src/Makefile</filename> de 3.0-current (appel&eacute; par
+ <maketarget>aout-to-elf</maketarget>) le fera pour vous. Elle ne
+ d&eacute;placera que les biblioth&egrave;ques a.out, il n'y a donc pas
+ de risque &agrave; l'appeler sur un syst&egrave;me o&ugrave; il y a
+ &agrave; la fois des biblioth&egrave;ques ELF et a.out dans les
+ r&eacute;pertoires standard.</para>
+ </sect3>
+
+ <sect3>
+ <title>Format</title>
+
+ <para>L'arborescence du catalogue des logiciels port&eacute;s compilera
+ les paquetages au format utilis&eacute; par la machine,
+ c'est-&agrave;-dire a.out en 2.2 et a.out ou ELF en 3.0 selon ce que
+ retourne la commande <command>`objformat`</command>. D'autre part,
+ un fois que les utilisateurs d&eacute;placent les biblioth&egrave;ques
+ a.out dans un sous-r&eacute;pertoire, la compilation des
+ biblioth&egrave;ques a.out ne sera plus support&eacute;. (i.e., cela
+ peut encore marcher si vous savez ce que vous faites, mais vous devrez
+ vous d&eacute;brouiller par vous-m&ecirc;me.)</para>
+
+ <note>
+ <para>Si un logiciel port&eacute; ne fonctionne qu'en a.out, affectez
+ &agrave; <makevar>BROKEN_ELF</makevar> une cha&icirc;ne de
+ caract&egrave;res qui d&eacute;crive pourquoi. Ces logiciels ne
+ seront pas g&eacute;n&eacute;r&eacute;s &agrave; la compilation sur
+ un syst&egrave;me ELF.</para>
+ </note>
+ </sect3>
+
+ <sect3>
+ <title><makevar>PORTOBJFORMAT</makevar></title>
+
+ <para><filename>bsd.port.mk</filename> affectera &agrave;
+ <makevar>PORTOBJFORMAT</makevar> la valeur <literal>aout</literal> ou
+ <literal>elf</literal> et l'exportera dans les environnements
+ <envar>CONFIGURE_ENV</envar>, <envar>SCRIPTS_ENV</envar> et
+ <envar>MAKE_ENV</envar>. (Ce sera toujours
+ <literal>aout</literal> sous 2.2-STABLE). Elle est aussi pass&eacute;e
+ &agrave; <maketarget>PLIST_SUB</maketarget> sous la forme
+ <literal>PORTOBJFORMAT=${PORTOBJFORMAT}</literal>. (Reportez-vous aux
+ explications concernant <literal>ldconfig</literal> plus bas.)</para>
+
+ <para>Cette variable est d&eacute;finie par la ligne suivante de
+ <filename>bsd.port.mk</filename>&nbsp;:</para>
+
+ <programlisting>
+PORTOBJFORMAT!= test -x /usr/bin/objformat && /usr/bin/objformat || echo aout</programlisting>
+
+ <para>Le processus de compilation des logiciels port&eacute;s devrait
+ toujours utiliser cette variable pour d&eacute;cider de ce qu'il faut
+ faire. Cependant, si la proc&eacute;dure
+ <filename>configure</filename> associ&eacute;e
+ d&eacute;tecte d&eacute;j&agrave; automatiquement un syst&egrave;me
+ ELF, il n'est pas n&eacute;cessaire de se r&eacute;f&eacute;rer
+ &agrave; <makevar>PORTOBJFORMAT</makevar>.</para>
+ </sect3>
+
+ <sect3>
+ <title>Compilation des biblioth&egrave;ques partag&eacute;es</title>
+
+ <para>Ce qui suit d&eacute;crit les diff&eacute;rences de gestion des
+ biblioth&egrave;ques partag&eacute;es entre les formats ELF et
+ a.out.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Versions de biblioth&egrave;ques partag&eacute;es</para>
+
+ <para>Une biblioth&egrave;que partag&eacute;e ELF doit s'appeler
+ <filename>libfoo.so.<replaceable>M</replaceable></filename>,
+ o&ugrave; <replaceable>M</replaceable> est un unique num&eacute;ro
+ de version et une biblioth&egrave;que partag&eacute;e a.out doit
+ s'appeler
+ <filename>libfoo.so.<replaceable>M</replaceable>.<replaceable>N</replaceable></filename>,
+ o&ugrave; <replaceable>M</replaceable> est le num&eacute;ro de
+ version majeure et
+ <replaceable>N</replaceable> celui de version mineure.
+ Ne confondez pas&nbsp;; n'installez <emphasis>jamais</emphasis> de
+ biblioth&egrave;que partag&eacute;e ELF appel&eacute;e
+ <filename>libfoo.so.<replaceable>N</replaceable>.<replaceable>M</replaceable></filename>
+ ou de biblioth&egrave;que partag&eacute;e A.out (ou de lien
+ symbolique dessus) appel&eacute;e
+ <filename>libfoo.so.<replaceable>N</replaceable></filename>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Ligne de commande de l'&eacute;diteur de liens</para>
+
+ <para>En supposant que <command>cc -shared</command>
+ soit utilis&eacute; plut&ocirc;t que <command>ld</command>
+ directement, la seule diff&eacute;rence est qu'il faut ajouter
+ <option>-Wl,-<replaceable>soname,libfoo.so.M</replaceable></option>
+ sur la ligne de commande pour ELF.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Il faut d&eacute;finir un lien symbolique de
+ <filename>libfoo.so</filename> vers
+ <filename>libfoo.so.<replaceable>N</replaceable></filename> pour que
+ les &eacute;diteurs de liens ELF s'y retrouvent. Comme il doit
+ &ecirc;tre aussi mentionn&eacute; dans
+ <filename>PLIST</filename>, cela ne posera pas de probl&egrave;me dans
+ le cas de a.out (pour certains logiciels port&eacute;s, il faut
+ m&ecirc;me que ce lien existe pour l'&eacute;dition de liens
+ dynamiques), vous devriez d&eacute;finir ce lien quelle que soit la
+ valeur de la variable <makevar>PORTOBJFORMAT</makevar>.</para>
+ </sect3>
+
+ <sect3>
+ <title><makevar>LIB_DEPENDS</makevar></title>
+
+ <para>Tous les <filename>Makefile</filename>s des logiciels
+ port&eacute;s sont &agrave; modifier pour supprimer les num&eacute;ros
+ de versions mineures de <makevar>LIB_DEPENDS</makevar>, ainsi que le
+ support des expressions r&eacute;quli&egrave;res (e.g.,
+ <literal>foo\\.1\\.\\(33|40\\)</literal> devient
+ <literal>foo.2</literal>.) La correspondance sera effectu&eacute;e par
+ <command>grep -wF</command>.</para>
+ </sect3>
+
+ <sect3>
+ <title><filename>PLIST</filename></title>
+
+ <para><filename>PLIST</filename> doit contenir les noms courts (ELF) des
+ biblioth&egrave;ques partag&eacute;es si leur num&eacute;ro de version
+ mineure a.out est z&eacute;ro et les noms longs (a.out) dans le cas
+ contraire. <filename>bsd.port.mk</filename> ajoutera automatiquement
+ le <literal>.0</literal> &agrave; la fin des noms courts de
+ biblioth&egrave;ques partag&eacute;es si
+ <makevar>PORTOBJFORMAT</makevar> vaut <literal>aout</literal>, et
+ supprimera le num&eacute;ro de version mineure des noms longs si
+ <makevar>PORTOBJFORMAT</makevar> vaut <literal>elf</literal>.</para>
+
+ <para>Au cas o&ugrave; vous auriez vraiment besoin d'installer des
+ biblioth&egrave;ques partag&eacute;es avec deux num&eacute;ros de
+ version sur un syst&egrave;me ELF ou avec un seul num&eacute;ro de
+ version sur un syst&egrave;me a.out (par exemple, pour les logiciels
+ port&eacute;s qui installent des biblioth&egrave;ques pour la
+ compatibilit&eacute; avec d'autres syst&egrave;mes d'exploitation),
+ d&eacute;finissez la variable <makevar>NO_FILTER_SHLIBS</makevar>.
+ Cela inhibera le m&eacute;canisme de modification de
+ <filename>PLIST</filename> d&eacute;crit au paragraphe
+ pr&eacute;c&eacute;dent.</para>
+ </sect3>
+
+ <sect3>
+ <title><literal>ldconfig</literal></title>
+
+ <para>La ligne <literal>ldconfig</literal> des
+ <filename>Makefile</filename>s doit contenir&nbsp;:</para>
+
+ <programlisting>
+${SETENV} OBJFORMAT=${PORTOBJFORMAT} ${LDCONFIG} -m ....
+ </programlisting>
+
+ <para>Dans <filename>PLIST</filename>, il doit y avoir&nbsp;:</para>
+
+ <programlisting>
+@exec /usr/bin/env OBJFORMAT=%%PORTOBJFORMAT%% /sbin/ldconfig -m ...
+@unexec /usr/bin/env OBJFORMAT=%%PORTOBJFORMAT%% /sbin/ldconfig -R
+ </programlisting>
+
+ <para>Cela pour garantir que la bonne commande
+ <command>ldconfig</command> sera appel&eacute;e en fonction du format
+ du paquetage et non du format par d&eacute;faut sur le
+ syst&egrave;me.</para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="porting-masterdir">
+ <title><makevar>MASTERDIR</makevar></title>
+
+ <para>Si votre logiciel port&eacute; a besoin de g&eacute;n&eacute;rer des
+ versions l&eacute;g&egrave;rement diff&eacute;rentes des paquetages en
+ fonction de la valeur d'une variable (la r&eacute;solution ou le format
+ de page par exemple), cr&eacute;ez un sous-r&eacute;pertoire par
+ paquetage pour qu'il soit plus facile aux utilisateurs de savoir quoi
+ faire, mais essayez de partager autant de fichiers que possible entre
+ logiciels port&eacute;s. Vous aurez normalement besoin d'un
+ <filename>Makefile</filename> tr&egrave;s court dans tous les
+ sous-r&eacute;pertoires &agrave; l'exception d'un seul. Dans ces
+ <filename>Makefile</filename>s, vous pouvez utiliser la variable
+ <makevar>MASTERDIR</makevar> pour indiquer le r&eacute;pertoire
+ o&ugrave; se trouvent le reste des fichiers. Utilisez aussi une variable
+ pour une partie de
+ <link linkend="porting-pkgname"><makevar>PKGNAME</makevar></link> de
+ fa&ccedil;on &agrave; ce que les paquetages aient des noms
+ diff&eacute;rents.</para>
+
+ <para>Cela sera plus clair avec un exemple. C'est un extrait de
+ <filename>japanese/xdvi300/Makefile</filename>&nbsp;:</para>
+
+ <programlisting>
+PKGNAME= ja-xdvi${RESOLUTION}-17
+ :
+# default
+RESOLUTION?= 300
+.if ${RESOLUTION} != 118 && ${RESOLUTION} != 240 && \
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${RESOLUTION} != 300 && ${RESOLUTION} != 400
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@${ECHO} "Erreur: valeur incorrecte pour RESOLUTION: \"${RESOLUTION}\""
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@${ECHO} "Les valeurs acceptables sont : 118, 240, 300 (par d&eacute;faut) et 400."
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@${FALSE}
+.endif</programlisting>
+
+ <para><filename>japanese/xdvi300</filename> contient aussi les fichiers
+ de &ldquo;<foreignphrase>patches</foreignphrase>&rdquo;, paquetages,
+ etc. Si vous y tapez <command>make</command>, la valeur de la
+ r&eacute;solution sera prise par d&eacute;faut (300) et le logiciel
+ port&eacute; compilera normalement.</para>
+
+ <para>Poue les autres r&eacute;solutions, voici le
+ <filename>xdvi118/Makefile</filename>
+ <emphasis>complet</emphasis>&nbsp;:</para>
+
+ <programlisting>
+RESOLUTION= 118
+MASTERDIR= ${.CURDIR}/../xdvi300
+
+.include ${MASTERDIR}/Makefile
+ </programlisting>
+
+ <para>(<filename>xdvi240/Makefile</filename> et
+ <filename>xdvi400/Makefile</filename> sont identiques). La
+ d&eacute;finition de <makevar>MASTERDIR</makevar> dit &agrave;
+ <filename>bsd.port.mk</filename> que le jeu de sous-r&eacute;pertoires
+ habituels tels que <makevar>PATCHDIR</makevar> et
+ <makevar>PKGDIR</makevar> se trouvent dans
+ <filename>xdvi300</filename>. La ligne <literal>RESOLUTION=118</literal>
+ surchargera la ligne <literal>RESOLUTION=300</literal> de
+ <filename>xdvi300/Makefile</filename> et le logiciel port&eacute; sera
+ compil&eacute; avec une r&eacute;solution de 118.</para>
+ </sect2>
+
+ <sect2>
+ <title>Versions des bibloth&egrave;ques partag&eacute;es</title>
+
+ <para>Lisez tout d'abord s'il vous pla&icirc;t nos
+ <link linkend="policies-shlib">Instructions &agrave; propos des versions
+ de biblioth&egrave;ques partag&eacute;es</link> pour savoir comment
+ g&eacute;rer de fa&ccedil;on g&eacute;n&eacute;rale les versions de
+ biblioth&egrave;ques. Ne supposez pas aveuglement que les auteurs des
+ logiciels savent ce qu'ils font; ce n'est, la plupart du temps, pas le
+ cas. Il est tr&egrave;s important que ces d&eacute;tails soient
+ attentivement examin&eacute;s, parce que nous nous trouvons dans une
+ situation assez particuli&egrave;re dans laquelle nous devons faire
+ cohabiter des douzaines de logiciels potentiellement incompatibles.
+ Les importations &agrave; la va-vite de logiciels ont pos&eacute; dans
+ le pass&eacute; de gros probl&egrave;mes en ce qui concerne les
+ biblioth&egrave;ques partag&eacute;es (vous &ecirc;tes vous jamais
+ demand&eacute; pourquoi le num&eacute;ro de version de la
+ biblioth&egrave;que partag&eacute;e <filename>jpeg-6b</filename>
+ &eacute;tait 0.9?). En cas de doute, envoyez un message &agrave;
+ &a.ports;. La plupart du temps, votre t&acirc;che se limitera &agrave;
+ d&eacute;terminer la bonne version de biblioth&egrave;que
+ partag&eacute;e et &agrave; appliquer les bonnes mises &agrave;
+ niveau&nbsp;-&nbsp;<foreignphrase>patches</foreignphrase>&nbsp;-&nbsp;pour
+ l'impl&eacute;menter.</para>
+
+ <para>N&eacute;anmoins, s'il y a une biblioth&egrave;que port&eacute;e qui
+ n'est qu'une m&ecirc;me version de la m&ecirc;me biblioth&egrave;que
+ partag&eacute;e d&eacute;j&agrave; pr&eacute;sente au catalogue, la
+ situation est beaucoup plus complexe. Bri&egrave;vement,
+ l'impl&eacute;mentation sous FreeBSD ne permet pas &agrave;
+ l'utilisateur de pr&eacute;ciser &agrave; l'&eacute;diteur de liens avec
+ quelle version de biblioth&egrave;que partag&eacute;e effectuer
+ l'&eacute;dition de liens (l'&eacute;diteur de liens choisira toujours
+ le num&eacute;ro de version le plus &eacute;lev&eacute;). Cela signifie
+ que, s'il y a sur le syst&egrave;me une
+ <filename>libfoo.so.3.2</filename> et une
+ <filename>libfoo.so.4.0</filename>, il n'y a aucun moyen de dire
+ &agrave; l'&eacute;diteur de liens qu'une application donn&eacute;e
+ doit &ecirc;tre li&eacute;e avec <filename>libfoo.so.3.2</filename>.
+ c'est totalement masqu&eacute; au moment de l'&eacute;dition de liens.
+ Dans ce cas, il n'y a qu'une seule solution, renommer la
+ <emphasis>base</emphasis> du nom de la biblioth&egrave;que
+ partag&eacute;e. Par exemple, modifier
+ <filename>libfoo.so.4.0</filename> en
+ <filename>libfoo4.so.1.0</filename> pour que les versions 3.2 et 4.0
+ puissent &ecirc;tre li&eacute;es avec d'autres logiciels
+ port&eacute;es.</para>
+ </sect2>
+
+ <sect2 id="porting-manpages">
+ <title>Pages de manuel</title>
+
+ <para>Les variables <makevar>MAN[1-9LN]</makevar> ajouteront
+ automatiquement toutes les pages de manuel &agrave;
+ <filename>pkg/PLIST</filename> (cela signifie que vous ne devez
+ <emphasis>pas</emphasis> lister les pages de manuel dans
+ <filename>PLIST</filename>&mdash;reportez-vous &agrave; la section
+ <link linkend="porting-plist">Modifier <filename>PLIST</filename> sur
+ la base des variables du <literal>make</literal></link> pour plus de
+ d&eacute;tails). Cela provoquera aussi la compression ou la
+ d&eacute;compression de pages de manuel selon le contenu de la variable
+ <makevar>NOMANCOMPRESS</makevar> dans
+ <filename>/etc/make.conf</filename>.</para>
+
+ <para>Pour indiquer si les pages de manuel doivent &ecirc;tre
+ compress&eacute;es &agrave; l'installation, utilisez la variable
+ <makevar>MANCOMPRESSED</makevar>. Cette variable peut prendre trois
+ valeurs, <literal>yes</literal>, <literal>no</literal> et
+ <literal>maybe</literal>. <literal>yes</literal> signifie que les pages
+ de manuel sont install&eacute;es d&eacute;j&agrave; compress&eacute;es,
+ <literal>no</literal> signifie qu'elles ne le sont pas, et
+ <literal>maybe</literal> signifie que le logiciel s'aligne toujours sur
+ la valeur de <makevar>NOMANCOMPRESS</makevar> de sorte que
+ <filename>bsd.port.mk</filename> n'a rien &agrave; faire de
+ sp&eacute;cial.</para>
+
+ <para><makevar>MANCOMPRESSED</makevar> est automatiquement d&eacute;finie
+ &agrave; <literal>yes</literal> si <makevar>USE_IMAKE</makevar> est
+ d&eacute;finie et que <makevar>NO_INSTALL_MANPAGES</makevar> ne l'est
+ pas, et &agrave; <literal>no</literal> sinon. Vous n'avez pas &agrave;
+ la d&eacute;finir explicitement, &agrave; moins que la valeur par
+ d&eacute;faut ne convienne pas &agrave; votre logiciel &agrave;
+ porter.</para>
+
+ <para>Si votre logiciel &agrave; porter installe ses pages de manuel
+ ailleurs que dans <makevar>PREFIX</makevar>, vous pouvez utiliser
+ <makevar>MANPREFIX</makevar> pour l'indiquer. Si ce sont seulement
+ certaines pages de manuel qui ne doivent pas &ecirc;tre
+ install&eacute;es dans le r&eacute;pertoire habituel, comme c'est le
+ cas pour certains modules port&eacute;s Perl, vous pouvez d&eacute;finir
+ des r&eacute;pertoires individualis&eacute;s pour les pages de manuel
+ avec <makevar>MAN<replaceable>section</replaceable>PREFIX</makevar>
+ (o&ugrave; <replaceable>sect</replaceable> est une valeur de
+ <literal>1-9</literal>, ou <literal>L</literal> ou
+ <literal>N</literal>).</para>
+
+ <para>Si vos pages de manuel vont dans des sous-r&eacute;pertoires
+ d&eacute;pendant de la langue, d&eacute;finissez les noms de ces langues
+ dans <makevar>MANLANG</makevar>. La valeur par d&eacute;faut de cette
+ variable est <literal>""</literal> (i.e., Anglais seulement).</para>
+
+ <para>Voici un exemple qui rassemble tout cela&nbsp;:</para>
+
+ <programlisting>
+MAN1= foo.1
+MAN3= bar.3
+MAN4= baz.4
+MANLANG= "" ja
+MAN3PREFIX= ${PREFIX}/share/foobar
+MANCOMPRESSED= yes</programlisting>
+
+ <para>Ce qui veut dire que six fichiers sont install&eacute;s par ce
+ logiciel port&eacute;&nbsp;:</para>
+
+ <programlisting>
+${PREFIX}/man/man1/foo.1.gz
+${PREFIX}/man/ja/man1/foo.1.gz
+${PREFIX}/share/foobar/man/man3/bar.3.gz
+${PREFIX}/share/foobar/man/ja/man3/bar.3.gz
+${PREFIX}/man/man4/baz.4.gz
+${PREFIX}/man/ja/man4/baz.4.gz</programlisting>
+ </sect2>
+
+ <sect2>
+ <title>Les logiciels port&eacute;s qui ont besoin de Motif</title>
+
+ <para>Il y a de nombreux programmes qui ont besoin d'une biblioth&egrave;que
+ Motif pour compiler (disponible aupr&egrave;s de plusieurs distributeurs
+ commerciaux, et dont il existe un clone libre, qui est capable de faire
+ fonctionner pas mal d'applications, dans
+ <filename>x11-toolkits/lesstif</filename>). Comme c'est un bo&icirc;te
+ &agrave; outils tr&egrave;s utilis&eacute;e et que ses licences
+ autorisent habituellement la redistribution de binaires si la
+ biblioth&egrave;que est li&eacute;e statiquement, nous avons
+ pr&eacute;vu un m&eacute;canisme pour g&eacute;rer les logiciels
+ port&eacute;s qui ont besoin de Motif de fa&ccedil;on &agrave; pouvoir
+ facilement compiler des binaires soit li&eacute;s dynamiquement (pour
+ ceux qui utilisent le catalogue des logiciels port&eacute;s) ou
+ statiquement (pour ceux qui distribuent des paquetages).</para>
+
+ <sect3>
+ <title><makevar>REQUIRES_MOTIF</makevar></title>
+
+ <para>Si votre logiciel &agrave; porter a besoin de Motif,
+ d&eacute;finissez cette variable dans le
+ <filename>Makefile</filename>. cela emp&eacute;chera que ceux qui
+ ne disposent pas de Motif puissent ne serait-ce qu'essayer de
+ compiler votre logiciel.</para>
+ </sect3>
+
+ <sect3>
+ <title><makevar>MOTIFLIB</makevar></title>
+
+ <para>Cette variable sera d&eacute;finie par
+ <filename>bsd.port.mk</filename> pour r&eacute;f&eacute;rencer la
+ version appropri&eacute;e de la biblioth&egrave;que Motif. Ajoutez
+ s'il vous pla&icirc;t un
+ correctif&nbsp;-&nbsp;<foreignphrase>patch</foreignphrase>&nbsp;-&nbsp;au
+ source pour qu'il utilise cette variable chaque fois que la
+ biblioth&egrave;que Motif est r&eacute;f&eacute;renc&eacute; dans le
+ <filename>Makefile</filename> ou le
+ <filename>Imakefile</filename>.</para>
+
+ <para>Il y a deux cas de figure courants&nbsp;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Si le logiciel &agrave; porter d&eacute;signe la
+ biblioth&egrave;que Motif avec <literal>-lXm</literal> dans son
+ <filename>Makefile</filename> ou <filename>Imakefile</filename>,
+ remplacez-le simplement par
+ <literal>&dollar;{MOTIFLIB}</literal>,</para>
+ </listitem>
+
+ <listitem>
+ <para>Si le logiciel &agrave; porter utilise
+ <literal>XmClientLibs</literal> dans son
+ <filename>Imakefile</filename>, remplacez-le par
+ <literal>&dollar;{MOTIFLIB} &dollar;{XTOOLLIB}
+ &dollar;{XLIB}</literal>.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Remarquez que la variable <makevar>MOTIFLIB</makevar> est
+ (habituellement) remplac&eacute;e par
+ <literal>-L/usr/X11R6/lib -lXm</literal> ou
+ <literal>/usr/X11R6/lib/libXm.a</literal>, il n'y a donc pas besoin
+ d'y inclure le <literal>-L</literal> ou <literal>-l</literal>.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Polices X11</title>
+
+ <para>Si votre logiciel &agrave; porter installe des polices de
+ caract&egrave;res pour le Syst&egrave;me X Window, mettez-les dans
+ <filename><makevar>X11BASE</makevar>/lib/X11/fonts/local</filename>.
+ Ce r&eacute;pertoire est une nouveaut&eacute; de XFree86 version 3.3.3.
+ S'il n'existe pas, cr&eacute;ez-le s'il vous pla&icirc;t et
+ &eacute;mettez un message pour sugg&eacute;rer &agrave; l'utilisateur de passer &agrave; la version 3.3.3, ou ult&eacute;rieure, de XFree86, ou
+ ajoutez au moins ce r&eacute;pertoire aux chemins d'acc&egrave;s aux
+ polices de caract&egrave;res dans
+ <filename>/etc/XF86Config</filename>.</para>
+ </sect2>
+
+ <sect2>
+ <title>Fichiers &ldquo;Info&rdquo;</title>
+
+ <para>La nouvelle version de <application>texinfo</application> (depuis
+ 2.2.2-RELEASE) comporte un utilitaire appel&eacute;
+ <command>install-info</command> pour ajouter ou supprimer des
+ entr&eacute;es dans le fichier <filename>dir</filename>. Si votre
+ logiciel &agrave; porter installe des documents &ldquo;info&rdquo;,
+ suivez s'il vous pla&icirc;t les instructions ci-dessous pour que votre
+ logiciel port&eacute;/pr&eacute;compil&eacute; mette correctement
+ &agrave; jour le fichier
+ <filename><makevar>PREFIX</makevar>/info/dir</filename> de
+ l'utilisateur. (Excusez-moi de la longueur de cette section, mais il
+ est imp&eacute;ratif d'assembler correctement ensemble tous les fichiers
+ &ldquo;info;&rdquo;. Si c'est proprement fait, il en r&eacute;sultera
+ une <emphasis>belle</emphasis> &eacute;dition, accordez-moi donc s'il
+ vous pla&icirc;t votre attention.)</para>
+
+ <para>Voici ce que vous devez en premier lieu savoir (pour porter un
+ logiciel)&nbsp;:<footnote><para>Traduction&nbsp;:</para>
+ <screen>&prompt.user; <userinput>install-info --help</userinput>
+install-info [OPTION]... [INFO-FILE [DIR-FILE]]
+ Installe INFO-FILE dans le r&eacute;pertoire &ldquo;Info&rdquo; DIR-FILE.
+
+Options:
+--delete supprime les entr&eacute;es existantes dans INFO-FILE;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n'ins&egrave;re aucune nouvelle entr&eacute;e.
+&nbsp;:
+--entry=TEXT Ins&egrave;re un entr&eacute;e pour le r&eacute;pertoire &ldquo;Info;&rdquo;.
+&nbsp;:
+--section=SEC Ajoute les entr&eacute;es de ce fichier &agrave; la section SEC de ce r&eacute;pertoire. :</screen></footnote></para>
+
+ <screen>&prompt.user; <userinput>install-info --help</userinput>
+install-info [OPTION]... [INFO-FILE [DIR-FILE]]
+ Install INFO-FILE in the Info directory file DIR-FILE.
+
+Options:
+--delete Delete existing entries in INFO-FILE;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;don't insert any new entries.
+&nbsp;:
+--entry=TEXT Insert TEXT as an Info directory entry.
+&nbsp;:
+--section=SEC Put this file's entries in section SEC of the directory. :</screen>
+
+ <note>
+ <para>Ce programme n'installe en fait <emphasis>pas</emphasis> de
+ fichiers &ldquo;info&rdquo;; il ne fait qu'ins&eacute;rer ou supprimer
+ des entr&eacute;es au fichier <filename>dir</filename>.</para>
+ </note>
+
+ <para>Voici une proc&eacute;dure en sept &eacute;tapes pour adapter les
+ logiciels &agrave; porter pour qu'ils utilisent
+ <command>install-info</command>. Je prendrais comme exemple
+ <filename>editors/emacs</filename>&nbsp;:</para>
+
+ <procedure>
+ <step>
+ <para>Consultez les sources <application>texinfo</application> et
+ construisez un fichier de mise &agrave; jour qui ins&egrave;re
+ des instructions <literal>@dircategory</literal> et
+ <literal>@direntry</literal> aux fichiers o&ugrave; il n'y en a pas.
+ Voici un extrait de mon
+ &ldquo;<foreignphrase>patch</foreignphrase>&rdquo;&nbsp;:</para>
+
+ <programlisting>
+--- ./man/vip.texi.org Fri Jun 16 15:31:11 1995
++++ ./man/vip.texi Tue May 20 01:28:33 1997
+@@ -2,6 +2,10 @@
+
+&nbsp;@setfilename ../info/vip
+&nbsp;@settitle VIP
++@dircategory The Emacs editor and associated tools
++@direntry
++* VIP: (vip). A VI-emulation for Emacs.
++@end direntry
+
+&nbsp;@iftex
+&nbsp;@finalout
+&nbsp;:
+ </programlisting>
+
+ <para>Cela doit pouvoir se passer d'explications. De nombreux auteurs
+ mettent dans leur arborescence des sources un fichier
+ <filename>dir</filename> qui contient toutes les entr&eacute;es dont
+ vous avez besoin, regardez donc &agrave; droite et &agrave; gauche
+ avant de le cr&eacute;er vous-m&ecirc;me. Veillez aussi &agrave;
+ consulter les entr&eacute;es pour les logiciels en rapport avec le
+ vo&circ;tre, pour que vos noms de sections et indentations soient en
+ coh&eacute;rence (nous recommandons de mettre les libell&eacute;s
+ apr&egrave;s la quatri&egrave;me position de tabulation).</para>
+
+ <note>
+ <para>Remarquez que vous ne pouvez mettre qu'une entr&eacute;e
+ &ldquo;info&rdquo; par fichier, &agrave; cause d'un bogue
+ dans <command>install-info --delete</command>, qui ne supprime
+ que la premi&egrave;re entr&eacute;e de la section
+ <literal>@direntry</literal> si vous en indiquez plusieurs.</para>
+ </note>
+
+ <para>Vous pouvez donner les entr&eacute;es <literal>dir</literal>
+ comme arguments &agrave; <command>install-info</command>
+ (<option>--section</option> et <option>--entry</option>) au lieu de
+ rectifier les sources de <application>texinfo</application>. Je ne
+ trouve pas que cela soit une bonne id&eacute;e parce que vous devez
+ r&eacute;p&eacute;ter la m&ecirc;me information &agrave; trois
+ endroits diff&eacute;rents (<filename>Makefile</filename> et
+ <literal>@exec</literal>/<literal>@unexec</literal> de
+ <filename>PLIST</filename>; voyez plus bas). N&eacute;anmoins, si
+ vous avez des fichiers &ldquo;info&rdquo; en Japonais (ou
+ cod&eacute;s sur plusieurs octets), vous devrez utiliser les
+ param&egrave;tres suppl&eacute;mentaires
+ d'<command>install-info</command> parce que
+ <command>makeinfo</command> ne sait pas g&eacute;rer ces sources
+ <application>texinfo</application>. (Consultez le
+ <filename>Makefile</filename> et <filename>PLIST</filename> de
+ <filename>japanese/skk</filename> pour avoir un exemple de la
+ mani&egrave;re de proc&eacute;der.)</para>
+ </step>
+
+ <step>
+ <para>Retournez dans le r&eacute;pertoire de votre logiciel
+ port&eacute;, faites un <command>make clean; make</command> et
+ v&eacute;rifiez que les fichiers &ldquo;info&rdquo; sont
+ r&eacute;g&eacute;n&eacute;r&eacute;s &agrave; partir des sources
+ <application>texinfo</application>. Comme ces derniers sont plus
+ r&eacute;cents que les fichiers &ldquo;info&rdquo;, ils doivent
+ &ecirc;tre reconstruits par le <command>make</command>; mais de
+ nombreux <filename>Makefile</filename>s ne comportent pas les
+ d&eacute;pendances correctes pour les fichiers &ldquo;info&rdquo;.
+ Dans le cas d'<command>emacs</command>, j'ai d&ucirc; rectifier le
+ <filename>Makefile.in</filename> principal pour qu'il aille dans le
+ sous-r&eacute;pertoire <filename>man</filename> pour reconstruire
+ les pages &ldquo;info&rdquo;&nbsp;:</para>
+
+ <programlisting>
+--- ./Makefile.in.org Mon Aug 19 21:12:19 1996
++++ ./Makefile.in Tue Apr 15 00:15:28 1997
+@@ -184,7 +184,7 @@
+&nbsp;# Sous-r&eacute;pertoires &agrave; reconstruire r&eacute;cursivement. `lisp' n'est pas inclus
+&nbsp;# parce que les fichiers lisp compil&eacute;s font partie de la distribution
+&nbsp;# et que vous ne pouvez pas les recompiler sans installer d'abord Emacs
+-SUBDIR = lib-src src
++SUBDIR = lib-src src man
+
+&nbsp;# makefile des sous-r&eacute;pertoires list&eacute;s dans $SUBDIR.
+&nbsp;SUBDIR_MAKEFILES = lib-src/Makefile man/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile
+--- ./man/Makefile.in.org Thu Jun 27 15:27:19 1996
++++ ./man/Makefile.in Tue Apr 15 00:29:52 1997
+@@ -66,6 +66,7 @@
+&nbsp;${srcdir}/gnu1.texi \
+&nbsp;${srcdir}/glossary.texi
+
++all: info
+&nbsp;info: $(INFO_TARGETS)
+
+&nbsp;dvi: $(DVI_TARGETS)
+ </programlisting>
+
+ <para>La deuxi&egrave;me modification est n&eacute;cessaire parce que
+ la cible par d&eacute;faut dans le sous-r&eacute;pertoire
+ <filename>man</filename> s'appelle <maketarget>info</maketarget>,
+ alors que le <filename>Makefile</filename> veut ex&eacute;cuter la
+ cible <maketarget>all</maketarget>. J'ai aussi supprim&eacute;
+ l'installation du fichier &ldquo;info&rdquo; parce que nous en
+ avons d&eacute;j&agrave; un de m&ecirc;me nom dans
+ <filename>/usr/share/info</filename> (cette correction
+ n'appara&icirc;t pas dans l'exemple).</para>
+ </step>
+
+ <step>
+ <para>Si le fichier <filename>dir</filename> est install&eacute; par
+ des instructions quelque part dans le <filename>Makefile</filename>,
+ supprimez-les. Votre logiciel &agrave; porter ne doit pas le faire.
+ Supprimez aussi toutes les autres commandes qui
+ &ldquo;saliraient&rdquo; le fichier <filename>dir</filename>.</para>
+
+ <programlisting>
+--- ./Makefile.in.org Mon Aug 19 21:12:19 1996
++++ ./Makefile.in Mon Apr 14 23:38:07 1997
+@@ -368,14 +368,8 @@
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;then \
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cd ${infodir}; \
+- if [ -f dir ]; then \
+- if [ ! -f dir.old ]; then mv -f dir dir.old; \
+- else mv -f dir dir.bak; fi; \
+- fi; \
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cd ${srcdir}/info ; \
+- (cd $${thisdir}; ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir); \
+- (cd $${thisdir}; chmod a+r ${infodir}/dir); \
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for f in ccmode* cl* dired-x* ediff* emacs* forms* gnus* info* message* mh-e* sc* vip*; do \
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cd $${thisdir}; \
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chmod a+r ${infodir}/$$f); \
+ </programlisting>
+ </step>
+
+ <step>
+ <para>(Cette &eacute;tape n'est n&eacute;cessaire que si vous modifiez
+ un logiciel port&eacute; d&eacute;j&agrave; existant.) Consultez
+ <filename>pkg/PLIST</filename> et supprimez tout ce qui essaye
+ d'appliquer des rectificatifs &agrave;
+ <filename>info/dir</filename>. Cela peut se produire dans
+ <filename>pkg/INSTALL</filename> ou un autre fichier, faites donc
+ une recherche d&eacute;taill&eacute;e&nbsp;:</para>
+
+ <programlisting>
+Index: pkg/PLIST
+===================================================================
+RCS file: /usr/cvs/ports/editors/emacs/pkg/PLIST,v
+retrieving revision 1.15
+diff -u -r1.15 PLIST
+--- PLIST 1997/03/04 08:04:00 1.15
++++ PLIST 1997/04/15 06:32:12
+@@ -15,9 +15,6 @@
+&nbsp;man/man1/emacs.1.gz
+&nbsp;man/man1/etags.1.gz
+&nbsp;man/man1/ctags.1.gz
+-@unexec cp %D/info/dir %D/info/dir.bak
+-info/dir
+-@unexec cp %D/info/dir.bak %D/info/dir
+&nbsp;info/cl
+&nbsp;info/cl-1
+&nbsp;info/cl-2
+ </programlisting>
+ </step>
+
+ <step>
+ <para>Ajoutez une cible <maketarget>post-install</maketarget> au
+ <filename>Makefile</filename> pour cr&eacute;er un fichier
+ <filename>dir</filename> s'il n'y en a pas. Appelez aussi
+ <maketarget>install-info</maketarget> pour les fichiers
+ &ldquo;info&rdquo; install&eacute;s&nbsp;:</para>
+
+ <programlisting>
+Index: Makefile
+===================================================================
+RCS file: /usr/cvs/ports/editors/emacs/Makefile,v
+retrieving revision 1.26
+diff -u -r1.26 Makefile
+--- Makefile 1996/11/19 13:14:40 1.26
++++ Makefile 1997/05/20 10:25:09 1.28
+@@ -20,5 +20,11 @@
+&nbsp;post-install:
+&nbsp;.for file in emacs-19.34 emacsclient etags ctags b2m
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strip ${PREFIX}/bin/${file}
+&nbsp;.endfor
++ if [ ! -f ${PREFIX}/info/dir ]; then \
++ ${SED} -ne '1,/Menu:/p' /usr/share/info/dir > ${PREFIX}/info/dir; \
++ fi
++.for info in emacs vip viper forms gnus mh-e cl sc dired-x ediff ccmode
++ install-info ${PREFIX}/info/${info} ${PREFIX}/info/dir
++.endfor
+
+&nbsp;.include &lt;bsd.port.mk&gt;
+ </programlisting>
+
+ <para>N'utilisez rien d'autre que
+ <filename>/usr/share/info/dir</filename> et la commande ci-dessus
+ pour cr&eacute;er un nouveau fichier &ldquo;info&rdquo;. J'ai en
+ fait ajout&eacute; les trois premi&egrave;res lignes du rectificatif
+ ci-dessus &agrave; <filename>bsd.port.mk</filename> pour le cas
+ o&grave; vous ne l'auriez pas fait par vous-m&ecirc;me dans
+ <filename>PLIST</filename>.</para>
+ </step>
+
+ <step>
+ <para>Editez <filename>PLIST</filename> et ajoutez les instructions
+ <literal>@exec</literal> ainsi que <literal>@unexec</literal>
+ &eacute;quivalentes pour <command>pkg_delete</command>. Vous n'avez
+ pas besoin de supprimer <filename>info/dir</filename> avec
+ <literal>@unexec</literal>&nbsp;:</para>
+
+ <programlisting>
+Index: pkg/PLIST
+===================================================================
+RCS file: /usr/cvs/ports/editors/emacs/pkg/PLIST,v
+retrieving revision 1.15
+diff -u -r1.15 PLIST
+--- PLIST 1997/03/04 08:04:00 1.15
++++ PLIST 1997/05/20 10:25:12 1.17
+@@ -16,7 +14,15 @@
+&nbsp;man/man1/etags.1.gz
+&nbsp;man/man1/ctags.1.gz
++@unexec install-info --delete %D/info/emacs %D/info/dir
+&nbsp;:
++@unexec install-info --delete %D/info/ccmode %D/info/dir
+&nbsp;info/cl
+&nbsp;info/cl-1
+@@ -87,6 +94,18 @@
+&nbsp;info/viper-3
+&nbsp;info/viper-4
++@exec [ -f %D/info/dir ] || sed -ne '1,/Menu:/p' /usr/share/info/dir > %D/info/dir
++@exec install-info %D/info/emacs %D/info/dir
+&nbsp;:
++@exec install-info %D/info/ccmode %D/info/dir
+&nbsp;libexec/emacs/19.34/i386--freebsd/cvtmail
+&nbsp;libexec/emacs/19.34/i386--freebsd/digest-doc
+ </programlisting>
+
+ <note>
+ <para>Les commandes <literal>@unexec install-info --delete</literal>
+ doivent &ecirc;tre plac&eacute;es avant les fichiers
+ &ldquo;info&rdquo; eux-m&ecirc;mes pour qu'elles puissent lire
+ les fichiers. Il faut aussi placer les commandes
+ <literal>@exec install-info</literal> apr&egrave;s les fichiers
+ &ldquo;info&rdquo; et la commande <literal>@exec</literal> qui
+ cr&eacute;e le fichier <filename>dir</filename> file.</para>
+ </note>
+ </step>
+
+ <step>
+ <para><link linkend="porting-testing">Testez</link> et admirez votre
+ oeuvre. <!-- smiley --><emphasis>:)</emphasis>. V&eacute;rifiez le
+ fichier <filename>dir</filename> avant et apr&egrave;s chaque
+ &eacute;tape.</para>
+ </step>
+ </procedure>
+ </sect2>
+
+ <sect2>
+ <title>Le sous r&eacute;pertoire <filename>pkg/</filename></title>
+
+ <para>Il y a quelques astuces dont je n'ai pas encore parl&eacute;
+ &agrave; propos du sous-r&eacute;pertoire <filename>pkg/</filename> qui
+ sont parfois utiles.</para>
+
+ <sect3 id="porting-message">
+ <title><filename>MESSAGE</filename></title>
+
+ <para>Si vous avez besoin d'afficher un message lors de l'installation,
+ vous pouvez le mettre dans <filename>pkg/MESSAGE</filename>. Cette
+ fonctionnalit&eacute; sert souvent &agrave; informer des &eacute;tapes
+ d'installation qui doivent &ecirc;tre effectu&eacute;es apr&egrave;s
+ <command>pkg_add</command> ou pour afficher des informations &agrave;
+ propos de la licence.</para>
+
+ <note>
+ <para>Il n'y a pas besoin d'ajouter le fichier
+ <filename>pkg/MESSAGE</filename> &agrave;
+ <filename>pkg/PLIST</filename>. D'autre part, il ne sera pas
+ affich&eacute; automatiquement si l'utilisateur installe le logiciel
+ port&eacute; au lieu du logiciel pr&eacute;compil&eacute;, vous
+ devriez donc probablement l'afficher vous-m&ecirc;me depuis la cible
+ <maketarget>post-install</maketarget>.</para>
+ </note>
+ </sect3>
+
+ <sect3>
+ <title><filename>INSTALL</filename></title>
+
+ <para>S'il faut ex&eacute;cuter des commandes lors de l'installation du
+ logiciel pr&eacute;compil&eacute; avec <command>pkg_add</command>,
+ vous pouvez le faire avec la proc&eacute;dure
+ <filename>pkg/INSTALL</filename>. Cette proc&eacute;dure sera
+ automatiquement ajout&eacute;e au paquetage et ex&eacute;cut&eacute;e
+ deux fois par <command>pkg_add</command>. La premi&egrave;re fois sous
+ la forme <literal>INSTALL &dollar;{PKGNAME} PRE-INSTALL</literal> et
+ la seconde fois sous la forme
+ <literal>INSTALL &dollar;{PKGNAME} POST-INSTALL</literal>. Vous pouvez
+ tester <literal>&dollar;2</literal> pour savoir comment la
+ proc&eacute;dure a &eacute;t&eacute; appel&eacute;e. La variable
+ d'environnement <envar>PKG_PREFIX</envar> contient le chemin
+ d'acc&egrave;s au r&eacute;pertoire d'installation du logiciel.
+ Reportez-vous aux pages de manuel de &man.pkg.add.1; pour plus
+ d'informations.</para>
+
+ <note>
+ <para>Cette proc&eacute;dure n'est pas ex&eacute;cut&eacute;e
+ automatiquement si le logiciel port&eacute; est install&eacute; avec
+ <command>make install</command>. Si vous avez besoin qu'elle le
+ soit, vous devrez l'appeler explicitement depuis le
+ <filename>Makefile</filename> du logiciel port&eacute;.</para>
+ </note>
+ </sect3>
+
+ <sect3>
+ <title><filename>REQ</filename></title>
+
+ <para>Si votre logiciel &agrave; porter doit d&eacute;terminer s'il doit
+ &ecirc;tre install&eacute; ou non, vous pouvez cr&eacute;er une
+ proc&eacute;dure
+ <filename>pkg/REQ</filename>&nbsp;-&nbsp;&ldquo;requis&rdquo;. Elle
+ sera appel&eacute;e automatiquement lors de l'installation et de la
+ d&eacute;sinstallation pour d&eacute;cider s'il faut ou non effectuer
+ l'op&eacute;ration.</para>
+ </sect3>
+
+ <sect3 id="porting-plist">
+ <title>Modifier <filename>PLIST</filename> sur la base de variables
+ du <command>make</command></title>
+
+ <para>Certains logiciels port&eacute;s, en particulier les logiciels
+ <literal>p5-...</literal>, doivent modifier leur
+ <filename>PLIST</filename> selon les options avec lesquelles ils sont
+ configur&eacute;s (ou la version de perl, dans le cas des logiciels
+ <literal>p5-...</literal>). Pour rendre les choses plus faciles,
+ toutes les occurrences de <literal>%%OSREL%%</literal>,
+ <literal>%%PERL_VER%%</literal> et <literal>%%PERL_VERSION%%</literal>
+ dans la <filename>PLIST</filename> seront remplac&eacute;es par les
+ valeurs appropri&eacute;es. La valeur de <literal>%%OSREL%%</literal>
+ est le num&eacute;ro de version du syst&egrave;me d'exploitation
+ (e.g., <literal>2.2.7</literal>). <literal>%%PERL_VERSION%%</literal>
+ est le num&eacute;ro de version complet de perl (e.g.,
+ <literal>5.00502</literal>) et <literal>%%PERL_VER%%</literal> est le
+ num&eacute;ro de version de perl, sans le niveau de
+ &ldquo;<foreignphrase>patch</foreignphrase>&rdquo; (e.g.,
+ <literal>5.005</literal>).</para>
+
+ <para>Si vous avez besoin d'autres substitutions, vous pouvez renseigner
+ la variable <makevar>PLIST_SUB</makevar> avec une liste de doublets
+ <literal><replaceable>VAR</replaceable>=<replaceable>VALUE</replaceable></literal>
+ et toutes les occurrences de
+ <literal>%%<replaceable>VAR</replaceable>%%</literal> seront
+ remplac&eacute;es par <replaceable>VALUE</replaceable> dans la
+ <filename>PLIST</filename>.</para>
+
+ <para>Par exemple, si votre logiciel &agrave; porter installe de
+ nombreux fichiers dans un sous-r&eacute;pertoire diff&eacute;rent
+ selon la version, vous pouvez mettre quelque chose comme&nbsp;:</para>
+
+ <programlisting>
+OCTAVE_VERSION= 2.0.13
+PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION}
+ </programlisting>
+
+ <para>dans le <filename>Makefile</filename> et utiliser
+ <literal>%%OCTAVE_VERSION%%</literal> chaque fois que la version
+ appara&icirc;t dans la <filename>PLIST</filename>. De cette
+ fa&ccedil;on, lorsque vous mettez &agrave; jour le logiciel, vous
+ n'aurez pas &agrave; modifier des douzaines (dans certains cas, des
+ centaines) de lignes dans la <filename>PLIST</filename>.</para>
+
+ <para>Cette substitution (de m&ecirc;me que l'ajout des
+ <link linkend="porting-manpages">pages de manuel</link>) est faite
+ entre les cibles <maketarget>do-install</maketarget> et
+ <maketarget>post-install</maketarget>, en lisant
+ <makevar>PLIST</makevar> et en &eacute;crivant dans
+ <makevar>TMPPLIST</makevar> (par d&eacute;faut&nbsp;:
+ <filename><makevar>WRKDIR</makevar>/.PLIST.mktmp</filename>). Si votre
+ logiciel &agrave; porter construit <makevar>PLIST</makevar> &agrave;
+ la vol&eacute;e, faites-le alors dans ou avant
+ <maketarget>do-install</maketarget>. De plus, si votre logiciel a
+ besoin de modifier le fichier obtenu, faites-le dans
+ <maketarget>post-install</maketarget> et dans un fichier appel&eacute;
+ <makevar>TMPPLIST</makevar>.</para>
+ </sect3>
+
+ <sect3>
+ <title id="porting-pkgsubdir">Changer les noms des fichiers du
+ sous-r&eacute;pertoire <filename>pkg</filename></title>
+
+ <para>Tous les noms de fichier du sous-r&eacute;pertoire
+ <filename>pkg</filename> sont d&eacute;finis par des variables, vous
+ pouvez donc les changer dans votre <filename>Makefile</filename> si
+ besoin est. C'est particuli&egrave;rement utile si vous partager le
+ m&ecirc;me sous-r&eacute;pertoire <filename>pkg</filename> entre
+ plusieurs logiciels port&eacute;s ou devez &eacute;crire dans l'un
+ de ces fichiers (voyez la section
+ <link linkend="porting-wrkdir">Ecrire ailleurs que dans
+ <makevar>WRKDIR</makevar></link> pour savoir pourquoi c'est une
+ mauvaise id&eacute;e d'&eacute;crire directement dans le
+ sous-r&eacute;pertoire <filename>pkg</filename>.</para>
+
+ <para>Voici la liste de ces variables et leurs valeurs par
+ d&eacute;faut&nbsp;:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Variable</entry>
+ <entry>Valeur par d&eacute;faut</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><makevar>COMMENT</makevar></entry>
+ <entry><literal>${PKGDIR}/DESCR</literal></entry>
+ </row>
+
+ <row>
+ <entry><makevar>DESCR</makevar></entry>
+ <entry><literal>${PKGDIR}/DESCR</literal></entry>
+ </row>
+
+ <row>
+ <entry><makevar>PLIST</makevar></entry>
+ <entry><literal>${PKGDIR}/PLIST</literal></entry>
+ </row>
+
+ <row>
+ <entry><makevar>PKGINSTALL</makevar></entry>
+ <entry><literal>${PKGDIR}/PKGINSTALL</literal></entry>
+ </row>
+
+ <row>
+ <entry><makevar>PKGDEINSTALL</makevar></entry>
+ <entry><literal>${PKGDIR}/PKGDEINSTALL</literal></entry>
+ </row>
+
+ <row>
+ <entry><makevar>PKGREQ</makevar></entry>
+ <entry><literal>${PKGDIR}/REQ</literal></entry>
+ </row>
+
+ <row>
+ <entry><makevar>PKGMESSAGE</makevar></entry>
+ <entry><literal>${PKGDIR}/MESSAGE</literal></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Modifiez s'il vous pla&icirc;t ces variables plut&ocirc;t que de
+ surcharger <makevar>PKG_ARGS</makevar>. Si vous modifiez
+ <makevar>PKG_ARGS</makevar>, ces fichiers ne seront pas correctement
+ install&eacute;s dans <filename>/var/db/pkg</filename> lors de
+ l'installation sous forme de logiciel port&eacute;.</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Probl&egrave;mes de licence</title>
+
+ <para>Certains logiciels ont des licences qui imposent des restrictions ou
+ peuvent violer la loi. (Le brevet de PKP sur la cryptographie &grave;
+ cl&eacute; publique et ITAR&nbsp;-&nbsp;exportation de logiciel de
+ cryptographie&nbsp;-&nbsp;pour ne citer que deux exemples). Ce que nous
+ pouvons en faire varie beaucoup, selon les termes exacts de leurs
+ licences respectives.</para>
+
+ <note>
+ <para>Il est de votre responsabilit&eacute;, pour le logiciel que vous
+ porter, de lire les termes de la licence et de vous assurer que le
+ projet FreeBSD ne pourra pas &ecirc;tre accus&eacute; de les violer en
+ redistribuant le source ou les binaires compil&eacute;s que ce soit
+ par ftp ou sur CD-ROM. En cas de doute, contactez-la &a.ports;.</para>
+ </note>
+
+ <para>Il y a deux variables que vous pouvez d&eacute;finir dans le
+ <filename>Makefile</filename> pour g&eacute;rer les situations qui se
+ produisent souvent&nbsp;:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Si le logiciel &agrave; porter a une licence de type &ldquo;non
+ commercialisable&rdquo; affectez &agrave; la variable
+ <makevar>NO_CDROM</makevar> une cha&icirc;ne de caract&egrave;res
+ expliquant pourquoi. Nous v&eacute;rifierons que ces logiciels
+ ne soient pas sur le CD-ROM au moment de la parution. Les archives
+ du source et le paquetage seront cependant disponibles par
+ ftp.</para>
+ </listitem>
+
+ <listitem>
+ <para>S'il faut recompiler le logiciel port&eacute; sur chaque site,
+ ou si le logiciel pr&eacute;compil&eacute; ne peut pas &ecirc;tre
+ redistribu&eacute; du fait de sa licence, affectez &agrave; la
+ variable <makevar>NO_PACKAGE</makevar> une cha&icirc;ne de
+ caract&egrave;res expliquant pourquoi. Nous v&eacute;rifierons que
+ ces logiciels pr&eacute;compil&eacute;s ne soient pas sur le site
+ ftp ni sur le CD-ROM au moment de la parution. Les archives du
+ source seront cependant disponibles sur les deux.</para>
+ </listitem>
+
+ <listitem>
+ <para>S'il y a des restrictions l&eacute;gales &agrave; l'utilisation
+ du logiciel (e.g., cryptographie) ou que la licence est du type
+ &ldquo;pas d'usage commercial&rdquo;, affectez &agrave; la variable
+ <makevar>RESTRICTED</makevar> une cha&icirc;ne de caract&egrave;res
+ expliquant pourquoi. Pour ces logiciels, ni les archives du source
+ ni le logiciel pr&eacute;compil&eacute; ne seront m&ecirc;me
+ disponibles sur nos sites ftp.</para>
+ </listitem>
+ </orderedlist>
+
+ <note>
+ <para>La Licence Publique G&eacute;n&eacute;rale
+ GNU&nbsp;-&nbsp;<foreignphrase>GNU General Public License
+ (GPL)</foreignphrase>, version 1 et 2, ne pose normalement pas de
+ probl&egrave;me pour les logiciels port&eacute;s.</para>
+ </note>
+
+ <note>
+ <para>Si vous &ecirc;tes
+ &ldquo;<foreignphrase>committer</foreignphrase>&rdquo;, veillez
+ &agrave; mettre aussi &agrave; jour le fichier
+ <filename>ports/LEGAL</filename>.</para>
+ </note>
+ </sect2>
+
+ <sect2>
+ <title>Mises &agrave; jour</title>
+
+ <para>Si vous constatez qu'un logiciel port&eacute; n'est pas
+ synchronis&eacute; avec la plus r&eacute;cente version des auteurs
+ originaux, v&eacute;rifiez d'abord que vous avez la derni&egrave;re
+ version du logiciel port&eacute;. Vous la trouverez dans le
+ r&eacute;pertoire <filename>ports/ports-current</filename> des sites
+ miroir ftp.</para>
+
+ <para>Envoyez ensuite un courrier &eacute;lectronique au responsable de
+ la maintenance, s'il est mentionn&eacute; dans le
+ <filename>Makefile</filename> du logiciel. Il est peut-&ecirc;tre
+ d&eacute;j&agrave; en train de travailler sur la mise &agrave; jour, ou
+ a une bonne raison de ne pas la faire (par exemple &agrave; cause de
+ probl&egrave;mes de stabilit&eacute; de la nouvelle version).</para>
+
+ <para>Si le responsable de la maintenance vous demande de mettre le
+ logiciel &agrave; jour ou s'il n'y a tout simplement pas de responsable,
+ faites cette mise &agrave; jour et envoyez un delta r&eacute;cursif
+ (soit contextuel soit unifi&eacute;, mais les responsables de
+ l'arborescence des logiciels port&eacute;s pr&eacute;f&egrave;rent le
+ format unifi&eacute;) entre les anciens et les nouveaux
+ r&eacute;pertoires du logiciel (e.g., si votre r&eacute;pertoire
+ modifi&eacute; s'appelle <filename>superedit</filename> et l'original
+ tel que dans notre arborescence <filename>superedit.bak</filename>,
+ envoyez nous alors le r&eacute;sultat de
+ <command>diff -ruN superedit.bak superedit</command>).
+ Contr&ocirc;lez-le s'il vous pla&icirc;t pour v&eacute;rifier que toutes
+ les modifications sont coh&eacute;rentes. La meilleure fa&ccedil;on de
+ nous l'envoyer est de l'inclure dans un &man.send-pr.1;
+ (cat&eacute;gorie <literal>ports</literal>). Pr&eacute;cisez s'il vous
+ pla&icirc;t quels sont les fichiers ajout&eacute;s et supprim&eacute;s,
+ parce qu'il faut explicitement les indiquez &agrave; CVS au moment de le
+ mise &agrave; jour. Si le delta fait plus de 20Ko, compressez-le et
+ codez-le avec <application>uuencode</application>; sinon, incluez-le
+ seulement tel quel dans le PR.</para>
+
+ <para>Une fois encore, utilisez s'il vous pla&icirc;t &man.diff.1; et non
+ &man.shar.1; pour nous envoyer les mises &agrave; jour des logiciels
+ port&eacute;s.</para>
+ </sect2>
+
+ <sect2>
+ <title><anchor id="porting-dads">A faire &agrave; ne pas faire</title>
+
+ <para>Voici une liste de ce qu'il faut habituellement faire ou
+ &eacute;viter lors d'un portage. Vous devriez utiliser cette liste
+ pour valider votre propre portage et vous pouvez aussi contr&ocirc;ler
+ les logiciels que d'autres ont soumis dans la base des donn&eacute;es
+ des rapports d'incidents. Transmettez tous vos commentaires au sujet des
+ logiciels port&eacute;s dans la rubrique
+ <link linkend="contrib-general">Rapports d'incidents et commentaires
+ g&eacute;n&eacute;raux&nbsp;-&nbsp;<foreignphrase>Bug Reports and
+ General Commentary</foreignphrase></link>. Validez les logiciels
+ port&eacute;s mentionn&eacute;s dans la base nous permettra de les
+ int&eacute;grer plus rapidement et prouvera en m&ecirc;me temps que vous
+ savez ce que vous faites.</para>
+
+ <sect3>
+ <title>Nettoyez les binaires</title>
+
+ <para>Supprimez les informations
+ inutiles&nbsp;-&nbsp;<foreignphrase>strip</foreignphrase>&nbsp;-&nbsp;des
+ binaires. Si c'est d&eacute;j&agrave; fait par le source d'origine,
+ tant mieux; sinon ajoutez une r&egrave;gle &agrave; la cible
+ <maketarget>post-install</maketarget> pour le faire vous-m&ecirc;me.
+ Voici un example&nbsp;:</para>
+
+ <programlisting>
+post-install:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strip ${PREFIX}/bin/xdl
+ </programlisting>
+
+ <para>Utilisez la commande &man.file.1; sur l'ex&eacute;cutable
+ install&eacute; pour voir s'il est d&eacute;j&agrave; nettoy&eacute;.
+ Si elle ne vous r&eacute;pond pas <literal>not stripped</literal>,
+ c'est d&eacute;j&agrave; fait.</para>
+ </sect3>
+
+ <sect3>
+ <title>macros-instruction INSTALL_*</title>
+
+ <para>Utilisez les macros-instructions fournies par
+ <filename>bsd.port.mk</filename> pour &ecirc;tre s&ucirc;r que les
+ droits sur les fichiers sont correctement g&eacute;r&eacute;s par vos
+ cibles <maketarget>*-install</maketarget>. Ce sont&nbsp;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><makevar>INSTALL_PROGRAM</makevar> pour installer les binaires
+ ex&eacute;cutables,</para>
+ </listitem>
+
+ <listitem>
+ <para><makevar>INSTALL_SCRIPT</makevar> pour installer les
+ proc&eacute;dures ex&eacute;cutables,</para>
+ </listitem>
+
+ <listitem>
+ <para><makevar>INSTALL_DATA</makevar> pour installer les
+ donn&eacute;es partageables,</para>
+ </listitem>
+
+ <listitem>
+ <para><makevar>INSTALL_MAN</makevar> pour installer les pages de
+ manuel et autres documentations (cela ne compresse rien).</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Ces macros-instructions sont essentiellement compos&eacute;es
+ d'une commande <command>install</command> avec les options
+ appropri&eacute;es. Vous trouverez plus bas un exemple de leur
+ utilisation.</para>
+ </sect3>
+
+ <sect3 id="porting-wrkdir">
+ <title><makevar>WRKDIR</makevar></title>
+
+ <para>N'&eacute;crivez rien en dehors de <makevar>WRKDIR</makevar>.
+ <makevar>WRKDIR</makevar> est le seul endroit o&ugrave; vous
+ &ecirc;tes s&ucirc;r de pouvoir &eacute;crire pendant la
+ compilation d'un logiciel port&eacute; (reportez-vous &agrave; la
+ section <link linkend="ports-cd">compiler les logiciels port&eacute;s
+ depuis un CD-ROM</link> pour avoir un example de compilation de
+ logiciels port&eacute;s dans une arborescence en lecture seule).
+ example of building ports from a read-only tree). S'il vous faut
+ modifier un fichier dans <makevar>PKGDIR</makevar>, faites-le en
+ <link linkend="porting-pkgsubdir">red&eacute;finissant une
+ variable</link>, non en l'&eacute;crasant.</para>
+ </sect3>
+
+ <sect3>
+ <title><makevar>WRKDIRPREFIX</makevar></title>
+
+ <para>Veillez &agrave; utiliser <makevar>WRKDIRPREFIX</makevar>.
+ Cela ne concerne pas la plupart des logiciels port&eacute;s. Mais,
+ en particulier si vous faites r&eacute;f&eacute;rence au
+ <makevar>WRKDIR</makevar> d'un autre logiciel, notez que la
+ r&eacute;f&eacute;rence correcte est
+ <filename><makevar>WRKDIRPREFIX</makevar><makevar>PORTSDIR</makevar>/<replaceable>sous-r&eacute;pertoire</replaceable>/<replaceable>nom</replaceable>/work</filename>
+ et non <filename><makevar>PORTSDIR</makevar>/<replaceable>sous-r&eacute;pertoire</replaceable>/<replaceable>nom</replaceable>/work</filename>
+ ou <filename><makevar>.CURDIR</makevar>/../../<replaceable>sous-r&eacute;pertoire</replaceable>/<replaceable>nom</replaceable>/work</filename>
+ ou autre chose encore.</para>
+
+ <para>Par ailleurs, si vous d&eacute;finissez vous-m&ecirc;me
+ <makevar>WRKDIR</makevar>, veillez &agrave; bien le faire commencer
+ par <literal>&dollar;{WKRDIRPREFIX}&dollar;{.CURDIR}</literal>.</para>
+ </sect3>
+
+ <sect3 id="porting-versions">
+ <title>Distinguer les syst&egrave;mes d'exploitation et leurs
+ versions</title>
+
+ <para>Vous pouvez tomber sur du code qui doit &ecirc;tre modifi&eacute;
+ ou compil&eacute; conditionnellement selon la version d'Unix sur
+ laquelle il s'ex&eacute;cutera. Si vous avez besoin de faire ce type
+ de modifications du code ou de mettre en place une compilation
+ conditionelle, veillez &agrave; ce que vos modifications soient aussi
+ g&eacute;n&eacute;rales que possible, de sorte que nous puissions
+ r&eacute;troporter le code sur les syst&egrave;mes FreeBSD 1.x et le
+ porter sur les autres syst&egrave;mes BSD tels que 4.4BSD du CSRG,
+ BSD/386, 386BSD, NetBSD et OpenBSD.</para>
+
+ <para>La solution appropri&eacute;e pour distinguer 4.3BSD/Reno(1990) et
+ les versions ult&eacute;rieures de BSD est d'utiliser la
+ macro-instruction <literal>BSD</literal> d&eacute;finie dans
+ <filename>&lt;sys/param.h&gt;</filename>. Avec de la chance, ce
+ fichier est d&eacute;j&agrave; inclus; si ce n'est pas le cas,
+ ajoutez&nbsp;:</para>
+
+ <programlisting>
+#if (defined(__unix__) || defined(unix)) &amp;&amp; !defined(USG)
+#include &lt;sys/param.h&gt;
+#endif
+ </programlisting>
+
+ <para>&agrave; l'endroit voulu dans le fichier <filename>.c</filename>.
+ Nous estimons que tous les syst&egrave;mes qui d&eacute;finissent ces
+ deux symboles disposent d'un <filename>sys/param.h</filename>. Si vous
+ tombez sur un syst&egrave;me pour lequel ce n'est pas le cas, nous
+ aimerions le savoir. Envoyez un courrier &eacute;lectronique &agrave;
+ la &a.ports;.</para>
+
+ <para>L'autre moyen est d'utiliser le style GNU
+ <application>autoconf</application> de faire ce genre de
+ choses&nbsp;:</para>
+
+ <programlisting>
+#ifdef HAVE_SYS_PARAM_H
+#include &lt;sys/param.h&gt;
+#endif
+ </programlisting>
+
+ <para>N'oubliez pas d'ajouter <literal>-DHAVE_SYS_PARAM_H</literal>
+ &agrave; <makevar>CFLAGS</makevar> dans le
+ <filename>Makefile</filename> dans ce cas.</para>
+
+ <para>Une fois que vous avez inclus
+ <filename>sys/param.h</filename> vous pouvez utiliser&nbsp;:</para>
+
+ <programlisting>
+#if (defined(BSD) &amp;&amp; (BSD &gt;= 199103))
+ </programlisting>
+
+ <para>pour savoir si le code est compil&eacute; sur un syst&egrave;me
+ bas&eacute; sur 4.3 Net2 ou sur une version ult&eacute;rieure (e.g.,
+ FreeBSD 1.x, 4.3/Reno, NetBSD 0.9, 386BSD, BSD/386 1.1 et
+ ant&eacute;rieurs).</para>
+
+ <para>Utilisez&nbsp;:</para>
+
+ <programlisting>
+#if (defined(BSD) &amp;&amp; (BSD &gt;= 199306))
+ </programlisting>
+
+ <para>pour savoir si le code est compil&eacute; sur un syst&egrave;me
+ bas&eacute; sur 4.4 ou sur une version ult&eacute;rieure (e.g.,
+ FreeBSD 2.x, 4.4, NetBSD 1.0, 386BSD, BSD/386 2.0 et
+ ult&eacute;rieurs).</para>
+
+ <para>La macro-instruction <literal>BSD</literal> prend la valeur
+ <literal>199506</literal> lorsque le code est bas&eacute; sur
+ 4.4BSD-Lite2. Ceci n'est donn&eacute; qu'&agrave; titre d'information
+ et ne doit pas &ecirc;tre utilis&eacute; pour distinguer les versions
+ de FreeBSD bas&eacute;es sur 4.4-Lite de celles qui ont
+ int&eacute;gr&eacute; les modifications introduites avec
+ 4.4-Lite2. Il faut utiliser pour cela la macro-instruction
+ <literal>__FreeBSD__</literal>.</para>
+
+ <para>Utilisez avec mod&eacute;ration&nbsp;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><literal>__FreeBSD__</literal> est d&eacute;finie dans toutes
+ les versions de FreeBSD. Utilisez-la si vos modifications
+ ne concernent <emphasis>que</emphasis> FreeBSD. Des trucs de
+ portage tel que remplacer <function>strerror()</function>
+ par <literal>sys_errlist[]</literal> sont propres aux
+ syst&egrave;mes Berkeley, et non &agrave; FreeBSD.</para>
+ </listitem>
+
+ <listitem>
+ <para>Sous FreeBSD 2.x, <literal>__FreeBSD__</literal> prend la
+ valeur <literal>2</literal>. Dans les versions ant&eacute;rieures,
+ elle vaut <literal>1</literal>. Les versions suivantes
+ l'augmenteront pour qu'elle soit &eacute;gale &agrave; leur
+ num&eacute;ro de version majeure.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si vous avez besoin de faire la diff&eacute;rence entre un
+ syst&egrave;me FreeBSD 2.x et un syst&egrave;me 3.x, la bonne
+ mani&egrave;re de faire est normalement d'utiliser les
+ macros-instructions <literal>BSD</literal> d&eacute;crites plus
+ haut. S'il y a effectivement des modifications sp&eacute;cifiques
+ &agrave; FreeBSD (une option particuli&egrave;re pour une
+ biblioth&egrave;que partiag&eacute;e avec <command>ld</command>),
+ vous pouvez alors &agrave; juste titre utiliser
+ <literal>__FreeBSD__</literal> et
+ <literal>#if __FreeBSD__ &gt; 1</literal> pour tester s'il s'agit
+ d'un syst&egrave;me FreeBSD 2.x ou ult&eacute;rieur. Si vous
+ avez besoin d'une particularisation plus fine des syst&egrave;mes
+ FreeBSD &agrave; partir de 2.0-release, vous pouvez vous servir
+ de&nbsp;:</para>
+
+ <programlisting>
+#if __FreeBSD__ &gt;= 2
+#include &lt;osreldate.h&gt;
+# if __FreeBSD_version &gt;= 199504
+ /* code propre &agrave; la version 2.0.5 et ult&eacute;rieures */
+# endif
+#endifi
+ </programlisting>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Version de FreeBSD</entry>
+ <entry><literal>__FreeBSD_version</literal></entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>2.0-RELEASE</entry>
+ <entry>119411</entry>
+ </row>
+
+ <row>
+ <entry>2.1-CURRENTs</entry>
+ <entry>199501, 199503</entry>
+ </row>
+
+ <row>
+ <entry>2.0.5-RELEASE</entry>
+ <entry>199504</entry>
+ </row>
+
+ <row>
+ <entry>2.2-CURRENT avant 2.1</entry>
+ <entry>199508</entry>
+ </row>
+
+ <row>
+ <entry>2.1.0-RELEASE</entry>
+ <entry>199511</entry>
+ </row>
+
+ <row>
+ <entry>2.2-CURRENT apr&egrave; 2.1.5</entry>
+ <entry>199512</entry>
+ </row>
+
+ <row>
+ <entry>2.1.5-RELEASE</entry>
+ <entry>199607</entry>
+ </row>
+
+ <row>
+ <entry>2.2-CURRENT apr&eacute;s 2.1.6</entry>
+ <entry>199608</entry>
+ </row>
+
+ <row>
+ <entry>2.1.6-RELEASE</entry>
+ <entry>199612</entry>
+ </row>
+
+ <row>
+ <entry>2.1.7-RELEASE</entry>
+ <entry>199612</entry>
+ </row>
+
+ <row>
+ <entry>2.2-RELEASE</entry>
+ <entry>220000</entry>
+ </row>
+
+ <row>
+ <entry>2.2.1-RELEASE</entry>
+ <entry>220000 (pas de changement)</entry>
+ </row>
+
+ <row>
+ <entry>2.2-STABLE after 2.2.1-RELEASE</entry>
+ <entry>220000 (pas de changement)</entry>
+ </row>
+
+ <row>
+ <entry>2.2-STABLE apr&egrave;s introduction de
+ texinfo-3.9</entry>
+ <entry>221001</entry>
+ </row>
+
+ <row>
+ <entry>2.2-STABLE apr&egrave;s introduction de top</entry>
+ <entry>221002</entry>
+ </row>
+
+ <row>
+ <entry>2.2.2-RELEASE</entry>
+ <entry>222000</entry>
+ </row>
+
+ <row>
+ <entry>2.2-STABLE apr&egrave;s 2.2.2-RELEASE</entry>
+ <entry>222001</entry>
+ </row>
+
+ <row>
+ <entry>2.2.5-RELEASE</entry>
+ <entry>225000</entry>
+ </row>
+
+ <row>
+ <entry>2.2-STABLE apr&egrave;s 2.2.5-RELEASE</entry>
+ <entry>225001</entry>
+ </row>
+
+ <row>
+ <entry>2.2-STABLE apr&egrave;s fusion avec
+ ldconfig -R</entry>
+ <entry>225002</entry>
+ </row>
+
+ <row>
+ <entry>2.2.6-RELEASE</entry>
+ <entry>226000</entry>
+ </row>
+
+ <row>
+ <entry>2.2.7-RELEASE</entry>
+ <entry>227000</entry>
+ </row>
+
+ <row>
+ <entry>2.2-STABLE apr&egrave;s 2.2.7-RELEASE</entry>
+ <entry>227001</entry>
+ </row>
+
+ <row>
+ <entry>2.2-STABLE apr&egrave;s modification de
+ <citerefentry><refentrytitle>semctl</refentrytitle>
+ <manvolnum>2</manvolnum></citerefentry></entry>
+ <entry>227002</entry>
+ </row>
+
+ <row>
+ <entry>2.2.8-RELEASE</entry>
+ <entry>228000</entry>
+ </row>
+
+ <row>
+ <entry>2.2-STABLE apr&egrave;s 2.2.8-RELEASE</entry>
+ <entry>228001</entry>
+ </row>
+
+ <row>
+ <entry>3.0-CURRENT avant modification de
+ <citerefentry><refentrytitle>mount</refentrytitle>
+ <manvolnum>2</manvolnum></citerefentry></entry>
+ <entry>300000</entry>
+ </row>
+
+ <row>
+ <entry>3.0-CURRENT apr&egrave;s modification de
+ <citerefentry><refentrytitle>mount</refentrytitle>
+ <manvolnum>2</manvolnum></citerefentry> change</entry>
+ <entry>300002</entry>
+ </row>
+
+ <row>
+ <entry>3.0-CURRENT apr&egrave;s modification des
+ arguments de ioctl</entry>
+ <entry>300003</entry>
+ </row>
+
+ <row>
+ <entry>3.0-CURRENT apr&egrave;s conversions au format
+ ELF</entry>
+ <entry>300004</entry>
+ </row>
+
+ <row>
+ <entry>3.0-RELEASE</entry>
+ <entry>300005</entry>
+ </row>
+
+ <row>
+ <entry>3.0-CURRENT apr&egrave;s 3.0-RELEASE</entry>
+ <entry>300006</entry>
+ </row>
+
+ <row>
+ <entry>3.0-STABLE apr&egrave;s introduction de la
+ branche 4.x</entry>
+ <entry>300007</entry>
+ </row>
+
+ <row>
+ <entry>3.1-RELEASE</entry>
+ <entry>310000</entry>
+ </row>
+
+ <row>
+ <entry>3.1-STABLE apr&egrave;s 3.1-RELEASE</entry>
+ <entry>310001</entry>
+ </row>
+
+ <row>
+ <entry>4.0-CURRENT apr&egrave;s introduction de la
+ branche 4.x</entry>
+ <entry>400000</entry>
+ </row>
+
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </listitem>
+ </itemizedlist>
+
+ <note>
+ <para>Remarquz que 2.2-stable s'identifie parfois elle-m&ecirc;me
+ comme &ldquo;2.2.5-stable&rdquo; apr&egrave;s la 2.2.5-release. La
+ cl&eacute; &eacute;tait autrefois l'ann&eacute;e suivie du mois,
+ mais nous avons d&eacute;cid&eacute; d'en changer pour un
+ syst&egrave;me plus explicite constitu&eacute; des num&eacute;ros de
+ versions majeure et mineure &agrave; partir de la 2.2. Cela parce
+ que le d&eacute;veloppement parall&egrave;le sur plusieurs
+ branches rendait impossible le classement des versions simplement
+ par leur date effective de livraison. Si vous portez aujourd'hui
+ un logiciel, vous n'avez pas &agrave; vous soucier des anciennes
+ versions <literal>-current</literal>s; elles ne sont
+ mentionn&eacute;es ici qu'&agrave; titre de
+ r&eacute;f&eacute;rence.</para>
+ </note>
+
+ <para>Dans les centaines de logiciels qui ont &eacute;t&eacute;
+ port&eacute;s, il n'y a qu'un ou deux cas o&ugrave; il fallait
+ effectivement utiliser <literal>__FreeBSD__</literal>. Ce n'est pas
+ parce qu'un portage ant&eacute;rieur n'a pas &eacute;t&eacute; bien
+ fait et s'en est servi &agrave; tort qu'il faut
+ pers&eacute;verer.</para>
+ </sect3>
+
+ <sect3>
+ <title>Mettre quelque chose apr&egrave;s
+ <filename>bsd.port.mk</filename></title>
+
+ <para>Ne mettez rien apr&egrave;s la ligne <literal>.include
+ &lt;bsd.port.mk&gt;</literal>. Cela peut &ecirc;tre le plus souvent
+ &eacute;vit&eacute; en incluant
+ <filename>bsd.port.pre.mk</filename> quelque part au milieu de votre
+ <filename>Makefile</filename> et
+ <filename>bsd.port.post.mk</filename> &agrave; la fin.</para>
+
+ <note>
+ <para>Vous devez inclure soit le couple
+ <filename>pre.mk</filename>/<filename>post.mk</filename> soit
+ <filename>bsd.port.mk</filename> uniquement; ne m&eacute;langez
+ pas les deux.</para>
+ </note>
+
+ <para><filename>bsd.port.pre.mk</filename> ne d&eacute;finit que
+ quelques variables, qui peuvent &ecirc;tre test&eacute;es dans le
+ <filename>Makefile</filename>, <filename>bsd.port.post.mk</filename>
+ prend en charge tout le reste.</para>
+
+ <para>Voici quelques unes des variables importantes qui sont
+ d&eacute;finies dans <filename>bsd.port.pre.mk</filename> (ce n'est
+ pas une liste exhaustive, reportez-vous s'il vous pla&icirc;t &agrave;
+ <filename>bsd.port.mk</filename> pour avoir une liste
+ compl&egrave;te).</para>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Variable</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><makevar>ARCH</makevar></entry>
+ <entry>L'architecture sous le m&ecirc;me forme que le
+ r&eacute;sultat de <command>uname -m</command> (e.g.,
+ <literal>i386</literal>)</entry>
+ </row>
+
+ <row>
+ <entry><makevar>OPSYS</makevar></entry>
+ <entry>Le syst&egrave;me d'exploitation, sous le m&ecirc;me
+ forme que le r&eacute;sultat de la commande
+ <command>uname -s</command> (e.g.,
+ <literal>FreeBSD</literal>)</entry>
+ </row>
+
+ <row>
+ <entry><makevar>OSREL</makevar></entry>
+ <entry>La version du syst&egrave;me d'exploitation (e.g.,
+ <literal>2.1.5</literal> ou
+ <literal>2.2.7</literal>)</entry>
+ </row>
+
+ <row>
+ <entry><makevar>OSVERSION</makevar></entry>
+ <entry>La version sous forme num&eacute;rique du syst&egrave;me
+ d'exploitation, identique &agrave;
+ <link linkend="porting-versions"><literal>__FreeBSD_version</literal></link>.</entry>
+ </row>
+
+ <row>
+ <entry><makevar>PORTOBJFORMAT</makevar></entry>
+ <entry>Le format &ldquo;objet&rdquo; du syst&egrave;me
+ (<literal>aout</literal> or <literal>elf</literal>)</entry>
+ </row>
+
+ <row>
+ <entry><makevar>LOCALBASE</makevar></entry>
+ <entry>La racine de l'arborescence &ldquo;locale&rdquo; (e.g.,
+ <literal>/usr/local/</literal>)</entry>
+ </row>
+
+ <row>
+ <entry><makevar>X11BASE</makevar></entry>
+ <entry>La racine de l'arborescence &ldquo;X11&rdquo; (e.g.,
+ <literal>/usr/X11R6</literal>)</entry>
+ </row>
+
+ <row>
+ <entry><makevar>PREFIX</makevar></entry>
+ <entry>O&ugrave; le logiciel s'installe lui-m&ecirc;me
+ (Reportez-vous &agrave; la section
+ <link linkend="porting-prefix"><makevar>PREFIX</makevar></link>
+ pour plus d'informations).</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <note>
+ <para>Si vous avez besoin de d&eacute;finir les variables
+ <makevar>USE_IMAKE</makevar>, <makevar>USE_X_PREFIX</makevar> ou
+ <makevar>MASTERDIR</makevar>, faites-le avant d'inclure
+ <filename>bsd.port.pre.mk</filename>.</para>
+ </note>
+
+ <para>Voici quelques exemples de ce que vous pouvez mettre apr&egrave;s
+ <filename>bsd.port.pre.mk</filename>&nbsp;:</para>
+
+ <programlisting>
+# il est inutile de compiler lang/perl5 si perl5 fait d&eacute;j&agrave; partie du syst&egrave;me
+.if ${OSVERSION} > 300003
+BROKEN= perl fait partie du syst&egrave;me
+.endif
+
+# un seule num&eacute;ro de version de biblioth&egrave;que partag&eacute;e en ELF
+.if ${PORTOBJFORMAT} == "elf"
+TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}
+.else
+TCL_LIB_FILE= ${TCL_LIB}.${SHLIB_MAJOR}.${SHLIB_MINOR}
+.endif
+
+# le logiciel fait d&eacute;j&agrave; les liens pour ELF, mais pas pour a.out
+post-install:
+.if ${PORTOBJFORMAT} == "aout"
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so
+.endif
+ </programlisting>
+ </sect3>
+
+ <sect3>
+ <title>Installer des documentations suppl&eacute;mentaires</title>
+
+ <para>Si votre logiciel &agrave; porter est accompagn&eacute; d'autres
+ documentations que les habituelles pages de manuel ou
+ &ldquo;info&rdquo;, que vous trouvez utiles, installez-les dans
+ <filename><makevar>PREFIX</makevar>/share/doc</filename>.
+ Vous pouvez le faire de m&ecirc;me, comme expliqu&eacute; plus haut
+ avec la cible <maketarget>post-install</maketarget>.</para>
+
+ <para>Cr&eacute;ez un nouveau sous-r&eacute;pertoire pour votre logiciel
+ &agrave; porter. Le nom de ce sous-r&eacute;pertoire devrait faire
+ r&eacute;f&eacute;rence &agrave; son contenu. Cela signifie la plupart
+ du temps que ce sera le <makevar>PKGNAME</makevar> sans le
+ num&eacute;ro de version. Si vous pensez toutefois que l'utilisateur
+ voudra peut-&ecirc;tre installer diff&eacute;rentes versions du
+ logiciel, utilisez alors le <makevar>PKGNAME</makevar> complet.</para>
+
+ <para>Param&eacute;trez l'installation en utilisant la variable
+ <makevar>NOPORTDOCS</makevar> pour que les utilisateurs puissent ne
+ pas installer ces documentations, en se servant de
+ <filename>/etc/make.conf</filename>, s'ils le souhaitent, comme
+ suit&nbsp;:</para>
+
+ <programlisting>
+post-install:
+.if !defined(NOPORTDOCS)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${MKDIR}${PREFIX}/share/doc/xv
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${PREFIX}/share/doc/xv
+.endif
+ </programlisting>
+
+ <para>N'oubliez pas de les ajouter aussi &agrave;
+ <filename>pkg/PLIST</filename>&nbsp;! (Ne vous souciez pas ici de
+ <makevar>NOPORTDOCS</makevar>; il n'y a aujourd'hui aucun moyen pour
+ que les proc&eacute;dures d'installation des logiciels
+ pr&eacute;compil&eacute;s lisent les variables de
+ <filename>/etc/make.conf</filename>.)</para>
+
+ <para>Vous pouvez aussi vous servir du fichier
+ <filename>pkg/MESSAGE</filename> pour afficher des messages &agrave;
+ l'installation. Reportez-vous &agrave; la section sur l'utilisation
+ de
+ <link linkend="porting-message"><filename>pkg/MESSAGE</filename></link>
+ pour plus d'informations.</para>
+
+ <note>
+ <para>Il n'y a pas besoin d'ajouter <filename>MESSAGE</filename>
+ &agrave; <filename>pkg/PLIST</filename>.</para>
+ </note>
+ </sect3>
+
+ <sect3>
+ <title><makevar>DIST_SUBDIR</makevar></title>
+
+ <para>Evitez que votre logiciel n'encombre
+ <filename>/usr/ports/distfiles</filename>. S'il doit rapatrier de
+ nombreux fichiers ou comporte un fichier dont le nom est
+ d&eacute;j&agrave; utilis&eacute; par un autre logiciel (e.g.,
+ <filename>Makefile</filename>), donnez &agrave;
+ <makevar>DIST_SUBDIR</makevar> le nom du logiciel
+ (<makevar>PKGNAME</makevar> sans le num&eacute;ro de version devrait
+ faire l'affaire). Cela modifiera <makevar>DISTDIR</makevar> de
+ <filename>/usr/ports/distfiles</filename> par d&eacute;faut, en
+ <filename>/usr/ports/distfiles/<makevar>DIST_SUBDIR</makevar></filename>
+ et mettra effectivement tout ce dont a besoin votre logiciel &agrave;
+ porter dans ce sous-r&eacute;pertoire. </para>
+
+ <para>Le sous-r&eacute;pertoire du m&ecirc;me nom sur le site principal
+ de secours <filename>ftp.freebsd.org</filename> sera aussi
+ consult&eacute; (Positionner explicitement <makevar>DISTDIR</makevar>
+ dans votre <makevar>Makefile</makevar> n'aboutira pas au m&ecirc;me
+ r&eacute;sultat, utilisez s'il vous pla&icirc;t
+ <makevar>DIST_SUBDIR</makevar>.)</para>
+
+ <note>
+ <para>Cela n'a pas d'effet sur les <makevar>MASTER_SITES</makevar> que
+ vous d&eacute;finissez dans votre
+ <filename>Makefile</filename>.</para>
+ </note>
+ </sect3>
+
+ <sect3>
+ <title>Informations sur le paquetage</title>
+
+ <para>Ne mettez pas les informations sur le paquetage, i.e.
+ <filename>COMMENT</filename>, <filename>DESCR</filename> et
+ <filename>PLIST</filename> dans <filename>pkg</filename>.</para>
+
+ <note>
+ <para>Notez bien que ces fichiers ne sont plus utilis&eacute;s
+ uniquement pour la version pr&eacute;compil&eacute;e et sont
+ maintenant <emphasis>indispensables</emphasis>, m&ecirc;me si la
+ variable <makevar>NO_PACKAGE</makevar> est d&eacute;finie.</para>
+ </note>
+ </sect3>
+
+ <sect3>
+ <title>Cha&icirc;nes RCS</title>
+
+ <para>Ne mettez pas les cha&icirc;nes RCS dans les fichiers de mise
+ &agrave; niveau&nbsp;-&nbsp;<foreignphrase>patches</foreignphrase>.
+ CVS les modifiera quand nous mettrons les fichiers dans l'arborescence
+ des logiciels port&eacute;s et de nouveau lorsque nous les
+ extrairons ensuite et les mises &agrave; jour &eacute;chouerons. Les
+ cha&icirc;nes RCS sont encadr&eacute;es par des caract&egrave;res
+ &ldquo;dollar&rdquo; (<literal>&#36;</literal>), et commencent
+ typiquement par <literal>&#36;Id</literal> ou
+ <literal>&#36;RCS</literal>.</para>
+ </sect3>
+
+ <sect3>
+ <title>&ldquo;diff&rdquo; r&eacute;cursifs</title>
+
+ <para>Il est bien d'utiliser la r&eacute;cursivit&eacute;
+ (<option>-r</option>) avec <command>diff</command> pour
+ g&eacute;n&eacute;rer les fichiers de mise &agrave; jour, mais
+ examinez s'il vous pla&icirc;t le r&eacute;sultat pour vous assurer
+ qu'il n'est pas pollu&eacute; par trop de choses inutiles. En
+ particulier, les deltas entre fichiers dupliqu&eacute;s pour
+ sauvegarder la version originale, les <filename>Makefile</filename>s
+ alors que le logiciel &agrave; porter utilise
+ <command>Imake</command> ou GNU <command>configure</command>, etc.,
+ sont inutiles et doivent &ecirc;tre supprim&eacute;s. Si vous avez
+ d&ucirc; modifier <filename>configure.in</filename> et utiliser
+ <command>autoconf</command> pour mettre &agrave; jour
+ <command>configure</command>, n'incluez pas le delta pour
+ <command>configure</command> (il contient souvent plusieurs centaines
+ de lignes&nbsp;!)&nbsp;; d&eacute;finissez
+ <literal>USE_AUTOCONF=yes</literal> et donnez les deltas pour
+ <filename>configure.in</filename>.</para>
+
+ <para>Si vous avez par ailleurs eu &agrave; supprimer un fichier, vous
+ pouvez le faire avec la cible <maketarget>post-extract</maketarget>
+ plut&ocirc;t qu'en vous servant du fichier de mise &agrave; jour. Une
+ fois que le delta vous convient, d&eacute;coupez-le s'il vous
+ pla&icirc;t pour qu'il y ait un fichier de mise &agrave; jour pour
+ chaque fichier source.</para>
+ </sect3>
+
+ <sect3 id="porting-prefix">
+ <title><makevar>PREFIX</makevar></title>
+
+ <para>Faites en sorte que votre logiciel s'installe sous l'arborescence
+ <makevar>PREFIX</makevar>. (Cette variable prend la valeur de
+ <makevar>LOCALBASE</makevar> (par d&eacute;faut
+ <filename>/usr/local</filename>), &agrave; moins que
+ <makevar>USE_X_PREFIX</makevar> ou <makevar>USE_IMAKE</makevar> ne
+ soient d&eacute;finies, auquel cas ce sera <makevar>X11BASE</makevar>
+ (par d&eacute;faut <filename>/usr/X11R6</filename>).)</para>
+
+ <para>Le fait de ne coder nulle part en dur
+ <filename>/usr/local</filename> ou <filename>/usr/X11R6</filename>
+ dans le source rend le portage plus souple et facilite son adaptation
+ aux besoins d'autres sites. Pour les logiciels X qui se servent de
+ <command>imake</command>, c'est automatique; dans les autres cas, il
+ suffit souvent de faire en sorte que <filename>/usr/local</filename>
+ (ou <filename>/usr/X11R6</filename> pour les logiciels X qui
+ n'utilisent pas <command>imake</command>) soit remplac&eacute; par la
+ valeur de <makevar>PREFIX</makevar> dans les diff&eacute;rentes
+ proc&eacute;dures et <filename>Makefile</filename>s du logiciel,
+ puisque cette variable est toujours transmise &agrave; chaque
+ &eacute;tape du processus de compilation et d'installation.</para>
+
+ <para>N'utilisez pas <makevar>USE_X_PREFIX</makevar> &agrave; mois d'en
+ avoir vraiment besoin (i.e., l'&eacute;dition de liens utilise les
+ biblioth&egrave;ques X ou vous avez besoin de faire
+ r&eacute;f&eacute;rence &agrave; des fichiers de
+ <makevar>X11BASE</makevar>).</para>
+
+ <para>La variable <makevar>PREFIX</makevar> peut &ecirc;tre
+ red&eacute;finie dans votre <filename>Makefile</filename> ou dans
+ l'environnement de l'utilisateur. Il est n&eacute;anmoins fortement
+ d&eacute;conseill&eacute; de la d&eacute;finir explicitement dans les
+ <filename>Makefile</filename>s de logiciels.</para>
+
+ <para>Utilisez aussi les variables pr&eacute;c&eacute;dentes pour faire
+ r&eacute;f&eacute;rence &agrave; des programmes ou fichiers d'autres
+ logiciels port&eacute;s et non en donnant les chemins d'acc&egrave;s
+ complets. Par exemple, si votre logiciel a besoin que la
+ macro-instruction <literal>PAGER</literal> donne le chemin
+ d'acc&egrave;s &agrave; <command>less</command>, utilisez
+ l'indicateur&nbsp;:</para>
+
+ <programlisting>
+-DPAGER=\"&#36;{PREFIX}/bin/less\"
+ </programlisting>
+
+ <para>du compilateur, ou&nbsp;:</para>
+
+ <programlisting>
+-DPAGER=\"&#36;{LOCALBASE}/bin/less\"
+ </programlisting>
+
+ <para>si c'est un logiciel X, au lieu de
+ <literal>-DPAGER=\"/usr/local/bin/less\"</literal>. Cela aura plus de
+ chances de marcher si votre administrateur syst&egrave;me a
+ d&eacute;plac&eacute; toute l'arborescence
+ <filename>/usr/local</filename> ailleurs.</para>
+ </sect3>
+
+ <sect3>
+ <title>Sous-r&eacute;pertoires</title>
+
+ <para>Essayez de faire en sorte que le logiciel &agrave; porter installe
+ ses fichiers dans les bons sous-r&eacute;pertoires de
+ <makevar>PREFIX</makevar>. Certains logiciels regroupent tout dans un
+ sous-r&eacute;pertoire portant le nom du logiciel, ce qui est
+ incorrect. De nombreux logiciels mettent aussi tout, sauf les
+ binaires, fichiers d'en-t&ecirc;te et pages de manuel dans un
+ sous-r&eacute;pertoire de <filename>lib</filename>, ce qui ne fait pas
+ bon m&eacute;nage avec le paradigme BSD. La plupart des fichiers
+ doivent &ecirc;tre d&eacute;plac&eacute;s vers&nbsp;:
+ <filename>etc</filename> (fichiers d'initialisation et de
+ configuration), <filename>libexec</filename> (ex&eacute;cutables
+ d&eacute;marr&eacute;s par le syst&egrave;me),
+ <filename>sbin</filename> (ex&eacute;cutables pour les
+ super-utilisateurs/administrateurs), <filename>info</filename>
+ (documentations au format &ldquo;info&rdquo;) ou
+ <filename>share</filename> (fichiers ind&eacute;pendants de
+ l'architecture). Reportez-vous aux pages de manuel de &man.hier.7;
+ pour plus de d&eacute;tails au sujet des r&egrave;gles qui
+ r&eacute;gissent <filename>/usr</filename>, la plus grande partie
+ s'applique aussi &agrave; <filename>/usr/local</filename>. Les
+ logiciels en rapport avec les &ldquo;news&rdquo; USENET font
+ exception. Ils peuvent se servir de
+ <filename><makevar>PREFIX</makevar>/news</filename> pour y mettre
+ leurs fichiers.</para>
+ </sect3>
+
+ <sect3 id="porting-cleaning">
+ <title>Supprimer les r&eacute;pertoires vides</title>
+
+ <para>Faites en sorte que le logiciel fasse le m&eacute;nage lors de sa
+ d&eacute;sinstallation. Cela se fait habituellement en ajoutant des
+ lignes <literal>@dirrm</literal> pour tous les r&eacute;pertoires
+ sp&eacute;cifiquement cr&eacute;&eacute;s par le logiciel. Il faut
+ supprimer les sous-r&eacute;pertoires avant de supprimer leurs
+ r&eacute;pertoires parents.</para>
+
+ <programlisting>
+&nbsp;:
+lib/X11/oneko/pixmaps/cat.xpm
+lib/X11/oneko/sounds/cat.au
+&nbsp;:
+@dirrm lib/X11/oneko/pixmals
+@dirrm lib/X11/oneko/sounds
+@dirrm lib/X11/oneko</programlisting>
+
+ <para>Il arrive parfois que <literal>@dirrm</literal> &eacute;mette un
+ message d'erreur parce que d'autres logiciels partagent le m&ecirc;me
+ sous-r&eacute;pertoire. Vous pouvez invoquer
+ <command>rmdir</command> depuis <literal>@unexec</literal> pour ne
+ supprimer que les sous-r&eacute;pertoires vides sans messages
+ d'avertissement.</para>
+
+ <programlisting>
+@unexec rmdir %D/share/doc/gimp 2>/dev/null || true</programlisting>
+
+ <para>Il n'y aura alors ni message d'erreur, ni fin anormale de
+ <command>pkg_delete</command> m&ecirc;me si
+ <filename><makevar>PREFIX</makevar>/share/doc/gimp</filename> n'est
+ pas vide parce que d'autres logiciels y ont install&eacute; des
+ fichiers.</para>
+ </sect3>
+
+ <sect3>
+ <title><literal>UID</literal>s</title>
+
+ <para>Si votre logiciel a besoin qu'un utilisateur particulier existe
+ sur le syst&egrave;me, appelez <command>pw</command> dans la
+ proc&eacute;dure <filename>pkg/INSTALL</filename> pour le cr&eacute;er
+ automatiquement. Voyez <filename>net/cvsup-mirror</filename> pour
+ avoir un exemple.</para>
+
+ <para>Si votre logiciel &agrave; porter a besoin du m&ecirc;me
+ <literal>ID</literal>dentifiant d'utilisateur/groupe qui a servi
+ &agrave; sa compilation quand on installe le paquetage binaire, vous
+ devez choisir un <literal>UID</literal> libre entre 50 et 99 et
+ l'enregistrer ci-dessous. Voyez <filename>japanese/Wnn</filename> pour
+ avoir un exemple.</para>
+
+ <para>Veillez &agrave; ne pas utiliser un <literal>UID</literal>
+ d&eacute;j&agrave; employ&eacute; par le syst&egrave;me ou d'autres
+ logiciels. Voici la liste des <literal>UID</literal>s entre 50 et
+ 99.</para>
+
+ <programlisting>
+majordom:*:54:54:Majordomo Pseudo User:/usr/local/majordomo:/nonexistent
+cyrus:*:60:60:the cyrus mail server:/nonexistent:/nonexistent
+gnats:*:61:1:GNATS database owner:/usr/local/share/gnats/gnats-db:/bin/sh
+uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
+xten:*:67:67:X-10 daemon:/usr/local/xten:/nonexistent
+pop:*:68:6:Post Office Owner (popper):/nonexistent:/nonexistent
+wnn:*:69:7:Wnn:/nonexistent:/nonexistent
+ifmail:*:70:66:Ifmail user:/nonexistent:/nonexistent
+pgsql:*:70:70:PostgreSQL pseudo-user:/usr/local/pgsql:/bin/sh
+ircd:*:72:72:IRCd hybrid:/nonexistent:/nonexistent
+alias:*:81:81:QMail user:/var/qmail/alias:/nonexistent
+qmaill:*:83:81:QMail user:/var/qmail:/nonexistent
+qmaild:*:82:81:QMail user:/var/qmail:/nonexistent
+qmailq:*:85:82:QMail user:/var/qmail:/nonexistent
+qmails:*:87:82:QMail user:/var/qmail:/nonexistent
+qmailp:*:84:81:QMail user:/var/qmail:/nonexistent
+qmailr:*:86:82:QMail user:/var/qmail:/nonexistent
+msql:*:87:87:mSQL-2 pseudo-user:/var/db/msqldb:/bin/sh</programlisting>
+
+ <para>Signalez s'il vous pla&icirc;t que vous r&eacute;servez un
+ <literal>UID</literal> ou <literal>GID</literal> dans cette plage,
+ quand vous soumettez un logiciel (ou une mise &agrave; niveau). Cela
+ nous permet de tenir &agrave; jour la liste des <literal>ID</literal>s
+ r&eacute;serv&eacute;s.</para>
+ </sect3>
+
+ <sect3>
+ <title>Faites les choses rationnellement</title>
+
+ <para>Le <filename>Makefile</filename> doit faire des choses simples et
+ logiques. Si vous pouvez le raccourcir et le rendre plus lisible,
+ faites-le. Utilisez par exemple un instruction
+ <literal>.if</literal> de <command>make</command>, au lieu d'un
+ <literal>if</literal> de l'interpr&eacute;teur de commandes, ne
+ red&eacute;finissez pas <maketarget>do-extract</maketarget> si vous
+ pouvez utiliser <makevar>EXTRACT*</makevar> &agrave; la place et
+ servez-vous de <makevar>GNU_CONFIGURE</makevar> au lieu de
+ <literal>CONFIGURE_ARGS += --prefix=&dollar;{PREFIX}</literal>.</para>
+ </sect3>
+
+ <sect3>
+ <title>Prennez en compte <makevar>CFLAGS</makevar></title>
+
+ <para>Le logiciel &agrave; porter doit prendre en consid&eacute;ration
+ <makevar>CFLAGS</makevar>. Si ce n'est pas le cas, ajoutez s'il vous
+ pla&icirc;t <literal>NO_PACKAGE=ignores cflags</literal> au
+ <filename>Makefile</filename>.</para>
+ </sect3>
+
+ <sect3>
+ <title>Fichiers de Configuration</title>
+
+ <para>Si votre logiciel a besoin de fichiers de configuration dans
+ <filename><makevar>PREFIX</makevar>/etc</filename>, ne les installez
+ <emphasis>pas</emphasis> et ne les listez pas dans
+ <filename>pkg/PLIST</filename>. <command>pkg_delete</command>
+ supprimerait alors des fichiers renseign&eacute;s avec soin par les
+ utilisateurs et une r&eacute;installation les
+ &eacute;craserait.</para>
+
+ <para>Au lieu de cela, installez des fichiers d'exemple avec un suffixe
+ (<filename><replaceable>nom_de_fichier</replaceable>.sample</filename>
+ fonctionnera bien) et affichez un
+ <link linkend="porting-message">message</link> pour signaler &agrave;
+ l'utilisateur qu'il devra copier et modifier le fichier pour que le
+ logiciel soit utilisable.</para>
+ </sect3>
+
+ <sect3>
+ <title>Portlint</title>
+
+ <para>Contr&ocirc;lez votre travail avec
+ <link linkend="porting-portlint"><command>portlint</command></link>
+ avant de le soumettre ou de le mettre dans l'arborescence des
+ sources.</para>
+ </sect3>
+
+ <sect3>
+ <title>Retours d'information</title>
+
+ <para>Envoyez vos modifications et mises &agrave; niveau &agrave;
+ l'auteur ou au responsable de la maintenance pour qu'il les inclue
+ dans la prochaine version du code. Cela ne fera que vous faciliter le
+ travail pour la prochaine fois.</para>
+ </sect3>
+
+ <sect3>
+ <title>Divers</title>
+
+ <para>Les fichiers <filename>pkg/DESCR</filename>,
+ <filename>pkg/COMMENT</filename> et <filename>pkg/PLIST</filename>
+ doivent chacun &ecirc;tre rev&eacute;rifi&eacute;s. Si vous passez un
+ logiciel en revue et pensez qu'ils peuvent &ecirc;tre mieux
+ &eacute;tre mieux &eacute;crits, faites-le.</para>
+
+ <para>Ne mettez pas de nouvelles copies de la Licence Publique
+ G&eacute;n&eacute;rale GNU&nbsp;-&nbsp;GPL&nbsp;-&nbsp;sur notre
+ syst&egrave;me, s'il vous pla&icirc;t.</para>
+
+ <para>Notez s'il vous pla&icirc;t soigneusement toutes les
+ consid&eacute;rations d'ordre l&eacute;gal. Ne nous laissez pas
+ distribuer ill&eacute;galement du logiciel&nbsp;!</para>
+ </sect3>
+
+ <sect3>
+ <title>Si vous &ecirc;tes bloqu&eacute;&hellip;</title>
+
+ <para>Consultez les exemples existants et
+ <filename>bsd.port.mk</filename> avant de nous poser des
+ questions&nbsp;! <!-- smiley --><emphasis>;)</emphasis></para>
+
+ <para>Posez-nous des questions si vous avez des probl&egrave;mes&nbsp;!
+ Ne vous cognez pas la t&ecirc;te contre les murs&nbsp;!
+ <!-- smiley --><emphasis>:)</emphasis></para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="porting-samplem">
+ <title>Un exemple de <filename>Makefile</filename></title>
+
+ <para>Voici un exemple de <filename>Makefile</filename> dont vous pouvez
+ vous servir pour porter un nouveau logiciel. Veillez &agrave; supprimer
+ les commentaires exc&eacute;dentaires (ceux qui sont entre
+ crochets)&nbsp;!</para>
+
+ <para>Il est souhaitable que vous respectiez ce format (ordre des
+ variables, espacements entre sections, etc.). Il est con&ccedil;u pour
+ qu'il soit facile de rep&eacute;rer les informations les plus
+ importantes. Nous vous recommandons d'utiliser
+ <link linkend="porting-portlint">portlint</link> pour v&eacute;rifier le
+ <filename>Makefile</filename>.</para>
+
+ <programlisting>
+[l'en-t&ecirc;te...pour qu'il nous soit plus facile d'identifier les logiciels.]
+# New ports collection makefile for: xdvi
+[l'en-t&ecirc;te de version obligatoire doit &ecirc;tre mise &agrave; jour
+&nbsp;en m&ecirc;me temps que le logiciel.]
+# Version required: pl18 [des choses du genre "1.5alpha" conviennent aussi]
+[C'est la date de cr&eacute;ation de la premi&egrave;re version de ce Makefile.
+&nbsp;Ne la modifiez jamais lors d'une mise &agrave; jour.]
+# Date created: 26 May 1995
+[C'est la personne qui a fait le premier portage sous FreeBSD, en particulier,
+&nbsp;celle qui a &eacute;crit la premi&egrave;re version de ce Makefile. Rappelez-vous
+&nbsp;que vous ne devez plus modifier ce nom par la suite.]
+# Whom: Satoshi Asami &lt;asami@FreeBSD.ORG&gt;
+#
+# &#36;Id&#36;
+[ ^^^^ Ce sera automatiquement remplac&eacute; par la cha&icirc;ne RCS par CVS
+&nbsp;ensuite, lors de l'int&eacute;gration &agrave; nos archives.]
+#
+
+[Cette section d&eacute;crit le logiciel et le site d'origine - DISTNAME
+&nbsp;viens toujours en premier, suivi de PKGNAME (si n&eacute;cessaire), CATEGORIES,
+&nbsp;puis de MASTER_SITES, qui peut &ecirc;tre suivi de MASTER_SITE_SUBDIR.
+&nbsp;EXTRACT_SUFX ou DISTFILES peuvent &eacute;ventuellement &ecirc;tre pr&eacute;cis&eacute;s ensuite.]
+DISTNAME= xdvi
+PKGNAME= xdvi-pl18
+CATEGORIES= print
+[N'oubliez pas le &ldquo;slash&rdquo; ("/") &agrave; la fin&nbsp;!
+&nbsp;si vous ne vous servez pas des macros-instructions MASTER_SITE_*]
+MASTER_SITES= ${MASTER_SITE_XCONTRIB}
+MASTER_SITE_SUBDIR= applications
+[A d&eacute;finir si le source n'est pas au format ".tar.gz"]
+EXTRACT_SUFX= .tar.Z
+
+[Section pour les mises &agrave; jour de la distribution -- peut &ecirc;tre vide]
+PATCH_SITES= ftp://ftp.sra.co.jp/pub/X11/japanese/
+PATCHFILES= xdvi-18.patch1.gz xdvi-18.patch2.gz
+
+[Responsable de la maintenance; *obligatoire*&nbsp;! C'est la personne
+&nbsp;(de pr&eacute;f&eacute;rence avec les droits d'&eacute;criture sur l'arborescence
+&nbsp;des sources) que les utilisateurs peuvent contacter si questions ou rapports
+&nbsp;d'anomalie - ce doit &ecirc;tre la personne qui a fait le portage ou quelqu'un
+&nbsp;qui peut lui transmettre les questions dans un d&eacute;lai raisonnable. Si vous
+&nbsp;ne voulez vraimant pas que votre adresse apparaisse ici, mettez
+&nbsp;"ports@FreeBSD.ORG".]
+MAINTAINER= asami@FreeBSD.ORG
+
+[D&eacute;pendances -- peuvent &ecirc;tre vides]
+RUN_DEPENDS= gs:${PORTSDIR}/print/ghostscript
+LIB_DEPENDS= Xpm.5:${PORTSDIR}/graphics/xpm
+
+[Cette section est r&eacute;serv&eacute;e aux autres variables bsd.port.mk
+&nbsp;qui n'ont pas leur place dans les sections pr&eacute;c&eacute;dentes]
+[S'il y a des questions lors de la configuration, de la compilation,
+&nbsp;de l'installation ...]
+IS_INTERACTIVE= yes
+[Si l'extraction se fait dans un autre r&eacute;pertoire que ${DISTNAME}...]
+WRKSRC= ${WRKDIR}/xdvi-new
+[Si les mises &agrave; jour de la distribution ne sont pas relatives &agrave; ${WRKSRC},
+&nbsp;vous devrez peut-&ecirc;tre utiliser cette variable]
+PATCH_DIST_STRIP= -p1
+[S'il faut ex&eacute;cuter une proc&eacute;dure "configure" g&eacute;n&eacute;r&eacute;e par GNU autoconf]
+GNU_CONFIGURE= yes
+[S'il faut compiler avec GNU make, et non /usr/bin/make, ...]
+USE_GMAKE= yes
+[Si c'est une application X et qu'il faut utiliser "xmkmf -a" ...]
+USE_IMAKE= yes
+[et cetera.]
+
+[Variables non-standard pour les r&egrave;gles qui les suivent]
+MY_FAVORITE_RESPONSE= "oui, pour s&ucirc;r"
+
+[Les r&egrave;gles particuli&egrave;res, dans l'ordre o&ugrave; faut les appeler]
+pre-fetch:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ouais, il faut r&eacute;cup&eacute;rer quelque chose
+
+post-patch:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;G&eacute;nial, j'ai quelque chose &agrave; faire apr&egrave;s la mise &agrave; jour
+
+pre-install:
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;et d'autres choses encore apr&egrave;s l'installation
+
+[et l'&eacute;pilogue]
+.include &lt;bsd.port.mk&gt;</programlisting>
+ </sect2>
+
+ <sect2 id="porting-pkgname">
+ <title>Noms des paquetages</title>
+
+ <para>Voici les conventions &agrave; respecter pour les noms des
+ paquetages. Cela pour qu'il soit facile de parcourir notre
+ r&eacute;pertoire des paquetages, parce qu'il y en a d&eacute;j&agrave;
+ beaucoup et que cela va rebuter les utilisateurs s'ils s'y usent les
+ yeux&nbsp;!</para>
+
+ <para>Le nom du paquetage doit &ecirc;tre de la forme
+ <filename><replaceable>langue-</replaceable>nom<replaceable>-particularit&eacute;s.de.compilation</replaceable><replaceable>-num&eacute;ros.de.version</replaceable></filename>.</para>
+
+ <para>Si votre <makevar>DISTNAME</makevar> n'est pas de ce type,
+ d&eacute;finissez <makevar>PKGNAME</makevar> en respectant ce
+ format.</para>
+
+ <orderedlist>
+ <listitem>
+ <para>FreeBSD essayer d'int&eacute;grer les supports des langues
+ maternelles de ses utilisateurs. Le pr&eacute;fixe
+ <replaceable>langue-</replaceable> doit &ecirc;tre le sigle de deux
+ lettres d&eacute;fini par la convention ISO-639, si le logiciel
+ est propre &agrave; une langue particuli&egrave;re. Par exemple,
+ <literal>ja</literal> pour le Japonais, <literal>ru</literal> pour
+ le Russe, <literal>vi</literal> pour le Vietnamien,
+ <literal>zh</literal> pour le Chinois, <literal>ko</literal> pour le
+ Cor&eacute;en et <literal>de</literal> pour l'Allemand.</para>
+ </listitem>
+
+ <listitem>
+ <para>Le <filename>nom</filename> doit toujours &ecirc;tre en
+ minuscules, sauf pour les paquetages particuli&egrave;rement
+ importants (qui comportent de nombreux programmes). XFree86 ou
+ ImageMagick par exemple appartiennent &agrave; cette
+ cat&eacute;gorie. Sinon, mettez le nom (ou au moins la
+ premi&egrave;re lettre) en minuscules. Si les majuscules ont un sens
+ dans le nom (par exemple pour les noms d'une seule lettre comme
+ <literal>R</literal> ou <literal>V</literal>), vous pouvez utiliser
+ des majuscules si vous le souhaitez. Il est de tradition d'appeler
+ les modules Perl 5 en les faisant pr&eacute;c&eacute;der de
+ <literal>p5-</literal> et en rempla&ccedil;ant les deux deux-points
+ par un tiret; par exemple, le module <literal>Data::Dumper</literal>
+ devient <literal>p5-Data-Dumper</literal>. S'il y a des
+ num&eacute;ros, tirets ou soulign&eacute;s dans le nom, vous pouvez
+ aussi les conserver (par exemple,
+ <literal>kinput2</literal>).</para>
+ </listitem>
+
+ <listitem>
+ <para>Si le logiciel peut-&ecirc;tre compil&eacute; avec
+ diff&eacute;rentes <link linkend="porting-masterdir">valeurs par
+ d&eacute;faut cod&eacute;es en dur</link> (ce qui fait d'habitude
+ partie du nom de r&eacute;pertoire d'une famille de logiciels), les
+ <replaceable>-particularit&eacute;s.de.compilation</replaceable>
+ doivent indiquer quelles sont ces valeurs (le tiret n'est pas
+ obligatoire). On peut donner en exemple la r&eacute;solution des
+ polices ou le format de papier.</para>
+ </listitem>
+
+ <listitem>
+ <para>La version doit &ecirc;tre une suite d'entiers
+ s&eacute;par&eacute;s par des points ou un unique caract&egrave;re
+ alphab&eacute;tique. La seule exception concerne la cha&icirc;ne
+ <literal>pl</literal>
+ (&ldquo;<foreignphrase>patchlevel</foreignphrase>&rdquo;&nbsp;-&nbsp;niveau
+ de mise &agrave; jour), qui ne peut &ecirc;tre utilis&eacute;e que
+ lorsque qu'il n'y a pas de num&eacute;ros de version majeure et
+ mineure du logiciel.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>Voici quelques exemples (r&eacute;els) de la mani&egrave;re de
+ convertir un <makevar>DISTNAME</makevar> en un
+ <makevar>PKGNAME</makevar>&nbsp;:</para>
+
+ <informaltable frame="none">
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>Nom de la Distribution</entry>
+ <entry>Nom du Paquetage</entry>
+ <entry>Raison</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>mule-2.2.2.</entry>
+ <entry>mule-2.2.2</entry>
+ <entry>Pas de changement n&eacute;cessaire</entry>
+ </row>
+
+ <row>
+ <entry>XFree86-3.1.2</entry>
+ <entry>XFree86-3.1.2</entry>
+ <entry>Pas de changement n&eacute;cessaire</entry>
+ </row>
+
+ <row>
+ <entry>EmiClock-1.0.2</entry>
+ <entry>emiclock-1.0.2</entry>
+ <entry>Pas de majuscules pour les programmes individuels</entry>
+ </row>
+
+ <row>
+ <entry>gmod1.4</entry>
+ <entry>gmod-1.4</entry>
+ <entry>Il faut un tiret avant les num&eacute;ros de
+ version</entry>
+ </row>
+
+ <row>
+ <entry>xmris.4.0.2</entry>
+ <entry>xmris-4.0.2</entry>
+ <entry>Il faut un tiret avant les num&eacute;ros de
+ version</entry>
+ </row>
+
+ <row>
+ <entry>rdist-1.3alpha</entry>
+ <entry>rdist-1.3a</entry>
+ <entry>Les cha&icirc;nes de caract&egrave;res comme
+ <literal>alpha</literal> ne sont pas autoris&eacute;es</entry>
+ </row>
+
+ <row>
+ <entry>es-0.9-beta1</entry>
+ <entry>es-0.9b1</entry>
+ <entry>Les cha&icirc;nes de caract&egrave;res comme
+ <literal>beta</literal> ne sont pas autoris&eacute;es</entry>
+ </row>
+
+ <row>
+ <entry>v3.3beta021.src</entry>
+ <entry>tiff-3.3</entry>
+ <entry>C'&eacute;tait quoi exactement&nbsp;?</entry>
+ </row>
+
+ <row>
+ <entry>tvtwm</entry>
+ <entry>tvtwm-pl11</entry>
+ <entry>Il doit toujours y avoir une version</entry>
+ </row>
+
+ <row>
+ <entry>piewm</entry>
+ <entry>piewm-1.0</entry>
+ <entry>Il doit toujours y avoir une version</entry>
+ </row>
+
+ <row>
+ <entry>xvgr-2.10pl1</entry>
+ <entry>xvgr-2.10.1</entry>
+ <entry><literal>pl</literal> n'est autoris&eacute; que lorsqu'il
+ n'y a pas de num&eacute;ro de version majeure/mineure</entry>
+ </row>
+
+ <row>
+ <entry>gawk-2.15.6</entry>
+ <entry>ja-gawk-2.15.6</entry>
+ <entry>Version Japonaise</entry>
+ </row>
+
+ <row>
+ <entry>psutils-1.13</entry>
+ <entry>psutils-letter-1.13</entry>
+ <entry>Taille de page en dur &agrave; la compilation</entry>
+ </row>
+
+ <row>
+ <entry>pkfonts</entry>
+ <entry>pkfonts300-1.0</entry>
+ <entry>Paquetage pour les polices 300dpi</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>S'il n'y a nulle part d'information sur la version et qu'il y a peu
+ de chances que l'auteur sorte une nouvelle version, prennez
+ <literal>1.0</literal> comme num&eacute;ro de version (comme pour piewm
+ ci-dessus). Sinon, posez la question &agrave; l'auteur ou servez-vous de
+ la date
+ (<literal><replaceable>aa</replaceable>.<replaceable>mm</replaceable>.<replaceable>jj</replaceable></literal>)
+ comme version.</para>
+ </sect2>
+
+ <sect2 id="porting-categories">
+ <title>Cat&eacute;gories</title>
+
+ <para>Comme vous le savez d&eacute;j&agrave;, les logiciels port&eacute;s
+ sont r&eacute;partis en diff&eacute;rentes cat&eacute;gories. Mais, il
+ est important, pour que cette classification fonctionne, que les
+ responsables des portages et les utilisateurs comprennent ce qu'est
+ chaque cat&eacute;gorie et comment nous choisissons la cat&eacute;gorie
+ dans laquelle nous classons un logiciel.</para>
+
+ <sect3>
+ <title>Liste actuelle des cat&eacute;gories</title>
+
+ <para>Voici tout d'abord la liste des cat&eacute;gories &agrave; ce
+ jour. Celles qui sont suivies d'une ast&eacute;risque
+ (<literal>*</literal>) sont des cat&eacute;gories
+ <emphasis>virtuelles</emphasis>&mdash;il n'y a pas de
+ sous-r&eacute;pertoires correspondant dans le catalogue des logiciels
+ port&eacute;s.</para>
+
+ <note>
+ <para>Pour les cat&eacute;gories r&eacute;elles, il y a une ligne de
+ description dans le fichier <filename>pkg/COMMENT</filename> du
+ sous-r&eacute;pertoire correspondant (e.g.,
+ <filename>archivers/pkg/COMMENT</filename>).</para>
+ </note>
+
+ <informaltable frame="none">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Cat&eacute;gorie</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><filename>afterstep*</filename></entry>
+ <entry>Logiciels pour le gestionnaire de fen&ecirc;tres
+ AfterStep</entry>
+ </row>
+
+ <row>
+ <entry><filename>archivers</filename></entry>
+ <entry>Outils d'archivage</entry>
+ </row>
+
+ <row>
+ <entry><filename>astro</filename></entry>
+ <entry>Logiciels d'astronomie</entry>
+ </row>
+
+ <row>
+ <entry><filename>audio</filename></entry>
+ <entry>Son</entry>
+ </row>
+
+ <row>
+ <entry><filename>benchmarks</filename></entry>
+ <entry>Outils de mesure de performances</entry>
+ </row>
+
+ <row>
+ <entry><filename>biology</filename></entry>
+ <entry>Logiciels en rapport avec la biologie</entry>
+ </row>
+
+ <row>
+ <entry><filename>cad</filename></entry>
+ <entry>Conception assist&eacute;e par ordinateur</entry>
+ </row>
+
+ <row>
+ <entry><filename>chinese</filename></entry>
+ <entry>Support de la langue Chinoise</entry>
+ </row>
+
+ <row>
+ <entry><filename>comms</filename></entry>
+ <entry>Logiciels de communication. Essentiellement des logiciels
+ qui dialoguent avec votre port s&eacute;rie</entry>
+ </row>
+
+ <row>
+ <entry><filename>converters</filename></entry>
+ <entry>Convertisseurs de codes de caract&eacute;res</entry>
+ </row>
+
+ <row>
+ <entry><filename>databases</filename></entry>
+ <entry>Bases de donn&eacute;es</entry>
+ </row>
+
+ <row>
+ <entry><filename>deskutils</filename></entry>
+ <entry>Ce que l'on avait sur son bureau avant l'invention des
+ ordinateurs</entry>
+ </row>
+
+ <row>
+ <entry><filename>devel</filename></entry>
+ <entry>Outils de d&eacute;veloppement. N'y mettez pas de
+ biblioth&egrave;ques simplement parce que ce sont des
+ biblioth&egrave;ques&mdash;&agrave; moins qu'elles n'aient
+ vraiment pas leur place ailleurs, elles ne doivent pas
+ &ecirc;tre dans cette cat&eacute;gorie</entry>
+ </row>
+
+ <row>
+ <entry><filename>editors</filename></entry>
+ <entry>Editeurs g&eacute;n&eacute;raux. Les &eacute;diteurs
+ sp&eacute;cialis&eacute;s vont dans la cat&eacute;gorie
+ correspondante (e.g., un &eacute;diteur de formules
+ math&eacute;matiques ira dans
+ <filename>math</filename>)</entry>
+ </row>
+
+ <row>
+ <entry><filename>elisp</filename></entry>
+ <entry>Logiciels Emacs-lisp</entry>
+ </row>
+
+ <row>
+ <entry><filename>emulators</filename></entry>
+ <entry>Emulateurs d'autres syst&egrave;mes d'exploitation. Les
+ &eacute;mulateurs de terminaux ne rentrent
+ <emphasis>pas</emphasis> dans cette
+ cat&eacute;gorie&mdash;ceux pour X vont dans
+ <filename>x11</filename> et les &eacute;mulateurs en mode
+ texte dans <filename>comms</filename> ou
+ <filename>misc</filename>, selon leur fonction exacte</entry>
+ </row>
+
+ <row>
+ <entry><filename>games</filename></entry>
+ <entry>Jeux</entry>
+ </row>
+
+ <row>
+ <entry><filename>german</filename></entry>
+ <entry>Support de la langue Allemande</entry>
+ </row>
+
+ <row>
+ <entry><filename>graphics</filename></entry>
+ <entry>Utilitaires graphiques</entry>
+ </row>
+
+ <row>
+ <entry><filename>japanese</filename></entry>
+ <entry>Support de la langue Japonaise</entry>
+ </row>
+
+ <row>
+ <entry><filename>kde*</filename></entry>
+ <entry>Logiciels qui constituent &ldquo;<foreignphrase>K Desktop
+ Environment</foreignphrase>&rdquo; (kde)</entry>
+ </row>
+
+ <row>
+ <entry><filename>korean</filename></entry>
+ <entry>Support de la langue Cor&eacute;enne</entry>
+ </row>
+
+ <row>
+ <entry><filename>lang</filename></entry>
+ <entry>Langages de programmation</entry>
+ </row>
+
+ <row>
+ <entry><filename>mail</filename></entry>
+ <entry>Logiciels de courrier &eacute;lectronique</entry>
+ </row>
+
+ <row>
+ <entry><filename>math</filename></entry>
+ <entry>Logiciels de calcul num&eacute;rique et autres outils
+ math&eacute;matiques</entry>
+ </row>
+
+ <row>
+ <entry><filename>mbone</filename></entry>
+ <entry>Applications MBone</entry>
+ </row>
+
+ <row>
+ <entry><filename>misc</filename></entry>
+ <entry>Utilitaires vari&eacute;s&mdash;essentiellement ceux qui
+ n'ont pas leur place ailleurs. C'est la seul cat&eacute;gorie
+ qui ne doit pas appara&icirc;tre en m&ecirc;me temps qu'une
+ autre cat&eacute;gorie non virtuelle. S'il y a
+ <literal>misc</literal> et autre chose dans votre ligne
+ <makevar>CATEGORIES</makevar>, cela signifie que vous pouvez
+ sans risque supprimer <literal>misc</literal> et mettre le
+ logiciel dans cet autre sous-r&eacute;pertoire</entry>
+ </row>
+
+ <row>
+ <entry><filename>net</filename></entry>
+ <entry>Outils r&eacute;seau divers</entry>
+ </row>
+
+ <row>
+ <entry><filename>news</filename></entry>
+ <entry>Logiciels pour les listes de discussion USENET</entry>
+ </row>
+
+ <row>
+ <entry><filename>offix*</filename></entry>
+ <entry>Logiciels de la suite OffiX</entry>
+ </row>
+
+ <row>
+ <entry><filename>palm</filename></entry>
+ <entry>Logiciels &agrave; utiliser avec la gamme 3Com
+ Palm(tm)</entry>
+ </row>
+
+ <row>
+ <entry><filename>perl5*</filename></entry>
+ <entry>Logiciels qui n&eacute;cessitent Perl version 5</entry>
+ </row>
+
+ <row>
+ <entry><filename>plan9*</filename></entry>
+ <entry>Programmes divers de Plan9.</entry>
+ </row>
+
+ <row>
+ <entry><filename>print</filename></entry>
+ <entry>Logiciels d'impression. Les logiciels de publication
+ (pr&eacute;visualiseurs, etc.) appartiennent aussi &agrave;
+ cette cat&eacute;gorie</entry>
+ </row>
+
+ <row>
+ <entry><filename>python*</filename></entry>
+ <entry>Logiciels &eacute;crits en Python</entry>
+ </row>
+
+ <row>
+ <entry><filename>russian</filename></entry>
+ <entry>Support de la langue Russe</entry>
+ </row>
+
+ <row>
+ <entry><filename>security</filename></entry>
+ <entry>Outils de s&eacute;curit&eacute;</entry>
+ </row>
+
+ <row>
+ <entry><filename>shells</filename></entry>
+ <entry>Interpr&eacute;teurs de commandes</entry>
+ </row>
+
+ <row>
+ <entry><filename>sysutils</filename></entry>
+ <entry>Utilitaires syst&egrave;me</entry>
+ </row>
+
+ <row>
+ <entry><filename>tcl75*</filename></entry>
+ <entry>Logiciels qui n&eacute;cessitent Tcl 7.5</entry>
+ </row>
+
+ <row>
+ <entry><filename>tcl76*</filename></entry>
+ <entry>Logiciels qui n&eacute;cessitent Tcl 7.6</entry>
+ </row>
+
+ <row>
+ <entry><filename>tcl80*</filename></entry>
+ <entry>Logiciels qui n&eacute;cessitent Tcl 8.0</entry>
+ </row>
+
+ <row>
+ <entry><filename>tcl81*</filename></entry>
+ <entry>Logiciels qui n&eacute;cessitent Tcl 8.1</entry>
+ </row>
+
+ <row>
+ <entry><filename>textproc</filename></entry>
+ <entry>Outils de traitement de texte, sauf les logiciels de
+ publication assist&eacute;e par ordinateur, qui vont dans
+ <filename>print/</filename></entry>
+ </row>
+
+ <row>
+ <entry><filename>tk41*</filename></entry>
+ <entry>Logiciels qui n&eacute;cessitent Tk 4.1</entry>
+ </row>
+
+ <row>
+ <entry><filename>tk42*</filename></entry>
+ <entry>Logiciels qui n&eacute;cessitent Tk 4.2</entry>
+ </row>
+
+ <row>
+ <entry><filename>tk80*</filename></entry>
+ <entry>Logiciels qui n&eacute;cessitent Tk 8.0</entry>
+ </row>
+
+ <row>
+ <entry><filename>tk81*</filename></entry>
+ <entry>Logiciels qui n&eacute;cessitent Tk 8.1</entry>
+ </row>
+
+ <row>
+ <entry><filename>vietnamese</filename></entry>
+ <entry>Support de la langue Vietnamienne</entry>
+ </row>
+
+ <row>
+ <entry><filename>windowmaker*</filename></entry>
+ <entry>Logiciels pour le gestionnaire de fen&ecirc;tres
+ WindowMaker</entry>
+ </row>
+
+ <row>
+ <entry><filename>www</filename></entry>
+ <entry>Logiciels en rapport avec le World Wide Web. Ce qui
+ concerne le langage HTML a aussi sa place ici</entry>
+ </row>
+
+ <row>
+ <entry>x11</entry>
+ <entry>Le syst&egrave;me X window et consorts. Cette
+ cat&eacute;gorie ne concerne que les logiciels directement en
+ rapport avec X Window. N'y mettez pas les applications X
+ ordinaires. Si votre logiciel est une application X,
+ d&eacute;finissez <makevar>USE_XLIB</makevar> (implicite avec
+ <makevar>USE_IMAKE</makevar>) et mettez le dans la
+ cat&eacute;gorie appropri&eacute;e. Un grand nombre d'entre
+ eux vont dans les autres cat&eacute;gories
+ <filename>x11-*</filename> (voir plus bas)</entry>
+ </row>
+
+ <row>
+ <entry><filename>x11-clocks</filename></entry>
+ <entry>Horloges X11</entry>
+ </row>
+
+ <row>
+ <entry><filename>x11-fm</filename></entry>
+ <entry>Gestionnaires de fichiers X11</entry>
+ </row>
+
+ <row>
+ <entry><filename>x11-fonts</filename></entry>
+ <entry>Polices de caract&egrave;res X11 et outils
+ associ&eacute;s</entry>
+ </row>
+
+ <row>
+ <entry><filename>x11-toolkits</filename></entry>
+ <entry>Bo&icirc;tes &agrave; outils X11</entry>
+ </row>
+
+ <row>
+ <entry><filename>x11-wm</filename></entry>
+ <entry>Gestionnaires de fen&ecirc;tres X11</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </sect3>
+
+ <sect3>
+ <title>Choisir la bonne cat&eacute;gorie</title>
+
+ <para>Comme de nombreuses cat&eacute;gories ont des logiciels en commun,
+ vous devez souvent d&eacute;cider laquelle sera la cat&eacute;gorie
+ principale de votre logiciel. Voici une liste de priorit&eacute;s, par
+ ordre d&eacute;croissant&nbsp;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Les cat&eacute;gories li&eacute;es &agrave; la langue
+ viennent en premier. Par exemple, si vous installez des polices
+ X11 Japonaise, alors vous mettrez <literal>japanese x11</literal>
+ dans votre ligne <makevar>CATEGORIES</makevar>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Les cat&eacute;gories les plus sp&eacute;cifiques viennent
+ avant celles qui le sont moins. Par exemple, un &eacute;diteur
+ HTML doit &ecirc;tre list&eacute; dans <literal>www
+ editors</literal>, et non l'inverse. Vous n'avez par ailleurs pas
+ besoin de mettre <literal>net</literal> si le logiciel appartient
+ &agrave; l'une des cat&eacute;gories <literal>mail</literal>,
+ <literal>mbone</literal>, <literal>news</literal>,
+ <literal>security</literal> ou <literal>www</literal>.</para>
+ </listitem>
+
+ <listitem>
+ <para><literal>x11</literal> n'est une cat&eacute;gorie secondaire
+ que lorsque la cat&eacute;gorie principale est une langue
+ nationale. En particulier, il ne faut pas mettre
+ <literal>x11</literal> pour les applications X.</para>
+ </listitem>
+
+ <listitem>
+ <para>Si votre logiciel ne va vraiment nulle part ailleurs,
+ mettez-le dans <literal>misc</literal>.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>SI vous n'&ecirc;tes pas s&ucirc;r de la cat&eacute;gorie, mettez
+ s'il vous pla&icirc;t un commentaire &agrave; ce sujet lorsque vous
+ soumettez votre <command>send-pr</command> pour que nous puissions en
+ discuter avant de l'int&eacute;grer. (Si vous avez l'acc&egrave;s en
+ &eacute;criture, envoyez une note &agrave; &a.ports; pour qu'il y ait
+ discussion au pr&eacute;alable&mdash;les nouveaux logiciels sont trop
+ souvent import&eacute;s dans la mauvaise cat&eacute;gorie et doivent
+ &ecirc;tre d&eacute;plac&eacute;s imm&eacute;diatement
+ apr&egrave;s.)</para>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Modifications de ce document et du syst&egrave;me des logiciels
+ port&eacute;s</title>
+
+ <para>Si vous maintenez de noombreux logiciels port&eacute;s, vous
+ devriez vous abonner &agrave; &a.ports;. Les modifications importantes
+ au fonctionnement du catalogue des logiciels port&eacute;s y seront
+ annonc&eacute;es. Vous aurez toujours des informations plus
+ d&eacute;taill&eacute;es sur les derni&egrave;res modifications en
+ consultant les
+ <ulink url="http://www.FreeBSD.ORG/cgi/cvsweb.cgi/ports/Mk/bsd.port.mk">traces
+ CVS pour bsd.port.mk</ulink>.</para>
+ </sect2>
+
+ <sect2>
+ <title>That is It, Folks!</title>
+
+ <para>C'est vraiment un long chapitre, n'est-ce-pas&nbsp;? Merci de
+ nous avoir suivi jusqu'ici.</para>
+
+ <para>Vous savons donc maintenant comment porter un logiciel. Allons-y et
+ convertissons le monde entier en logiciel port&eacute;s&nbsp;! C'est la
+ fa&ccedil;on la plus simple de commencer &agrave; contribuer au projet
+ FreeBSD&nbsp;! <!-- smiley --><emphasis>:)</emphasis></para>
+ </sect2>
+ </sect1>
+</chapter>
+<!--
+ Local Variables:
+ mode: sgml
+ sgml-declaration: "../chapter.decl"
+ sgml-indent-data: t
+ sgml-omittag: nil
+ sgml-shorttag: nil
+ sgml-always-quote-attributes: t
+ sgml-minimize-attributes: max
+ sgml-parent-document: ("../handbook.sgml" "part" "chapter")
+ End:
+-->
+