[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Le guide du nouveau developpeur Debian, mise a jour



Voici la nouvelle version du guide, pour la plus grande joie des petits et des
grands.

-- 
    Frederic Dumont           / /  (_)__  __ ____  __
frederic.dumont@freeworld.be / /__/ / _ \/ // /\ \/ /
    PGP key 0711F125        /____/_/_//_/____/ /_/\_\  forever!!!!!!!
Linux? It's an OS, Jim, but not as we know it.
<!doctype debiandoc system>

<debiandoc>

 <book>

  <titlepag>

   <title>Guide du nouveau responsable Debian</title>

   <author>Josip Rodin <email/jrodin@jagor.srce.hr/
   </author>
   <author>Traducteur : Fr&eacute;d&eacute;ric Dumont <email/frederic.dumont@freeworld.be/
   </author>

   <version>version 0.99.1, 25 janvier 2000.</version>

   <copyright>
   <copyrightsummary>Copyright &copy; 1998, 1999, 2000 Josip Rodin.</copyrightsummary>

   <p>Ce document peut &ecirc;tre utilis&eacute; selon les termes de la Licence publique
   g&eacute;n&eacute;rale de GNU version 2 ou suivante. 

   <p>Ce document a &eacute;t&eacute; cr&eacute;&eacute; avec ces deux documents comme exemple :

   <p>Making a Debian Package (the Debmake Manual), copyright &copy;
   1997 Jaldhar Vyas <email/jaldhar@debian.org/.

   <p>The New-Maintainer's Debian Packaging Howto, copyright &copy; 1997
   Will Lowe <email/lowe@debian.org/.
   </copyright>

  </titlepag>

  <toc sect>

  <chapt id="start">Commencer « de la bonne mani&egrave;re »

  <p>Ce document va essayer de d&eacute;crire &agrave; l'utilisateur Debian courant (et au
  d&eacute;veloppeur en devenir) la construction d'un paquet Debian GNU/Linux dans un
  langage courant, et compl&eacute;t&eacute; avec des exemples. Il y a un vieux proverbe
  romain, <em>Longum iter est per preaecepta, breve et efficax par
  exempla!</em> (C'est long par la r&egrave;gle, court et efficace par l'exemple!).

  <p>Une des choses qui font de Debian une distribution de si haut niveau est
  son syst&egrave;me de paquets. Bien qu'il existe une grande quantit&eacute; de logiciels
  dans le format Debian, parfois vous devrez installer un logiciel qui ne
  l'est pas. Vous pouvez vous demander comment faire vos propres paquets et
  peut-&ecirc;tre pensez vous que c'est une t&acirc;che tr&egrave;s difficile. Eh bien, si vous
  &ecirc;tes vraiment un d&eacute;butant sous Linux, c'est dur, mais si vous &eacute;tiez un
  d&eacute;butant, vous ne seriez pas en train de lire ce document maintenant. :-)
  Vous devez en savoir un peu sur la programmation Unix, mais vous n'avez
  certainement pas besoin d'&ecirc;tre un magicien.

  <p>Les nouvelles versions de ce document devraient toujours &ecirc;tre disponible
  'online' sur <url name="http://www.debian.org/doc/maint-guide";
  id="http://www.debian.org/doc/maint-guide/";> et dans le paquet
  'maint-guide'.

  <sect id="needprogs">Programmes n&eacute;cessaires au d&eacute;veloppement.

  <p>Avant de commencer quoi que ce soit, vous devriez vous assurer que vous
  avez correctement install&eacute; certains paquets suppl&eacute;mentaires n&eacute;cessaires pour
  le d&eacute;veloppement. Notez que la liste ne contient aucun paquet marqu&eacute;
  'essentiel' ou 'requis' - nous supposons que vous avez d&eacute;j&agrave; install&eacute;
  ceux-ci.
  
  <p>Ce document a &eacute;t&eacute; &eacute;crit alors que la distribution
  2.1 'slink' &eacute;tait la version stable officielle de Debian, et la 2.2
  'potato' &eacute;tait en cours de cr&eacute;ation, donc les paquets nomm&eacute;s ici sont
  principalement ceux de 'potato'.

  <p>Les paquets suivants sont fournis dans l'installation standard de Debian
  2.1, de sorte que vous les avez probablement d&eacute;j&agrave; (ainsi que les paquets
  suppl&eacute;mentaires dont ils d&eacute;pendent). N&eacute;anmoins, vous devriez le v&eacute;rifier avec
  `dpkg -s paquet`.

  <list>
  <item><em>binutils</em> - ces programmes sont utilis&eacute;s pour assembler et
  lier des fichiers objets - les blocs dont sont fait les programmes. (voir
  'info binutils')

  <item><em>cpp</em> - le pr&eacute;processeur C. (voir <manref name="cpp"
  section="1">)

  <item><em>cpio</em> - c'est un archiveur comme tar ou zip. (voir <manref
  name="cpio" section="1">) 

  <item><em>dpkg-dev</em> - ce paquet contient les outils n&eacute;cessaires pour
  d&eacute;paqueter, construire et t&eacute;l&eacute;charger les paquets sources Debian.  (voir
  <manref name="dpkg-source" section="1">)
  
  <item><em>file</em> - ce programme bien pratique peut d&eacute;terminer la nature
  d'un fichier. (voir <manref name="file" section="1">)
  
  <item><em>gcc</em> - Le compilateur C de GNU. La plupart des programmes
  Linux sont &eacute;crits en C. Cependant, si votre programme est &eacute;crit dans un
  autre langage de programmation, comme en C++, Fortran ou Pascal, vous
  devriez installer g++, g77 ou gpc, respectivement. (voir <manref name="gcc"
  section="1">, <manref name="g++" section="1">, <manref name="g77"
  section="1">, <manref name="gpc" section="1">)
  
  <item><em>libc6-dev</em> - Les librairies et fichiers d'ent&ecirc;te C dont gcc a
  besoin pour les lier aux fichiers objets cr&eacute;&eacute;s. Bien que certains programmes
  recommandent ou utilisent encore libc5, on vous recommande d'utiliser la
  nouvelle version (libc6). (voir `info libc`)
  
  <item><em>make</em> - d'ordinaire, la cr&eacute;ation d'un programme prend plusieurs
  &eacute;tapes. Plut&ocirc;t que d'avoir &agrave; taper les m&ecirc;mes commandes encore et encore,
  vous pouvez utiliser ce programme pour automatiser le processus, en
  cr&eacute;ant des fichiers `Makefile'. Certains programmes utilisent aussi imake et
  xmkmf, des programmes utilis&eacute;s pour g&eacute;n&eacute;rer les fichiers Makefile &agrave; partir
  d'un ensemble de fonctions macros. Beaucoup de logiciels r&eacute;cents utilisent
  des scripts de configurations et des fichiers Makefiles cr&eacute;&eacute;s &agrave; l'aide
  d'autoconf et automake, donc vous pourriez avoir besoin de ceux-ci aussi.
  (voir `info make`, <manref name="imake" section="1">, <manref name="xmkmf"
  section="1">, <manref name="autoconf" section="1">, <manref name="automake"
  section="1">)

  <item><em>patch</em> - ce programme tr&egrave;s utile prend un fichier contenant
  une liste de diff&eacute;rences (produite par le programme diff) et l'applique au
  fichier original, produisant une version mise &agrave; jour. (voir <manref
  name="patch" section="1">)

  <item><em>perl5</em> - Perl est un des langages de script les plus
  utilis&eacute;s sur les syst&egrave;mes un*x modernes, souvent qualifi&eacute; de « tron&ccedil;onneuse
  suisse de Unix ». (voir <manref name="perl" section="1">)
  </list>

  <p>Vous devrez probablement installer vous-m&ecirc;me les programmes suivant de la
  section `devel' de la distribution :

  <list>
  <item><em>dh-make</em> et <em>debhelper</em> - dh-make est n&eacute;cessaire pour
  cr&eacute;er le squelette de notre exemple de paquet et il utilise certains outils
  de debhelper pour cr&eacute;er les paquets. Ils ne sont pas indispensables pour la
  cr&eacute;ation des paquets, mais ils sont <strong>fortement</strong> recommand&eacute;s
  pour les nouveaux responsables. Ils rendent le processus complet bien plus
  facile &agrave; d&eacute;marrer, et &agrave; contr&ocirc;ler par apr&egrave;s. (voir <manref name="dh_make"
  section="1">, <manref name="debhelper" section="1">,
  /usr/share/doc/debhelper/README)

  <item><em>devscripts</em> - ce paquet contient certains scripts utiles qui
  peuvent aider les responsables, mais ils ne sont pas indispensables pour la
  cr&eacute;ation de paquets. (voir /usr/share/doc/devscripts/README.debian.gz)

  <item><em>fakeroot</em> - cet utilitaire vous laisse pr&eacute;tendre &ecirc;tre root, ce
  qui est n&eacute;cessaire pour certaines parties du processus de construction. (voir
  <manref name="fakeroot" section="1">)

  <item><em>lintian</em> - c'est le v&eacute;rificateur de paquet Debian, qui peut
  vous indiquer de nombreuses erreurs courantes apr&egrave;s que vous ayez construit
  le paquet et expliquer les erreurs trouv&eacute;es. (voir <manref name="lintian"
  section="1">, <manref name="diffstat" section="1">,
  /usr/share/doc/lintian/lintian.html/index.html) </list>

  <p>Enfin, ces paquets <em>tr&egrave;s importants</em> sont dans la section doc de
  la distribution :

  <list>
  <item><em>debian-policy</em> - inclut la structure et le contenu de
  l'archive, plusieurs consid&eacute;rations sur le design du syst&egrave;me d'exploitation,
  la Norme de hi&eacute;rarchie des fichiers, et le plus important (pour vous)
  est qu'il d&eacute;crit les crit&egrave;res que chaque paquet doit v&eacute;rifier pour &ecirc;tre
  inclus dans la distribution. (voir
  /usr/share/doc/debian-policy/policy.html/index.html)

  <item><em>developers-reference</em> - concerne tout ce qui n'est pas
  sp&eacute;cifique aux d&eacute;tails techniques de la cr&eacute;ation de paquets, comme la
  structure des archives, comment renommer, rendre orphelin, choisir un
  paquet, faire un NMU (une version du paquet non responsable),
  comment g&eacute;rer les bogues, o&ugrave; et quand t&eacute;l&eacute;charger, etc. (voir
  /usr/share/doc/developers-reference/developers-reference.html/index.html)

  <item><em>packaging-manual</em> - d&eacute;crit les aspects techniques de la
  cr&eacute;ation des paquets binaires et sources Debian. (voir
  /usr/share/doc/packaging-manual/packaging.html/index.html)
  </list>

  <p>Vous avez aussi besoin du paquet de cryptographie, soit PGP (les paquets
  pgp-*) ou GPG (le paquet gnupg), pour <em>signer</em> num&eacute;riquement votre
  paquet.  Ceci est sp&eacute;cialement important si vous voulez distribuer votre
  paquet &agrave; d'autres personnes (et vous le ferez si votre paquet est inclus
  dans la distribution Debian). Cependant, &agrave; cause d'une loi d'exportation
  am&eacute;ricaine plut&ocirc;t stupide, vous ne pouvez pas simplement le t&eacute;l&eacute;charger de
  votre site FTP Debian le plus proche. Cependant, Debian fournit ces paquets
  via un site qui n'est pas physiquement situ&eacute;s aux USA, nomm&eacute;
  non-US.debian.org (ftp://non-us.debian.org/debian-non-US/). Votre site FTP
  va avoir un fichier nomm&eacute; README.non-us, qui vous dira comment trouver un
  miroir plus proche de ce site. 

  <p>Les courtes descriptions qui sont donn&eacute;es ci-dessus ne servent que
  d'introduction &agrave; ce que fait chaque paquet. Avant de continuer, veuillez lire
  attentivement la documentation de chaque programme, au moins l'usage
  standard. Cela peut vous sembler fastidieux maintenant, mais plus tard vous
  serez <em>tr&egrave;s</em> content de l'avoir fait.
  
  Remarque: <em>debmake</em> est un paquet qui contient certains programmes
  qui fonctionnent d'une mani&egrave;re similaire &agrave; dh-make, mais son usage
  sp&eacute;cifique n'est <strong>pas</strong> couvert dans ce document.
  Veuillez lire <url name="the Debmake manual"
  id="http://www.debian.org/~jaldhar/";> pour plus d'information.

  <sect id="otherinfo">Plus d'information

  <p>Vous pouvez faire deux types de paquets : source et binaire.  Un paquet
  source contient le code que vous pouvez compiler en un programme.  Un paquet
  binaire contient juste le programme fini. Ne m&eacute;langez pas les termes comme
  source du programme et le paquet source du programme ! Veuillez lire les
  autres manuels si vous avez besoin de plus de d&eacute;tails sur la terminologie.

  <p>Debian utilise le terme `responsable' pour la personne qui fait des
  paquets, `auteur' pour la personne qui a fait le programme, et `responsable
  amont' pour la personne qui maintient le programme actuellement. D'ordinaire
  l'auteur et le responsable amont sont une seule et m&ecirc;me personne. Si vous
  avez &eacute;crit un programme, et que vous voulez qu'il soit dans Debian, vous
  pouvez remplir une demande pour devenir un responsable.

  <p>Apr&egrave;s que vous ayez construit votre paquet (ou pendant la cr&eacute;ation), vous
  devrez devenir responsable Debian officiel si vous souhaitez que votre
  programme soit dans la prochaine distribution (si le programme est utile,
  pourquoi pas ?) Ce processus est expliqu&eacute; dans la R&eacute;f&eacute;rence du d&eacute;veloppeur.
  Veuillez le lire.

  <chapt id="first">Premiers pas

  <p>Puisque la documentation au <url name="Coin des d&eacute;veloppeurs"
  id="http://www.debian.org/devel/";> n'est pas tr&egrave;s claire sur o&ugrave; et comment
  les nouveaux responsables devraient commencer leur travail, ce document va
  expliquer chacune des petites &eacute;tapes (qui peuvent a priori sembler
  insignifiante), et vous aider &agrave; cr&eacute;er ce premier paquet, ainsi qu'&agrave; gagner
  de l'exp&eacute;rience pour construire les versions suivantes de ce paquet ou
  d'autres plus tard.

  <sect id="choose">Choisir votre programme

  <p>Vous avez probablement d&eacute;j&agrave; choisi le paquet que vous voulez construire,
  mais voici quelques &eacute;l&eacute;ments pour les non-initi&eacute;s :

  <list>
  <item>v&eacute;rifiez si le paquet est d&eacute;j&agrave; dans la distribution. Si vous utilisez
  la distribution `stable', peut-&ecirc;tre que le mieux est d'aller sur <url
  name="la page de recherche"
  id="http://www.debian.ord/distrib/packages.html";>.
  Si vous utilisez une distribution `unstable' <strong>courante</strong>,
  v&eacute;rifiez le avec ces commandes :
  <example>
  dpkg -s programme
  dpkg -l '*programme*'
  </example>
  </item>

  <item>consultez la <url name="page WNPP"
  id="http://www.debian.org/doc/prospective-packages.html";> (Travail
  n&eacute;cessaire et paquets futurs) et la liste de discussion debian-devel pour
  voir si quelqu'un d'autre construit ce paquet. Si c'est le cas, contactez le
  responsable actuel si vous le voulez vraiment. Sinon, trouvez un autre
  paquet int&eacute;ressant que personne ne maintient.
  </item>

  <item>le programme <strong>doit</strong> avoir une licence, si possible
  libre conform&eacute;ment au <url name="R&egrave;gles de Logiciel Libre Debian"
  id="http://www.debian.org/social_contract.html#guidelines";>.
  S'il n'est pas conforme &agrave; l'une de ces r&egrave;gles, il peut malgr&eacute; tout &ecirc;tre
  inclus dans les sections `contrib' ou `non-free' de Debian. Si vous n'&ecirc;tes
  pas s&ucirc;r, demandez sur <email/debian-legal@lists.debian.org/.
  </item>

  <item>le programme ne devrait <strong>pas</strong> &ecirc;tre setuid root, o&ugrave;
  encore mieux, il ne devrait pas &ecirc;tre quoique ce soit setuid ou setgid.
  </item>

  <item>le programme ne devrait pas &ecirc;tre un d&eacute;mon, ou quelque chose qui va
  dans les r&eacute;pertoires */sbin.
  </item>

  <item>le programme devrait &ecirc;tre sous forme de binaire ex&eacute;cutable. N'essayez
  pas encore les librairies.
  </item>

  <item>il devrait &ecirc;tre bien document&eacute;, ou au moins compr&eacute;hensible (par tous).
  </item>

  <item>vous devriez contacter le(s) auteur(s) du programme pour v&eacute;rifier
  qu'ils sont d'accord pour la cr&eacute;ation du paquet. Il est important d'&ecirc;tre &agrave;
  m&ecirc;me de consulter le(s) auteur(s) &agrave; propos du programme en cas de probl&egrave;mes
  sp&eacute;cifiques au programme, aussi n'essayez pas de cr&eacute;er un paquet &agrave; partir de
  programmes non maintenus.
  </item>

  <item>enfin, vous devriez savoir qu'il fonctionne, et l'avoir test&eacute; pendant
  quelques temps.
  </item>
  </list>

  <p>Bien s&ucirc;r, toutes ces remarques ne sont que des mesures de s&eacute;curit&eacute;, et
  ont pour but de vous sauver d'utilisateurs fous de rage si vous faites
  une erreur dans un d&eacute;mon setuid... Quand vous aurez plus d'exp&eacute;rience
  dans la cr&eacute;ation des paquets, vous serez capable de faire de tels paquets,
  mais m&ecirc;me les d&eacute;veloppeurs les plus exp&eacute;riment&eacute;s consultent la liste de
  discussion debian-devel en cas de doute. Et l&agrave; les gens seront contents de
  les aider.

  <p>Pour plus d'information &agrave; ce sujet, consultez la R&eacute;f&eacute;rence du D&eacute;veloppeur.

  <sect id="getit">Obtenir le programme et l'essayer.

  <p>La premi&egrave;re chose &agrave; faire est de trouver et de t&eacute;l&eacute;charger le paquet
  original. Je suppose que vous avez d&eacute;j&agrave; le fichier source que vous avez pris
  sur la page web de l'auteur. Les sources pour les logiciels Linux libres
  sont d'habitude au format tar/gzip avec l'extension .tar.gz, et contiennent
  normalement un sous-r&eacute;pertoire nomm&eacute; programme-version avec toutes les
  sources dedans. Si la source de votre programme est disponible dans une
  autre sort d'archive (par exemple, le programme se termine par '.Z' ou
  '.zip'), d&eacute;compressez-le avec les outils ad&eacute;quats ou demandez sur
  debian-mentors si vous n'&ecirc;tes pas s&ucirc;r quant &agrave; la fa&ccedil;on de le d&eacute;compresser
  correctement (indice: utilisez `file archive.extension`).

  <p>Comme exemple, je vais utiliser un programme nomm&eacute; `gentoo', un
  gestionnaire de fichiers pour X11 utilisant GTK+.  Sachez qu'il y a
  d&eacute;j&agrave; un paquet pour ce programme, et qu'il a chang&eacute;
  substantiellement depuis que ce texte a &eacute;t&eacute; &eacute;crit la
  premi&egrave;re fois.

  <p>Cr&eacute;ez un sous-r&eacute;pertoire sous votre r&eacute;pertoire racine nomm&eacute;
  `debian' ou `deb' ou quoi que ce soit d'ad&eacute;quat (ou le nom du programme,
  ~/gentoo, ferait l'affaire dans notre cas). Placez l'archive
  t&eacute;l&eacute;charg&eacute;e dedans, et d&eacute;compressez la avec `tar
  -xzf gentoo-0.9.12.tar.gz`.  Assurez-vous qu'il n'y a pas d'erreurs, m&ecirc;me
  « sans importance », parce qu'alors il y aura des probl&egrave;mes pour d&eacute;compresser
  sur les syst&egrave;mes d'autres personnes, dont les outils de d&eacute;compressions
  pourraient ne pas supporter ces erreurs.

  <p>Maintenant vous avez un autre sous-r&eacute;pertoire, nomm&eacute; 'gentoo-0.9.12'.
  Allez dans ce r&eacute;pertoire et lisez <strong>attentivement</strong> la
  documentation fournie. Il s'agit d'habitude de fichiers nomm&eacute;s
  README*, INSTALL*, *.lsm ou *.html. Dedans vous devez trouver les
  instructions pour compiler et installer correctement le programme
  (tr&egrave;s probablement elles supposent que vous voulez installer dans le
  r&eacute;pertoire /usr/local/bin; ce n'est pas le cas, mais on reviendra sur
  ce point plus tard in <ref id="destdir">).

  <p>La m&eacute;thode varie d'un programme &agrave; l'autre, mais de nombreux programmes
  modernes viennent avec un script `configure' qui configure les sources selon
  votre syst&egrave;me et s'assure que votre syst&egrave;me est &agrave; m&ecirc;me de les compiler.
  Apr&egrave;s la configuration (avec `./configure`), les programmes sont compil&eacute;s
  avec `make`.  Certains d'entre-eux supportent `make check`, pour se tester
  eux-m&ecirc;mes.  L'installation dans les r&eacute;pertoires de destination est
  g&eacute;n&eacute;ralement obtenue avec `make install`.
  
  <p>Maintenant, essayez de compiler et d'ex&eacute;cuter votre programme, pour vous
  assurer qu'il fonctionne correctement et ne casse rien d'autre quand il est
  install&eacute; ou qu'il tourne.

  <p>Sachez aussi que vous pouvez g&eacute;n&eacute;ralement entrer `make uninstall` pour
  retirer tous les fichiers install&eacute;s, et `make clean` (ou mieux, `make
  distclean`) pour nettoyer le r&eacute;pertoire de compilation.

  <sect id="namever">Les choses &agrave; faire avant `dh_make'

  <p>Vous devriez commencer la cr&eacute;ation du paquet avec un r&eacute;pertoire source
  compl&egrave;tement propre (originel), ou plus simplement avec les sources
  fra&icirc;chement d&eacute;compress&eacute;es.

  <p>Pour que le paquet soit correctement construit, vous devez changer le nom
  du programme en minuscule (si ce n'est d&eacute;j&agrave; fait), et vous devriez changer
  le r&eacute;pertoire source en &lt;numpaquete&gt;-&lt;version&gt;.

  <p>Si le nom du programme consiste en plus d'un mot, r&eacute;duisez le &agrave; un mot,
  ou faites une abr&eacute;viation.  Par exemple, le paquet du programme 'John's
  little editor for X' serait nomm&eacute; johnledx, ou jle4x, ou quoi que vous
  vouliez, aussi longtemps qu'il reste sous une limite raisonnable, en g&eacute;n&eacute;ral
  20 caract&egrave;res.

  <p>V&eacute;rifiez aussi la version exacte du programme (qui sera inclus
  dans la version du paquet). Si ce logiciel n'est pas num&eacute;rot&eacute;
  avec un num&eacute;ro de version comme X.Y.Z, mais avec une date de
  distribution, vous pouvez utiliser cette date comme num&eacute;ro de version, avec
  comme pr&eacute;fixe '0.0.' (juste au cas o&ugrave; les responsables amonts d&eacute;cident de
  distribuer une jolie version comme 1.0).  Donc, si la date est le 19
  d&eacute;cembre 1998, vous pouvez utilisez 0.0.19981219 comme cha&icirc;ne pour la
  version. Certains ne seront pas num&eacute;rot&eacute;s du tout, auquel cas
  vous devriez contacter le responsable amont pour voir si il a une autre
  m&eacute;thode de gestion des r&eacute;visions.

  <sect id="dh_make">Lancer `dh_make'

  <p>V&eacute;rifiez que vous &ecirc;tes dans le r&eacute;pertoire du code source du programme, et
  lancez ceci :

  <p><example>
  dh_make -e votre.adresse@de.responsable -f gentoo-0.9.12.tar.gz
  </example>

  <p>Bien sur, remplacez la cha&icirc;ne « votre.adresse@de.responsable » avec votre
  adresse m&eacute;l pour l'inclure dans l'entr&eacute;e changelog et dans d'autres
  fichiers, et le nom du fichier par le nom de la source d'archive originale.
  Voyez <manref name="dh_make" section="1"> pour plus de d&eacute;tails.
   
  <p>Des informations sont affich&eacute;es. Il vous demande quelle sorte de
  paquet vous voulez cr&eacute;er. Gentoo est un paquet binaire simple - il ne
  cr&eacute;e qu'un ex&eacute;cutable, et donc un seul fichier .deb - donc
  nous s&eacute;lectionnons la premi&egrave;re option, avec la touche `s',
  v&eacute;rifions l'information sur l'&eacute;cran et confirmons en pressant
  &lt;enter&gt;. En tant que nouveau responsable, vous ne devriez pas
  cr&eacute;er des paquets compos&eacute;s, ou des librairies, comme
  expliqu&eacute; plus haut.  Ce n'est pas si dur, mais cela requiert un peu
  plus de connaissances, donc nous n'en d&eacute;taillerons pas tout ici.

  <p>Notez que vous ne pouvez ex&eacute;cuter dh_make <strong>qu'une fois</strong>,
  et qu'il ne se comportera par correctement si vous l'ex&eacute;cutez encore dans le
  m&ecirc;me r&eacute;pertoire d&eacute;j&agrave; debianis&eacute;. Cela signifie aussi que vous devrez utiliser
  une autre m&eacute;thode pour distribuer une nouvelle r&eacute;vision ou une nouvelle
  version de votre paquet dans le futur. Lisez plus &agrave; ce sujet dans ce texte
  dans <ref id="update">

  <chapt id="modify">Modifier les sources

  <p>Normalement, les programmes s'installent d'eux-m&ecirc;mes dans les
  sous-r&eacute;pertoires /usr/local. Mais les paquets Debian ne doivent pas utiliser
  ce r&eacute;pertoire, car il est r&eacute;serv&eacute; &agrave; l'usage priv&eacute; de l'administrateur
  syst&egrave;me (ou de l'utilisateur). Cela signifie que vous devez examinez le
  syst&egrave;me de cr&eacute;ation de votre programme, en g&eacute;n&eacute;ral en commen&ccedil;ant par le
  Makefile. C'est le script que <manref name="make" section="1"> utilisera
  pour automatiser la cr&eacute;ation du programme. Pour plus de d&eacute;tails sur les
  Makefiles, regardez <ref id="rules">.

  <p>Notez que si votre programme utilise GNU <manref name="automake"
  section="1"> et/ou <manref name="autoconf" section="1">, ce qui signifie que
  les sources incluent des fichiers Makefile.am et/ou Makefile.in,
  respectivement, vous devrez modifier ces fichiers, parce que chaque appel
  d'automake va &eacute;craser les Makefile.in avec des informations g&eacute;n&eacute;r&eacute;es &agrave;
  partir des Makefile.am, et que chaque appel de ./configure fera de m&ecirc;me avec
  les fichiers Makefile, avec des donn&eacute;es des Makefile.in.  &Eacute;diter les fichiers
  Makefile.am requiert des connaissances sur automake, que vous pouvez
  apprendre dans la section automake d'info, alors qu'&eacute;diter les fichiers
  Makefile.in est globalement identique &agrave; l'&eacute;dition de fichiers Makefiles, si
  ce n'est qu'il faut faire attention &agrave; toutes les variables, &agrave; savoir toute
  cha&icirc;ne entour&eacute;e de `@', comme par exemple @CFLAGS@ ou @LN_S@, qui sont
  remplac&eacute;es par des valeurs r&eacute;elles &agrave; chaque appel d'autoconf.
  
  <p>Notez qu'il n'y a pas la place ici pour entrer dans <em>tout</em> les
  d&eacute;tails sur les modifications, mais voici quelques-uns des probl&egrave;mes qui
  reviennent souvent.

  <sect id="destdir">Installer dans un sous-r&eacute;pertoire

  <p>La plupart des programmes ont une certaine mani&egrave;re de s'installer
  dans la structure de r&eacute;pertoire de votre syst&egrave;me, de sorte que
  leurs ex&eacute;cutables sont inclus dans votre $PATH, et que vous trouvez leurs
  documentation et pages de manuel aux places habituelles.  Vous devez vous
  assurer qu'ils le font correctement, mais vous devez les forcer &agrave;
  s'installer dans un sous-r&eacute;pertoire temporaire qui sera cr&eacute;&eacute; sous votre
  r&eacute;pertoire debian/, normalement nomm&eacute; <tt>debian/tmp</tt>, &agrave; partir duquel
  les outils du responsable vont construire un paquet .deb fonctionnel.  Tout
  ce qui est contenu dans ce r&eacute;pertoire sera install&eacute; sur le syst&egrave;me de
  l'utilisateur quand il installe votre paquet, la seule diff&eacute;rence est que
  dpkg installera les fichiers dans le r&eacute;pertoire racine. 

  <p>Fondamentalement, vous devez faire en sorte que le programme s'installe
  dans debian/tmp, mais se comporte correctement quand il est plac&eacute; dans le
  r&eacute;pertoire racine, i.e. quand il est install&eacute; depuis le paquet .deb.  Avec
  des programmes utilisant GNU autoconf, ceci est relativement facile, parce
  que dh_make va mettre en place des commandes pour le faire automatiquement,
  et vous pouvez tout aussi bien passer &agrave; la section suivante.  Mais avec
  d'autres programmes, vous devrez plus que probablement examiner et &eacute;diter
  les Makefiles.

  <p>Voici les parties concern&eacute;es du Makefile de gentoo :

  <p><example>
  # Where to put binary on 'make install'?
  BIN     = /usr/local/bin
  # Where to put icons on 'make install'? Note: if you change this,
  # gentoo will not find the icons as it starts up. You're going to
  # have to alter gentoo's icon path (in the config window, "Paths"
  # tab) to get it work.
  ICONS   = /usr/local/lib/gentoo/
  </example>

  <p>Avant tout, vous devriez ins&eacute;rer deux nouvelles lignes qui disent :

  <p><example>
  # Edited for Debian GNU/Linux.
  DESTDIR =
  </example>
  parce que le processus de cr&eacute;ation en a besoin (ce sera expliqu&eacute; plus loin,
  dans <ref id="rules">).

  <p>Ensuite le Makefile mentionne la position de l'ex&eacute;cutable final. Changez
  le en ceci :
  <p><example>
  # Where to put binary on 'make install'?
  BIN     = $(DESTDIR)/usr/X11R6/bin
  </example>

  <p>Mais pourquoi dans ce r&eacute;pertoire, et pas dans un autre ? Parce que Debian
  a d&eacute;fini quelques r&egrave;gles indiquant o&ugrave; les programmes doivent &ecirc;tre install&eacute;s.
  Ceci est sp&eacute;cifi&eacute; dans le Standard de la Hi&eacute;rarchie de Fichiers
  (/usr/share/doc/debian-policy/fhs). Ainsi, nous devons installer
  l'ex&eacute;cutable dans /usr/X11R6/bin, &agrave; la place de /usr/local/bin, et la page
  de manuel (qui n'existe pas dans notre cas, mais presque tous les programmes
  en ont une, aussi nous en ferons une plus tard) dans /usr/share/man/man1 &agrave;
  la place de /usr/local/man/man1.

  <p>Apr&egrave;s cela nous avons une situation un peu plus difficile. Si vous
  changez une ligne en :

  <p><example>
  ICONS   = $(DESTDIR)/usr/share/gentoo/
  </example>
  pour &ecirc;tre conforme aux r&egrave;gles, vous devrez &eacute;diter quelques sources C. Mais
  o&ugrave; et que chercher ? Vous pouvez trouver o&ugrave; en lan&ccedil;ant :
  <p><example>
  grep -n usr/local/lib *.[ch]
  </example>
  (dans chaque sous-r&eacute;pertoire qui contient des fichiers .c et .h). Grep vous
  dira le nom du fichier et le num&eacute;ro de ligne o&ugrave; il trouve une occurrence.
  Maintenant &eacute;ditez ces fichiers et aux lignes indiqu&eacute;es, remplacez
  usr/local/lib par usr/share - et voil&agrave;. Remplacez juste usr/local/lib avec
  votre r&eacute;pertoire, et faites attention de ne pas casser le reste du code, si
  vous ne vous y connaissez pas trop en programmation C :-)

  <p>Apr&egrave;s quoi vous devez trouver la cible d'installation (cherchez une ligne
  qui commence avec 'install:') et renommez toutes les r&eacute;f&eacute;rences aux
  r&eacute;pertoires autres que ceux d&eacute;finis au d&eacute;but du Makefile. Dans notre cas,
  c'est d&eacute;j&agrave; fait et simplifie un peu les choses. Auparavant, la cible
  d'installation de gentoo disait :

  <p><example>
  # ----------------------------------------- Installation

  # You're going to have to be root to do this!
  install:        gentoo
                  install ./gentoo $(BIN)
                  install icons $(ICONS)
                  install gentoorc-example $(HOME)/.gentoorc
  </example>

  <p>Apr&egrave;s votre modification elle dit :
  <example>
  # ----------------------------------------- Installation

  # You're going to have to be root to do this!
  install:        gentoo-target
                  install -d $(BIN) $(ICONS) $(DESTDIR)/etc
                  install ./gentoo $(BIN)
                  install -m644 icons/* $(ICONS)
                  install -m644 gentoorc-example $(DESTDIR)/etc/gentoorc
                  install -d $(DESTDIR)/usr/share/doc/gentoo/html
                  cp -a docs/* $(DESTDIR)/usr/share/doc/gentoo/html
  </example>

  <p>Le lecteur attentif notera que j'ai chang&eacute; `gentoo' en `gentoo-target'
  dans la ligne `install:'. C'est ce qu'on appelle une correction de bogue :-)

  <p>Chaque fois que vous faites des modifications qui ne sont pas
  sp&eacute;cifiquement li&eacute; &agrave; Debian, envoyez les au responsable amont pour qu'elles
  puissent &ecirc;tre inclue dans la version suivante du programme.  Remarquez que
  vous ne devez pas envoyer les fichiers debian/* en amont, mais vous devriez
  le faire pour tous autre modification.  En essayez d'&ecirc;tre gentil avec le
  responsable amont, en &eacute;vitant de faire des corrections sp&eacute;cifiques &agrave; Debian
  ou Linux (ou m&ecirc;me Unix).

  <sect id="difflibs">Librairies diff&eacute;rentes

  <p>Il y a souvent un probl&egrave;me commun : des librairies sont souvent
  diff&eacute;rentes d'une plate-forme &agrave; l'autre. Par exemple, Makefile peut contenir
  une r&eacute;f&eacute;rence &agrave; une librairie qui n'existe pas dans Debian. Dans ce cas,
  nous devons la changer en une librairie qui existe dans Debian, et qui sert
  &agrave; la m&ecirc;me chose.  La meilleure m&eacute;thode est de commenter ces lignes parce
  qu'elles peuvent fournir des indices &agrave; d'autres qui ont le m&ecirc;me probl&egrave;me.

  <p>Ainsi, s'il y a une ligne dans le Makefile (ou Makefile.in) de votre
  programme qui dit quelque chose comme ceci (et votre programme ne compile
  pas) :

  <p><example>
  LIBS = -lcurses -lquelquechose -lautrechose
  </example>

  <p>Changez la en ceci, et cela marchera probablement :
  <p><example>
  LIBS = -lncurses -lquelquechose -lautrechose
  #LIBS = -lcurses -lquelquechose -lautrechose
  </example>

  <chapt id="dreq">Ce qui est requis sous debian/

  <p>Il y a un nouveau sous-r&eacute;pertoire sous le r&eacute;pertoire principal du
  programme ('gentoo-0.9.12'), nomm&eacute; 'debian'. Il
  y a un certain nombre de fichiers dans ce r&eacute;pertoire. Nous allons &eacute;diter
  ceux-ci pour configurer le comportement du paquet. Les plus importants
  d'entre eux sont 'control', 'changelog', 'copyright' et 'rules', qui sont
  requis pour tous les paquets.

  <sect id="control">fichier 'control'

  <p>Ce fichier contient plusieurs valeurs que dpkg et dselect vont utiliser
  pour g&eacute;rer le paquet. Voici le fichier control que dh_make cr&eacute;e pour
  nous.

  <p><example>
  1  Source: gentoo
  2  Section: unknown
  3  Priority: optional
  4  Maintainer: Josip Rodin &lt;jrodin@jagor.srce.hr&gt;
  5  Standards-Version: 3.0.1
  6
  7  Package: gentoo
  8  Architecture: any
  9  Depends: ${shlibs:Depends}
  10 Description: &lt;insert up to 60 chars description&gt;
  11  &lt;insert long description, indented with spaces&gt;
  </example>
  (J'ai ajout&eacute; les num&eacute;ros de ligne.)

  <p>Les lignes de 1 &agrave; 5 sont les informations de contr&ocirc;le pour le paquet
  source. La ligne 1 est le nom du paquet source.

  <p>La ligne 2 est la section de la distribution dans laquelle ce paquet
  va. Comme vous l'avez constat&eacute;, Debian est divis&eacute; en sections: main
  (logiciels libres), non-free (logiciels pas vraiment libres), et contrib
  (logiciels libres qui d&eacute;pendent de logiciels non libres). Sous celles-ci, il
  y a des sous-sections logiques qui d&eacute;crivent de mani&egrave;re concise les paquets
  qui s'y trouvent. Ainsi nous avons `admin' pour les programmes r&eacute;serv&eacute;s &agrave;
  l'administrateur, `base' pour les outils de base, `devel' pour les outils de
  programmation, `doc' pour la documentation, `libs' pour les librairies,
  `mail' pour les lecteurs et les d&eacute;mons de courriel, `net' pour les
  applications et d&eacute;mons r&eacute;seaux, `x11' pour les programmes sp&eacute;cifiques &agrave; X11,
  et bien d'autres.

  <p>Changeons donc la section en x11.

  <p>La ligne 3 d&eacute;crit l'importance pour l'utilisateur d'installer ce paquet.
  Les sections et les priorit&eacute;s ne sont utilis&eacute;s que par dselect quand il trie
  les paquets et s&eacute;lectionne les d&eacute;fauts, et elles peuvent (et seront
  probablement) modifi&eacute;es par nos responsables FTP. Lisez le manuel des normes
  pour des informations sur ces valeurs.

  <p>Comme c'est un paquet de priorit&eacute; normale, nous le laissons &agrave; optional.

  <p>La ligne 4 est le nom et l'adresse m&eacute;l du responsable.

  <p>La ligne 5 est la version du standard de R&egrave;gles Debian que ce paquet
  respecte (deux versions majeurs du paquet debian-policy install&eacute;).

  <p>Si un compilateur non-standard ou d'autres outils sont n&eacute;cessaires pour
  construire votre paquet, vous devriez ajouter ici une ligne `Build-depends'
  et y mettre les paquets requis.  Pour plus d'information, lisez le Manuel de
  Paquetage (section 8.7) et la documentation du paquet `build-essential'.

  <p>La ligne 7 est le nom du paquet binaire.

  <p>La ligne 8 d&eacute;crit l'architecture CPU pour laquelle le paquet binaire peut
  &ecirc;tre compil&eacute;. Vous pouvez le laisser &agrave; 'any' car <manref
  name="dpkg-gencontrol" section="1"> trouvera la valeur appropri&eacute;e pour toute
  machine sur laquelle ce paquet sera compil&eacute; (voir la R&eacute;f&eacute;rence du
  D&eacute;veloppeur pour une explication sur ce qu'est le portage de paquet).  Si
  votre paquet est ind&eacute;pendant d'une architecture (par exemple, un script
  shell ou Perl, ou un document), changez cette entr&eacute;e en 'all' et lisez plus
  tard dans <ref id="rules"> comment utiliser la r&egrave;gle `binary-indep' au lieu
  de `binary-arch' pour construire le paquet.

  <p>La ligne 9 montre une des capacit&eacute;s les plus puissantes de syst&egrave;me de
  paquet Debian. Les paquets peuvent &ecirc;tre li&eacute;s entre eux de plusieurs
  m&eacute;thodes. A part Depends les autres relations sont Recommends:, Suggests:,
  Pre-Depends:, Conflicts:, Provides:, et Replaces:.

  <p>Les outils de gestion de paquets comme dpkg, dselect ou APT (et ses
  interfaces) se comportent d'ordinaire de la m&ecirc;me mani&egrave;re quand ils g&egrave;rent
  ces relations; sinon, ce sera expliqu&eacute;.
  (voir <manref name="dpkg" section="8">, <manref name="dselect" section="8">,
  <manref name="apt" section="8">, <manref name="console-apt" section="8">,
  <manref name="gnome-apt" section="8">)

  <p>Voici ce qu'elles veulent dire normalement :

  <p><list>
  <item>Depends:
  <p>Le paquet ne sera pas install&eacute; &agrave; moins que les paquets dont il d&eacute;pend ne
  soient install&eacute;s. Utilisez le si votre programme ne s'ex&eacute;cutera absolument
  pas (ou causera des d&eacute;g&acirc;ts s&eacute;rieux) &agrave; mois qu'un paquet particulier ne soit
  pr&eacute;sent.</item>

  <item>Recommends:
  <p>dselect n'installera pas votre programme a moins que les paquets qu'il
  recommande ne soient install&eacute;s. Dpkg et APT vous le laisseront faire
  cependant. Utilisez le pour les paquets qui ne sont pas vraiment
  indispensables mais qui sont typiquement utilis&eacute;s avec votre
  programme.</item>

  <item>Suggests:
  <p>Quand un utilisateur installe votre programme dselect lui demandera s'il
  faut installer les programmes qu'il sugg&egrave;re.  Dpkg et APT ne s'en soucient
  pas beaucoup.  Utilisez le pour les paquets qui marchent bien avec votre
  programme mais qui ne sont pas n&eacute;cessaires.</item>

  <item>Pre-Depends:
  <p>Ceci est plus fort que Depends. Le paquet ne sera pas install&eacute; &agrave; moins
  que les paquets dont il pr&eacute;-d&eacute;pend ne soient install&eacute;s <em>et correctement
  configur&eacute;s</em>. Utilisez le <strong>tr&egrave;s</strong> rarement et seulement
  apr&egrave;s en avoir discut&eacute; sur la liste de discussion debian-devel.  Traduisez:
  ne l'utilisez pas du tout. :-)</item>

  <item>Conflicts:
  <p>Le paquet se sera pas install&eacute; avant que les paquets
  avec lesquels il est en conflit n'aient &eacute;t&eacute; retir&eacute;s.
  Utilisez ceci si votre programme ne peut absolument pas &ecirc;tre ex&eacute;cut&eacute; (ou si
  il causera d'&eacute;normes probl&egrave;mes) si un paquet particulier est pr&eacute;sent.</item>

  <item>Provides:
  <p>Quand il y a plusieurs alternatives pour certains types de paquets, des
  noms virtuels ont &eacute;t&eacute; d&eacute;finis. La liste compl&egrave;te se trouve dans
  /usr/share/doc/debian-policy/virtual-package-name-list.text.gz. Utilisez
  ceci si votre programme fournit une fonction d'un paquet virtuel
  existant.</item>

  <item>Replaces:
  <p>Utilisez ceci quand votre programme remplace des fichiers d'un autre
  paquet, ou remplace compl&egrave;tement un autre paquet (utilis&eacute; en conjonction
  avec Conflicts:). Les fichiers du paquet nomm&eacute; seront retir&eacute;s avant
  d'installer le votre.
  </item>
  </list>

  <p>Tous ces champs ont une syntaxe uniforme. Il s'agit d'une liste de
  paquets s&eacute;par&eacute;s par des virgules. Ces noms de paquets peuvent aussi &ecirc;tre une
  liste d'alternatives, s&eacute;par&eacute;s par des symboles barre verticale <tt>|</tt>
  (symbole tuyau). Les champs peuvent &ecirc;tre restreints a des versions
  particuli&egrave;res de chaque paquet nomm&eacute;.  Ces versions sont list&eacute;es entre
  parenth&egrave;ses apr&egrave;s chaque nom de paquet individuel, et doivent contenir une
  relation de la liste suivante suivie par un num&eacute;ro de version. Les relations
  autoris&eacute;es sont <tt>&lt;&lt;</tt>, <tt>&lt;=</tt>, <tt>=</tt>,
  <tt>&gt;=</tt> et <tt>&gt;&gt</tt> pour strictement plus petit, plus petit
  ou &eacute;gal, exactement &eacute;gal, plus grand ou &eacute;gal et strictement plus grand,
  respectivement.

  <p>La derni&egrave;re capacit&eacute; que vous devez conna&icirc;tre est
  $(shlibs:Depends). Ceci sera automatiquement g&eacute;n&eacute;r&eacute; par <manref
  name="dh_shlibdeps" section="1"> et rempli par <manref name="dh_gencontrol"
  section="1"> avec les noms de toutes les librairies partag&eacute;es, comme
  libc6 ou xlib6g, que votre programme utilise, de sorte que vous ne devez pas
  le sp&eacute;cifier vous-m&ecirc;me.  Ceci &eacute;tant dit, nous pouvons
  laisser la ligne 9 exactement comme elle est.

  <p>La ligne 10 est celle o&ugrave; la liste de suggestions va. Ici on ne met que
  `file', parce que gentoo peut utiliser certaines capacit&eacute;s de ce
  programme/paquet.

  <p>La ligne 11 est la description courte. L'&eacute;cran de la plupart de gens est
  large de 80 colonnes, aussi cela ne devrait pas d&eacute;passer les 60 caract&egrave;res.
  Je le change en « A fully GUI configurable GTK+ file manager ».

  <p>La ligne 12 est l&agrave; o&ugrave; la description va. Celle-ci devrait &ecirc;tre un
  paragraphe qui donne plus de d&eacute;tails sur le paquet. La premi&egrave;re colonne de
  chaque ligne doit &ecirc;tre vide. Il ne peut y avoir de ligne vide, mais vous
  pouvez  mettre un . (point) dans la colonne 2 pour simuler une ligne vide.
  De plus, il ne peut pas y avoir plus d'une ligne vide apr&egrave;s la description
  longue.

  <p>Voici le fichier control mis &agrave; jour:

  <p><example>
  1  Source: gentoo
  2  Section: x11
  3  Priority: optional
  4  Maintainer: Josip Rodin &lt;jrodin@jagor.srce.hr&gt;
  5  Standards-Version: 3.0.1
  6
  7  Package: gentoo
  8  Architecture: any
  9  Depends: ${shlibs:Depends}
  10 Suggests: file
  11 Description: A fully GUI configurable GTK+ file manager
  12  gentoo is a file manager for Linux written from scratch in pure C. It
  13  uses the GTK+ toolkit for all of its interface needs. gentoo provides
  14  100% GUI configurability; no need to edit config files by hand and re-
  15  start the program. gentoo supports identifying the type of various
  16  files (using extension, regular expressions, or the 'file' command),
  17  and can display files of different types with different colors and icons.
  18  .
  19  gentoo borrows some of its look and feel from the classic Amiga file
  20  manager "Directory OPUS" (written by Jonathan Potter).
  </example>
  (J'ai ajout&eacute; les num&eacute;ros de ligne.)

  <sect id="copyright">fichier 'copyright'

  <p>Ce fichier contient les informations sur les ressources amonts, le
  copyright et la licence du paquet.  Le format n'est pas dict&eacute; par les Normes,
  mais son contenu l'est (section 6.5).  Dh_make en cr&eacute;e un par d&eacute;faut, qui
  ressemble &agrave; ceci :

  <p><example>
  1  This package was debianized by Josip Rodin &lt;jrodin@jagor.srce.hr&gt; on
  2  Wed, 11 Nov 1998 21:02:14 +0100.
  3
  4  It was downloaded from &lt;fill in ftp site&gt;
  5
  6  Upstream Author(s): &lt;put author(s) name and email here&gt;
  7
  8  Copyright:
  9
  10 &lt;Must follow here&gt;
  </example>
  (J'ai ajout&eacute; les num&eacute;ros de ligne.)

  <p>Les choses importantes &agrave; ajouter &agrave; ce fichier est l'endroit o&ugrave; vous avez
  trouv&eacute; ce paquet, ainsi que le copyright et la licence d'exploitation r&eacute;elle
  (incluez la en entier).  Si la licence est une des licences de logiciel
  libre populaires comme GNU GPL ou LGPL, BSD ou Artistic, vous pouvez juste
  faire r&eacute;f&eacute;rence au fichier appropri&eacute; dans le r&eacute;pertoire
  /usr/share/common-licenses/, qui existe sur chaque syst&egrave;me Debian. Gentoo
  est disponible sous la Licence Publique G&eacute;n&eacute;rale de GNU (GPL), donc nous
  changeons le fichier en :

  <p><example>
  1  This package was debianized by Josip Rodin &lt;jrodin@jagor.srce.hr&gt; on
  2  Wed, 11 Nov 1998 21:02:14 +0100.
  3
  4  It was downloaded from: ftp://ftp.obsession.se/gentoo/
  5
  6  Upstream Author: Emil Brink &lt;emil@obsession.se&gt;
  7
  8  This software is copyright (c) 1998-99 by Emil Brink, Obsession
  9  Development.
  10
  11 You are free to distribute this software under the terms of
  12 the GNU General Public License.
  13 On Debian systems, the complete text of the GNU General Public
  14 License can be found in /usr/share/doc/common-licenses/GPL file.
  </example>
  (J'ai ajout&eacute; les num&eacute;ros de ligne.)

  <sect id="changelog">changelog

  <p>C'est un fichier requis, qui a un format sp&eacute;cial d&eacute;crit dans le Manuel de
  Cr&eacute;ation de Paquets (section 3.2.3). Ce format est utilis&eacute; par dpkg et
  d'autres programmes pour obtenir le num&eacute;ro de version, de r&eacute;vision, de
  distribution et l'urgence de votre paquet.

  <p>Pour vous, il est aussi important, puisqu'il est bon de documenter toutes
  les modifications que vous avez faites. Cela aidera les gens qui
  t&eacute;l&eacute;chargent votre paquet si il y a des probl&egrave;mes non r&eacute;solus a propos
  desquels ils doivent &ecirc;tre imm&eacute;diatement mis au courant. Ce sera sauv&eacute; sous
  `/usr/share/doc/gentoo/changelog.Debian.gz' dans le paquet binaire.

  <p>Dh_make en cr&eacute;e un par d&eacute;faut, voici &agrave; quoi il ressemble :

  <p><example>
  1  gentoo (0.9.12-1) unstable; urgency=low
  2
  3   * Initial Release.
  4
  5  -- Josip Rodin &lt;jrodin@jagor.srce.hr&gt; Wed, 11 Nov 1998 21:02:14 +0100
  6
  7  Local variables:
  8  mode: debian-changelog
  9  End:
  </example>
  (J'ai ajout&eacute; les num&eacute;ros de ligne.)

  <p>La ligne 1 est le nom du paquet, la version, la distribution et
  l'urgence. Le nom doit correspondre au nom du paquet source, la distribution
  devrait &ecirc;tre `unstable' ou `experimental' (pour l'instant), et l'urgence ne
  devrait pas &ecirc;tre chang&eacute;e &agrave; quoique ce soit de plus haut que `low'. :-)

  <p>Les lignes 3 &agrave; 5 sont l'entr&eacute;e d'audit, o&ugrave; vous documentez les
  modifications faites dans la r&eacute;vision du paquet (pas les modifications
  amonts - il y a un fichier sp&eacute;cial pour cela, cr&eacute;&eacute; par les auteurs amonts,
  install&eacute; comme /usr/share/doc/gentoo/changelog.gz). Les nouvelles lignes
  doivent &ecirc;tre ajout&eacute;es juste avant la premi&egrave;re ligne qui commence avec une
  ast&eacute;risque ('*'). Vous pouvez le faire avec <manref name="dch" section="1">,
  <manref name="emacs" section="1"> (les lignes 7 &agrave; 9 sont les informations de
  mode pour l'&eacute;diteur Emacs), ou tout autre &eacute;diteur de texte. Vous aurez
  quelque chose comme :

  <p><example>
  1  gentoo (0.9.12-1) unstable; urgency=low
  2
  3   * Initial Release.
  4   * This is my first Debian package.
  5   * Adjusted the Makefile to fix $DESTDIR problems.
  6
  7  -- Josip Rodin &lt;jrodin@jagor.srce.hr&gt; Wed, 11 Nov 1998 21:02:14 +0100
  8
  9  Local variables:
  10  mode: debian-changelog
  </example>
  (J'ai ajout&eacute; les num&eacute;ros de ligne.)

  <p>Quand vous distribuez une nouvelle r&eacute;version, vous devriez incr&eacute;menter le
  num&eacute;ro de version. Vous pouvez le faire avec `dch -i' ou explicitement avec
  `dch -v &lt;version&gt;-&lt;r&eacute;vision&gt;` et ins&eacute;rer ensuite les
  commentaires avec votre &eacute;diteur pr&eacute;f&eacute;r&eacute;. Astuce : comment ajouter facilement
  la date dans ce format ? Utilisez `822-date` ou `date -R`.
  
  <p>Les nouvelles informations de version sont ajout&eacute;es au sommet du fichier
  changelog.  Voici ce &agrave; quoi ressemble changelog apr&egrave;s :

  <p><example>
  1  gentoo (0.9.12-2) unstable; urgency=low
  2
  3   * Fixed a glitch in the menu file.
  4
  5  -- Josip Rodin &lt;jrodin@jagor.srce.hr&gt; Wed, 11 Nov 1998 22:15:39 +0100
  6
  7  gentoo (0.9.12-1) unstable; urgency=low
  8
  9   * Initial Release.
  10  * This is my first Debian package.
  11  * Adjusted the Makefile to fix $DESTDIR problems.
  12
  13 -- Josip Rodin &lt;jrodin@jagor.srce.hr&gt; Wed, 11 Nov 1998 21:02:14 +0100
  14
  15 Local variables:
  16 mode: debian-changelog
  </example>
  (J'ai ajout&eacute; les num&eacute;ros de ligne.)

  <p>Vous pouvez en apprendre plus sur les nouvelles versions/r&eacute;visions du
  paquet plus loin dans <ref id="update">.

  <sect id="rules">fichier 'rules'

  <p>Maintenant nous devons examiner les r&egrave;gles que <manref
  name="dpkg-buildpackage" section="1"> va utiliser pour cr&eacute;er vraiment le
  paquet. Ce fichier est en fait un autre Makefile, puisqu'il est ex&eacute;cut&eacute; avec
  'make -f', mais diff&eacute;rent de celui des sources amont.

  <p>Chaque fichier 'rules', comme tout autre Makefile, consiste en plusieurs
  r&egrave;gles indiquant comment construire les sources. Les r&egrave;gles sont des cibles,
  noms de fichiers ou d'actions &agrave; ex&eacute;cuter (par exemple, 'build:' ou
  'install:'). Les r&egrave;gles que vous voulez ex&eacute;cuter doivent &ecirc;tre donn&eacute;es comme
  argument &agrave; la ligne de commande (par exemple, 'rules build' ou 'rules
  install'). Apr&egrave;s le nom de cible, vous pouvez nommer les d&eacute;pendances,
  programme ou fichier dont la cible d&eacute;pend. Apr&egrave;s cela il peut y avoir un
  nombre quelconque de commandes (qui commencent par &lt;tab&gt;!), jusqu'&agrave; ce
  qu'une ligne vide soit trouv&eacute;e. A ce moment, une autre r&egrave;gle commence. Les
  lignes vides ainsi que celles qui commencent par un `#' (cardinal) sont
  consid&eacute;r&eacute;es comme des commentaires et ignor&eacute;es.
  
  <p>Vous &ecirc;tes probablement confus pour l'instant, mais cela va devenir clair
  &agrave; l'examen du fichier 'rules' que dh_make nous donne par d&eacute;faut. Vous
  devriez avoir lu l'entr&eacute;e 'make' dans info pour plus d'information.

  <p>Ce qu'il faut savoir &agrave; propos du fichier rules cr&eacute;&eacute; par df_make, est
  qu'il s'agit juste d'une suggestion.  Il fonctionnera pour des paquets
  simples, mais pour ceux qui sont plus compliqu&eacute;s, vous ne devez pas craindre
  d'y ajouter ou d'en soustraire pour le faire correspondre &agrave; vos besoins.
  Les seules choses que vous ne pouvez pas changer sont les noms des r&egrave;gles,
  car tous les outils utilisent ces noms comme requis par le manuel du
  paquetage.


  <p><example>
  1  #!/usr/bin/make -f
  2  # Made with the aid of dh_make, by Craig Small
  3  # Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
  4  # Some lines taken from debmake, by Christoph Lameter.
  5
  6  # Uncomment this to turn on verbose mode.
  7  #export DH_VERBOSE=1
  8
  9  # This is the debhelper compatability version to use.
  10 export DH_COMPAT=1
  11
  12 build: build-stamp
  13 build-stamp:
  14    dh_testdir
  15
  16    # Add here commands to compile the package.
  17    $(MAKE)
  18
  19    touch build-stamp
  20
  21 clean:
  22    dh_testdir
  23    dh_testroot
  24    rm -f build-stamp
  25
  26    # Add here commands to clean up after the build process.
  27    -$(MAKE) clean
  28
  29    dh_clean
  30
  31 install: build-stamp
  32    dh_testdir
  33    dh_testroot
  34    dh_clean -k
  35    dh_installdirs
  36
  37    # Add here commands to install the package into debian/tmp.
  38    $(MAKE) install DESTDIR=`pwd`/debian/tmp
  39
  40 # Build architecture-independent files here.
  41 binary-indep: build install
  42 # We have nothing to do by default.
  43
  44 # Build architecture-dependent files here.
  45 binary-arch: build install
  46 #  dh_testversion
  47    dh_testdir
  48    dh_testroot
  49 #  dh_installdebconf
  50    dh_installdocs
  51    dh_installexamples
  52    dh_installmenu
  53 #  dh_installemacsen
  54 #  dh_installpam
  55 #  dh_installinit
  56    dh_installcron
  57    dh_installmanpages
  58    dh_installinfo
  59 #  dh_undocumented
  60    dh_installchangelogs
  61    dh_link
  62    dh_strip
  63    dh_compress
  64    dh_fixperms
  65    # You may want to make some executables suid here.
  66    dh_suidregister
  67 #  dh_makeshlibs
  68    dh_installdeb
  69 #  dh_perl
  70    dh_shlibdeps
  71    dh_gencontrol
  72    dh_md5sums
  73    dh_builddeb
  74
  75 binary: binary-indep binary-arch
  76 .PHONY: build clean binary-indep binary-arch binary install
  </example>
  (J'ai ajout&eacute; les num&eacute;ros de ligne).

  <p>Vous avez probablement l'habitude de la ligne 1 avec les scripts shell et
  perl. Cela signifie que ce fichier doit &ecirc;tre ex&eacute;cut&eacute; par /usr/bin/make.

  <p>Les lignes 12 &agrave; 19 d&eacute;crivent la r&egrave;gle 'build' (et sa fille build-stamp)
  qui ex&eacute;cutent le fichier Makefile de l'application pour compiler le
  programme.

  <p>La r&egrave;gle 'clean', sp&eacute;cifi&eacute;e aux lignes 21-29, efface tous les binaires
  inutiles et les trucs g&eacute;n&eacute;r&eacute;s automatiquement, laiss&eacute;s l&agrave; par une
  construction du paquet.  Cette r&egrave;gle doit &ecirc;tre op&eacute;rationnelle tout le temps
  (m&ecirc;me si la les r&eacute;pertoires sources <em>sont</em> nettoy&eacute;s.!), donc vous
  devriez utiliser les options pour forcer (p.e. pour rm, c'est `-f') ou
  pour ignorer la valeur de retour (avec un `-' devant le nom de la commande).

  <p>Le processus d'installation, la r&egrave;gle 'install', commence &agrave; la ligne 31.
  Fondamentalement, elle ex&eacute;cute la r&egrave;ge install du fichier Makefile du
  programme, mais installe dans le r&eacute;pertoire `pwd`/debian/tmp - c'est pour
  cette raison que nous avons sp&eacute;cifi&eacute; $(DESTDIR) comme racine de
  l'installation dans le Makefile de gentoo.
  
  <p>Comme le commentaire le sugg&egrave;re, la r&egrave;gle 'binary-indep' aux lignes 41
  est utilis&eacute; pour construire les paquets ind&eacute;pendants de l'architecture.
  Comme nous n'en avons pas, rien ne sera fait ici.  Si votre paquet est
  `Architecture: all', vous devez inclure dans cette r&egrave;gle toutes les
  commandes pour construire le paquet, et laisser la r&egrave;gle suivante
  (`binary-arch') vide &agrave; la place.

  <p>Ensuite on trouve la r&egrave;gle 'binary-arch', des lignes 45 &agrave; 73, pour
  laquelle nous ex&eacute;cutons plusieurs petits utilitaires du paquet debhelper qui
  font quelques op&eacute;rations sur votre paquet pour le rendre conforme aux Normes
  Debian.

  <p>Les noms commencent par dh_ et la suite indique ce que chaque petit
  utilitaire fait vraiment.  Tout cela est plut&ocirc;t explicite, mais voici
  quelques explications suppl&eacute;mentaires :

  <list>
  <item><manref name="dh_testdir" section="1"> v&eacute;rifie que vous &ecirc;tes dans le
  bon r&eacute;pertoire (i.e. le r&eacute;pertoire racine des sources),
  <item><manref name="dh_testroot" section="1"> v&eacute;rifie que vous avez les
  permissions root, n&eacute;cessaire pour les cibles binaires, et pour le nettoyage,
  <item><manref name="dh_installmanpages" section="1"> copie les pages de
  manuel qu'il peut trouver dans les r&eacute;pertoires sources (attention, ce n'est
  pas un programme intelligent),
  <item><manref name="dh_strip" section="1"> retire les ent&ecirc;tes de d&eacute;boguage
  des fichiers ex&eacute;cutables pour les rendre plus petits,
  <item><manref name="dh_compress" section="1"> gzipe les pages de manuel et
  la documentation plus large que 4 kb,
  <item><manref name="dh_installdeb" section="1"> copie les fichiers relatifs
  au paquet (p.e. les scripts du responsable) sous le r&eacute;pertoire
  debian/tmp/DEBIAN,
  <item><manref name="dh_shlibdeps" section="1"> calcule les d&eacute;pendances
  des librairies et des ex&eacute;cutables,
  <item><manref name="dh_gencontrol" section="1"> g&eacute;n&egrave;re et installe
  le fichier control,
  <item><manref name="dh_md5sums" section="1"> g&eacute;n&egrave;re les sommes de contr&ocirc;le 
  MD5 pour tous les fichiers dans le paquet.
  </list>

  <p>Pour une information plus compl&egrave;te sur ce que font tous ces scripts dh_*,
  et ce que sont leurs options, lisez les pages de manuel.  Il y en a
  d'autres, potentiellement tr&egrave;s utiles, qui ne sont pas mentionn&eacute;s ici.  Si
  vous en avez besoin, lisez la documentation de debhelper.

  <p>La section binary-arch est celle o&ugrave; vous devriez vraiment commenter les
  lignes dont vous n'avez pas besoin.  Pour gentoo, je commente les lignes
  concernant testversion, emacsen, pam, init, cron, manpages, info,
  undocumented, suidregister, makeshlibs, et perl, simplement parce que gentoo
  n'en a pas besoin.  De plus, &agrave; la ligne 60, je dois ajouter 'FIXES', parce
  que c'est le nom du fichier des modifications amont.

  <p>Les deux derni&egrave;res lignes (avec toutes celles qui ne sont pas expliqu&eacute;es
  ici) sont juste des choses plus ou moins n&eacute;cessaires, a propos desquelles
  vous pouvez lire dans le manuel de make, et dans le manuel de paquetage.
  Pour l'instant il n'est pas important d'en savoir plus.


  <chapt id="dother">Autres fichiers dans le r&eacute;pertoire debian/

  <p>Vous verrez qu'il y a plusieurs autres fichiers dans le sous-r&eacute;pertoire
  debian, la plupart d'entres-eux avec le suffixe `.ex', ce qui signifie
  qu'ils sont des exemples.  Si vous souhaitez ou devez utiliser une de ces
  options, examinez-les avec la documentation associ&eacute;e (astuce : le manuel des
  normes), renommez-les pour enlever le suffixe `.ex', et modifiez-les ainsi
  que le fichier rules si n&eacute;cessaire.  Certains de ces fichiers, les plus
  utilis&eacute;s, sont d&eacute;crits dans les sections suivantes.

  <sect id="readdeb">README.Debian

  <p>D'autres d&eacute;tails ou diff&eacute;rences entre le paquet original et votre
  version debianis&eacute;e devraient &ecirc;tre inclus ici. Voici ce que dh_make cr&eacute;e par
  d&eacute;faut :

  <example>
  gentoo for Debian
  ----------------------

  &lt;possible notes regarding this package - if none, delete this file&gt;

  Josip Rodin &lt;jrodin@jagor.srce.hr&gt;, Wed, 11 Nov 1998 21:02:14 +0100
  </example>

  <p>Nous n'avons rien en particulier &agrave; mettre ici - il est permis d'effacer
  le fichier.

  <sect id="conffiles">conffiles

  <p>L'une des choses les plus irritantes a propos des logiciels est que vous
  passez beaucoup de temps et d'efforts pour configurer un programme pour voir
  une mise &agrave; jour d&eacute;truire tous vos changements. Debian r&eacute;sout ce probl&egrave;me en
  marquant les fichiers de configuration de sorte que quand vous mettez &agrave; jour
  un paquet, il vous sera demand&eacute; si vous voulez gardez votre vieille
  configuration ou pas. Vous faites ceci en entrant le chemin complet de
  chaque fichier de configuration (en g&eacute;n&eacute;ral sous /etc), un par ligne dans un
  fichier nomm&eacute; conffiles.
  
  <p>Gentoo a un fichier de configuration, /etc/gentoorc, et nous le mettons
  dans `conffiles'. Il n'est pas n&eacute;cessaire d'avoir ce fichier si
  votre programme n'a pas de fichier de configuration.

  <sect id="dirs">dirs

  <p>Ce fichier sp&eacute;cifie les r&eacute;pertoires dont nous avons besoin mais que la
  proc&eacute;dure d'installation normale (make install) ne cr&eacute;e pas.
  
  <p>Par d&eacute;faut, il ressemble &agrave; ceci :

  <p><example>
  usr/bin
  usr/sbin
  </example>

  <p>Remarquez que le pr&eacute;fixe slash n'est pas inclus. Nous devrions normalement
  le changer comme ceci :

  <p><example>
  usr/X11R6/bin
  usr/X11R6/man/man1
  </example>

  mais ces r&eacute;pertoires sont d&eacute;j&agrave; cr&eacute;&eacute;s dans Makefile, donc nous n'avons pas
  besoin de ce fichier, et pouvons l'effacer.

  <sect id="manpage">manpage.1.ex

  <p>Les fichiers finissant en *.ex sont des exemples pour savoir comment
  ajouter ce genre de support dans le paquet. Pour utiliser l'un d'entre
  eux, &eacute;ditez le et retirez l'extension .ex.  Si vous ne voulez pas
  l'utiliser, effacez-le.

  <p>Votre programme devrait avoir une page de manuel. S'il n'en a pas, ceci
  est un squelette que vous pouvez remplir. Lisez la page de manuel de <manref
  name="man" section="7"> pour une br&egrave;ve description de la cr&eacute;ation d'une page
  de manuel. Faites attention de donner &agrave; ce fichier le nom du programme et
  l'extension de la section dans laquelle il doit aller. Voici une courte
  liste :

  <p><example>
  Section |     Description      |     Notes
     1     Commandes utilisateur   Commandes ou scripts ex&eacute;cutables.
     2     Appel syst&egrave;me           Fonctions fournies par le noyau.
     3     Appel librairie         Fonctions des librairies syst&egrave;me.
     4     Fichiers sp&eacute;ciaux       D'ordinaire trouv&eacute;s dans /dev.
     5     Formats de fichiers     Par ex. le format /etc/password.
     6     Jeux                    Ou d'autres programmes frivoles.
     7     Paquets de macros       Comme les macros de man.
     8     Administration syst&egrave;me  Des programmes d'habitude ex&eacute;cut&eacute;es par root.
     9     Routines noyau          Appels non standards et routines internes.
  </example>

  <p>Donc, la page de manuel de gentoo devrait &ecirc;tre appel&eacute;e gentoo.1, ou
  gentoo.1x parce que c'est un programme X11. Il n'y avait pas de page de
  manuel gentoo.1 dans les sources original, donc j'en ai &eacute;crit un &agrave; partir de
  l'exemple et de la documentation amont.

  <sect id="menu">menu.ex

  <p>Les utilisateurs de X Window ont un gestionnaire de fen&ecirc;tres avec un
  menu qui peut &ecirc;tre configur&eacute;. S'ils ont install&eacute;s le paquet 'menu' de Debian,
  un ensemble de menu pour chaque programme sur le syst&egrave;me sera cr&eacute;&eacute;
  pour eux. Ceci n'est pas requis pas le r&egrave;glement Debian, mais les
  utilisateurs appr&eacute;cieront certainement. Nous pouvons ajouter Gentoo aux
  menus en &eacute;ditant ce fichier. Voici le d&eacute;faut que dh_make cr&eacute;e :

  <p><example>
  ?package(gentoo):needs=X11|text|vc|wm section=Apps/see-menu-manual\
    title="gentoo" command="/usr/bin/gentoo"
  </example>

  <p>Le premier champs sp&eacute;cifie le genre d'interface dont le programme a
  besoin (i.e. text ou X11). Le suivant est le menu et le sous-menu dans
  lesquels l'entr&eacute;e devrait appara&icirc;tre. La liste courante des sections se
  trouve dans /usr/share/doc/debian-policy/menu-policy.html/ch2.html#s2.1. Le
  troisi&egrave;me est le nom du programme. Le quatri&egrave;me est l'ic&ocirc;ne pour le
  programme ou rien s'il n'en n'a pas. Le cinqui&egrave;me est le texte r&eacute;elle qui
  appara&icirc;tra dans le menu. Le sixi&egrave;me est la commande qui lance le programme.

  <p>Maintenant nous changeons l'entr&eacute;e menu en ceci :

  <p><example>
  ?package(gentoo):needs=X11 section=Apps/Misc \
    title="Gentoo" command="/usr/X11R6/bin/gentoo"
  </example>

  <p>Voir <manref name="menufile" section="5">, <manref name="update-menus" section="1">
  et /usr/share/doc/debian-policy/menu-policy.html/ pour plus d'information.


  <sect id="watch">watch.ex

  <p>Vous pouvez utiliser ce fichier en plus des programmes <manref name="uscan"
  section="1"> et de <manref name="uupdate" section="1"> (dans le paquet
  devscripts) pour surveiller le site duquel vous avez obtenu les sources.
  Voici ce que j'y ai mis :

  <p><example>
  # watch control file for uscan
  # Site                  Directory       Pattern                Version Script
  ftp.obsession.se        /gentoo         gentoo-(.*)\.tar\.gz   debian  uupdate
  </example>

  <p>Astuce: connectez-vous &agrave; Internet, et essayez d'ex&eacute;cuter 'uscan' dans le
  r&eacute;pertoire du programme une fois que vous avez cr&eacute;er ce fichier.  Et lisez
  les pages de manuel.

  <sect id="doc-base">ex.doc-base

  <p>Si votre paquet a de la documentation sous format HTML ou autre (&agrave;
  l'exclusion des pages de manuel et des documents info), vous devriez
  utiliser le fichier `doc-base' pour l'enregistrer, de sorte que
  l'utilisateur puisse le trouver avec par exemple <manref name="dhelp"
  section="1"> ou <manref name="dwww" section="1">.

  <p>Voici ce &agrave; quoi le fichier doc-base de gentoo ressemble :

  <p><example>
  Document: gentoo
  Title: Gentoo Manual
  Author: Emil Brink
  Abstract: This manual describes what Gentoo is, and how it can be used.
  Section: Apps/Tools

  Format: HTML
  Index: /usr/share/doc/gentoo/html/index.html
  Files: /usr/share/doc/gentoo/html/*.html
  </example>

  <p>Pour plus d'information sur le format de ce fichier, voir <manref
  name="install-docs" section="1"> et le manual de doc-base, dans
  /usr/doc/doc-base/doc-base.html/index.html.

  <sect id="maintscripts">postinst.ex, preinst.ex, postrm.ex, prerm.ex

  <p>Ces fichiers sont nomm&eacute;s scripts de responsable.  Ils sont plac&eacute;s dans la
  zone de contr&ocirc;le du paquet et sont ex&eacute;cut&eacute;s par dpkg lorsque votre paquet
  est install&eacute;, mis &agrave; jour ou supprim&eacute;.
  
  <p>Pour l'instant, vous devriez &eacute;viter les scripts de responsable si vous le
  pouvez parce qu'ils ont tendance &agrave; &ecirc;tre complexes.  Pour plus d'information
  regardez dans le Manuel de Cr&eacute;ation de Paquets, et examinez les fichiers
  d'exemples fournis par dh_make.

  <p>Nous sommes maintenant pr&ecirc;t pour construire le paquet.

  <chapt id="final">&Eacute;tapes finales

  <sect id="build">Construire le paquet

  <p>Allez dans le r&eacute;pertoire principal du programme et lancez ceci :

  <p><example>
  dpkg-buildpackage -rfakeroot
  </example>

  <p>Ceci fera tout pour vous, vous avez juste &agrave; entrer votre cl&eacute; secr&egrave;te
  PGP, deux fois. Une fois que c'est fait, vous verrez cinq fichiers dans le
  r&eacute;pertoire ~/debian :

  <p><list>
  <item><em>gentoo_0.9.12-1_i386.deb</em>
  <p>Ceci est le paquet binaire compl&eacute;t&eacute;. Vous pouvez utiliser dpkg ou dselect
  pour l'installer ou le retirer juste comme tout autre paquet.

  <item><em>gentoo_0.9.12.orig.tar.gz</em>
  <p>Ceci est le code source original rassembl&eacute; de sorte que si quelqu'un
  d'autre veut recr&eacute;er votre paquet depuis le d&eacute;but, il le peut. Ou si il
  n'utilise pas le syst&egrave;me de paquet Debian, mais a besoin de t&eacute;l&eacute;charger
  le code source et de le compiler.

  <item><em>gentoo_0.9.12-1.dsc</em>
  <p>Ceci est un r&eacute;sum&eacute; du contenu du code source. Ce fichier est g&eacute;n&eacute;r&eacute; &agrave;
  partir du fichier gentoo-0.9.12/debian/control, et est utilis&eacute; pour
  d&eacute;compresser les sources avec <manref name="dpkg-source" section="1">. Ceci
  est un fichier sign&eacute; avec PGP, de sorte que les gens peuvent &ecirc;tre s&ucirc;rs
  qu'il s'agit bien du votre.

  <item><em>gentoo_0.9.12-1.diff.gz</em>
  <p>Ce fichier compress&eacute; contient chacune des additions que vous avez faites
  au code source original, sous une forme connue comme « diff&eacute;rence unifi&eacute;e ».
  Il est cr&eacute;e et utilis&eacute; par <manref name="dpkg-source" section="1">.

  <item><em>gentoo_0.9.12-1_i386.changes</em>
  <p>Ce fichier contient toutes les modifications faites dans la r&eacute;vision
  courante du paquet, et est utilis&eacute; par les programmes de maintenance des
  archives FTP Debian pour y installer les paquets binaires et sources.  Il
  est partiellement g&eacute;n&eacute;r&eacute; &agrave; partir du fichier gentoo-0.9.12/debian/changelog
  et du fichier .dsc.

  <p>Au fur et &agrave; mesure que vous travaillez sur le paquet, son comportement va
  changer et de nouvelles capacit&eacute;s seront ajout&eacute;es. Les gens qui t&eacute;l&eacute;chargent
  votre paquet peuvent lire ce fichier et voir ce qui a chang&eacute;.  Les longues
  cha&icirc;nes de chiffres sont des sommes MD5 pour les fichiers mentionn&eacute;s. Les
  personnes t&eacute;l&eacute;chargeant vos fichiers peuvent les tester avec <manref
  name="md5sum" section="1"> et si les fichiers ne correspondent pas, ils
  sauront que le fichier a &eacute;t&eacute; corrompu ou qu'il a &eacute;t&eacute; pirat&eacute;. Ce fichier est
  sign&eacute; avec PGP, de sorte que les gens peuvent &ecirc;tre encore plus s&ucirc;rs qu'il
  s'agit bien du votre.
  </list>

  <p>Avec un paquet large, vous ne voudrez sans doute pas reconstruire depuis
  le d&eacute;but chaque fois que vous faites une petite modification.  Pour tester,
  vous pouvez faire un fichier .deb sans reconstruire les sources amonts comme
  ceci :

  <p><example>
  fakeroot debian/rules binary
  </example>

  <p>Assurez-vous juste que votre r&egrave;gle `install' n'a *pas* de fille
  `install-stamp' (c'est en standard aujourd'hui), pour garantir que `dh_clean
  -k' est ex&eacute;cut&eacute; chaque fois.  Et une fois que vous en avez fini avec vos
  r&eacute;glages, n'oubliez pas de reconstruire en suivant la proc&eacute;dure correcte,
  pour pouvoir t&eacute;l&eacute;charger correctement.

  <sect id="checkit">Contr&ocirc;ler les erreurs du paquet

  <p>Lancez <manref name="lintian" section="1"> sur votre fichier .changes; ce
  programme va examiner un grand nombre d'erreurs de paquetage courantes. La
  commande est :

  <p><example>
  lintian -i gentoo_0.9.12-1_i386.changes
  </example>

  <p>Bien s&ucirc;r, remplacez le nom de fichier par celui du fichier de changements
  g&eacute;n&eacute;r&eacute; pour votre paquet.  S'il s'av&egrave;re qu'il y a des erreurs (les lignes
  commen&ccedil;ant avec E:), lisez l'explication (les lignes N:), corrigez les
  erreurs, et reconstruisez comme d&eacute;crit dans <ref id="build">. S'il y a des
  lignes qui commencent avec W:, il s'agit de mises en garde, donc vous pouvez
  &ecirc;tre s&ucirc;r que votre paquet est bon (mais il n&eacute;cessite certainement des
  modifications mineures).

  <p>Remarquez que vous pouvez reconstruire le paquet avec dpkg-buildpackage
  et lancer lintian en une seule commande <manref name="debuild" section="1">.

  <p>Regardez dans votre paquet en utilisant un gestionnaire de fichiers comme
  <manref name="mc" section="1"> ou d&eacute;compressez-le dans une place temporaire
  en utilisant <manref name="dpkg-deb" section="1">.  Cherchez avant tout les
  fichiers inutiles &agrave; la fois dans les paquets binaire et source, au cas o&ugrave;
  les choses se seraient mal pass&eacute;es et que des crasses n'auraient pas &eacute;t&eacute;
  nettoy&eacute;es.  Astuce: `zgrep ^+++ ../gentoo_0.9.12-1.diff.gz` vous donnera la
  liste de vos modifications/additions au fichiers sources, et `dpkg-deb -c
  gentoo_0.9.12-1_i386.deb` la liste des fichiers dans le paquet.

  <p>Installez le paquet pour le tester vous-m&ecirc;me, par exemple en utilisant
  <manref name="debi" section="1"> en tant que root.  Essayez de l'installer
  sur d'autres machines que la votre et v&eacute;rifier attentivement chaque
  avertissement ou erreur &agrave; l'installation ou en ex&eacute;cutant le programme.

  <p>Plus tard, quand vous construisez une nouvelle version, vous devriez
  faire les choses suivantes pour assurer une mise &agrave; jour de base de votre
  paquet :

  <list>
  <item>mettez &agrave; jour &agrave; partir de la version pr&eacute;c&eacute;dente (et &agrave; partir de la
  version de la derni&egrave;re distribution Debian),
  <item>revenez &agrave; la version pr&eacute;c&eacute;dente.
  <item>installez le paquet comme un nouveau paquet (i.e., sans version
  pr&eacute;c&eacute;dente d'install&eacute;e),
  <item>retirez le, r&eacute;installez le &agrave; nouveau, et puis purgez le.
  </list>

  <sect id="upload">Envoyer votre paquet

  <p>Maintenant que vous avez test&eacute; votre nouveau paquet en d&eacute;tail, vous
  devez t&eacute;l&eacute;charger ces fichiers &agrave; master.debian.org, en utilisant <manref
  name="dupload" section="1">. D'abord vous devez cr&eacute;er le fichier de
  configuration d'upload, ~/.dupload.conf.  Mettez-y quelque chose comme ceci :

  <p><example>
  package config;
  $default_host = "master";
  
  $cfg{master}{"method"} = "scpb";
  $cfg{master}{"login"} = "joy";
  $cfg{master}{"visibleuser"} = "jrodin";
  $cfg{master}{"visiblename"} = "jagor.srce.hr";
  $cfg{master}{"fullname"} = "Josip Rodin";
  
  $cfg{non-us}{"method"} = "scpb";
  $cfg{non-us}{"login"} = "joy";
  $cfg{non-us}{"visibleuser"} = "jrodin";
  $cfg{non-us}{"visiblename"} = "jagor.srce.hr";
  $cfg{non-us}{"fullname"} = "Josip Rodin";
  
  1;
  </example>

  <p>Bien sur, remplacez mes informations personnelles par les votre, et lisez
  la page de manuel <manref name="dupload.conf" section="5"> pour comprendre
  ce que chacune de ces options signifie.

  <p>Puis connectez vous &agrave; votre fournisseur Internet et lancez cette
  commande :

  <p><example>
  dupload --to master gentoo_0.9.12-1_i386.changes
  </example>

  <p>Dupload v&eacute;rifie que les sommes md5 des fichiers sont identiques &agrave; celles
  du fichier .changes, pour qu'il puisse vous avertir de reconstruire comme
  d&eacute;crit dans <ref id="build"> et qu'il charge le fichier correctement.

  <p>Dupload vous demandera pour votre mot de passe sur master.debian.org,
  t&eacute;l&eacute;chargera vos paquets, et donnera une annonce courte de votre
  t&eacute;l&eacute;chargement sur <email/debian-devel-changes@lists.debian.org/ si
  n&eacute;cessaire.

  <p>Si vous vivez en Europe, vous pouvez utiliser d'autres queues de
  t&eacute;l&eacute;chargement &agrave; la place de master. Pour des d&eacute;tails lisez <manref
  name="dupload.conf" section="5"> et la R&eacute;f&eacute;rence du D&eacute;veloppeur.

  <sect id="update">Mettre &agrave; jour le paquet

  <p>Disons qu'un rapport de bogue a &eacute;t&eacute; rempli pour votre paquet, #54321, et
  qu'il d&eacute;crit un probl&egrave;me que vous pouvez r&eacute;soudre.  Pour cr&eacute;er une nouvelle
  r&eacute;vision du paquet, vous devez:

  <list>
  <item>Corriger le probl&egrave;me dans le paquet source, bien s&ucirc;r.
  
  <item>Ajouter une nouvelle r&eacute;vision dans le fichier changelog Debian, avec
  `dch -i', et inclure une courte description du bug et de la solution,
  suivie par ceci : 'Closes: #54321'.  De cette mani&egrave;re, le rapport de bogue
  sera automatiquement ferm&eacute; par le logiciel de maintenance des archives au
  moment ou votre paquet sera accept&eacute; dans l'archive Debian.

  <item>Recommencez ce que vous aviez fait dans <ref id="build">, <ref
  id="checkit">, et <ref id="upload">.  La diff&eacute;rence est que cette fois,
  l'archive des sources originales ne sera pas inclue, car elle n'a pas &eacute;t&eacute;
  chang&eacute;e et est d&eacute;j&agrave; dans l'archive Debian.
  </list>

  <p>Consid&eacute;rons maintenant une autre situation, l&eacute;g&egrave;rement plus compliqu&eacute;e -
  une nouvelle version amont est disponible, et bien s&ucirc;r vous voulez en faire
  un paquet.  Vous devez donc :

  <list>
  <item>t&eacute;l&eacute;charger les sources et mettre l'archive source (par exemple nomm&eacute;e
  `gentoo-0.9.13.tar.gz') dans le r&eacute;pertoire au dessus des anciennes sources
  (par exemple ~/debian/).

  <item>Entrez dans le r&eacute;pertoire source ancien, et lancez:

  <example>
  uupdate -u gentoo-0.9.13.tar.gz
  </example>

  Bien s&ucirc;r, remplacez le nom de fichier par celui de l'archive source de votre
  programme.  <manref name="uupdate" section="1"> va correctement renommer
  cette archive, essayer d'appliquer les modifications de votre pr&eacute;c&eacute;dent
  fichier .diff.gz, et mettre &agrave; jour le nouveau fichier debian/changelog.

  <item>Allez dans le r&eacute;pertoire `../gentoo-0.9.13', l'arbre des sources du
  nouveau paquet, et recommencez ce que vous aviez fait dans <ref id="build">,
  <ref id="checkit"> et <ref id="upload">.
  </list>

  <p>Remarquez que si vous configurez `debian/watch' comme indiqu&eacute; dans <ref
  id="watch">, vous pouvez lancer <manref name="uscan" section="1"> pour
  automagiquement chercher les nouvelles sources, les t&eacute;l&eacute;charger et ex&eacute;cuter
  uupdate dessus.

  <sect id="whereishelp">O&ugrave; demander de l'aide

  <p>Avant de vous d&eacute;cider &agrave; poser une question dans un lieu public, s.v.p.
  RTFM. Ceci inclut la documentation sous /usr/share/doc/dpkg,
  /usr/share/doc/debian, /usr/share/doc/debhelper et les pages de
  manuel/d'info pour tous les programmes mentionn&eacute;s dans cet article. Quand
  vous recevez un rapport de bogue (oui, un rapport de bogue r&eacute;el!) vous
  saurez qu'il est temps de plonger dans <url name="Syst&egrave;me de Suivi de Bogues
  Debian" id="http://www.debian.org/Bugs/";> et lisez la documentation l&agrave;, pour
  &ecirc;tre &agrave; m&ecirc;me de g&eacute;rer les rapports efficacement.

  <p>En joignant la liste de discussion Debian Mentors &agrave;
  <email/debian-mentors@lists.debian.org/ vous pouvez joindre des d&eacute;veloppeurs
  Debian exp&eacute;riment&eacute;s qui vous aideront avec les questions que vous pouvez
  avoir.  Vous pouvez vous y inscrire en envoyant un courriel &agrave;
  <email/debian-mentors-request@lists.debian.org/ avec le mot 'subscribe' dans
  le sujet du message.

  <p>Si vous avez encore des questions, posez les sur la liste de discussion
  Debian Developers &agrave; <email/debian-devel@lists.debian.org/. Vous pouvez vous y
  inscrire en envoyant un courriel &agrave;
  <email/debian-devel-request@lists.debian.org/ avec le mot 'subscribe' dans
  le sujet du message. Si vous &ecirc;tes d&eacute;j&agrave; un d&eacute;veloppeur Debian, vous devriez y
  &ecirc;tre inscrit de toute mani&egrave;re.

  <p>M&ecirc;me si tout marche bien, il est temps de commencer &agrave; prier. Pourquoi ?
  Parce que dans quelques heures (ou jours) les utilisateurs du monde entier
  vont commencer &agrave; utiliser votre paquet, et si vous avec fait des erreurs
  critiques vous serez bombard&eacute; par les courriels d'utilisateurs Debian
  furieux... Je plaisante. :-)

  <p>Relaxez-vous et soyez pr&ecirc;t pour les rapports de bogues, parce qu'il y aura
  beaucoup plus de travail &agrave; faire avant qu'il soit parfaitement conforme
  aux r&egrave;gles Debian (une fois encore, lisez la <em>documentation r&eacute;elle</em>
  pour les d&eacute;tails). Bonne chance !
 </book>

</debiandoc>

Reply to: