aboutsummaryrefslogtreecommitdiff
path: root/fr_FR.ISO8859-1/books/handbook/ports/chapter.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'fr_FR.ISO8859-1/books/handbook/ports/chapter.sgml')
-rw-r--r--fr_FR.ISO8859-1/books/handbook/ports/chapter.sgml5197
1 files changed, 0 insertions, 5197 deletions
diff --git a/fr_FR.ISO8859-1/books/handbook/ports/chapter.sgml b/fr_FR.ISO8859-1/books/handbook/ports/chapter.sgml
deleted file mode 100644
index 461ba197cb..0000000000
--- a/fr_FR.ISO8859-1/books/handbook/ports/chapter.sgml
+++ /dev/null
@@ -1,5197 +0,0 @@
-<!--
- 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:
--->
-