  mini-HOWTO Comment graver un CD-ROM RedHat
  Morten Kjeldgaard, mok@imsb.au.dk et Peter von der Ah,
  pahe+rhcd@daimi.au.dk Traduction franaise : Thierry Danis
  danis@mail.dotcom.fr
  v.00, 9 septembre 1998, traduction franaise du 12 dcembre
  1998

  Ce document explique comment fabriquer un CD-ROM de la distribution
  RedHat quivalent  ceux que vous pouvez vous procurer directement
  auprs de Red Hat.  Vous y trouverez une description de la structure
  des fichiers de la distribution, ainsi que la faon de procder pour
  inclure dans celle-ci des RPM  jour. Les prrequis sont une solide
  connexion  l'internet et un graveur de CD.
  ______________________________________________________________________

  Table des matires


  1. Introduction

  2. Structure du site FTP de RedHat

     2.1 La racine
     2.2 Le rpertoire "RedHat" -- corps principal de la distribution

  3. Les paquets RPM

  4. Comment faire une copie locale d'une distribution ?

  5. Mettre  jour des paquets

     5.1 Vrifier les modes d'accs aux fichiers
     5.2 Remplacer les RPM mis  jour
     5.3 Regnrer le fichier hdlist

  6. Enfin : gravage du CD

  7. Installation depuis le CD-ROM

  8. AVERTISSEMENT



  ______________________________________________________________________

  11..  IInnttrroodduuccttiioonn


  Vous pouvez avoir plusieurs raisons de faire vos propres CD-ROM. Vos
  poches sont peut-tre perces et vous ne voulez pas dbourser les 50
  dollars de la distribution RedHat <http://www.redhat.com/>.  Vous
  pouvez aussi avoir besoin d'un CD-ROM avec les mises  jour les plus
  rcentes pour la dernire distribution. C'est d'autant plus vrai
  qu'aprs chaque version importante de la RedHat, de nombreuses mises 
  jour sont sorties, la plupart d'entre elles tant lies  des
  problmes de scurit. Allez jeter un oeil au fichier
  updates/00README.errata
  <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/updates/00README.errata>.
  Il existe un errata spcifique  chaque plate-forme supporte. Allez
  faire un tour par exemple sur la page d'errata pour Intel
  <ftp://ftp.redhat.com/pub/redhat/updates/5.1/i386/00README.errata>.





  22..  SSttrruuccttuurree dduu ssiittee FFTTPP ddee RReeddHHaatt


  Dans l'esprit de la communaut linuxienne, Red Hat Software a mis 
  disposition sur son site FTP ses distributions de Linux pour plusieurs
  plate-formes. Elles sont toutes accessibles depuis la racine de
  l'arborescence.


  22..11..  LLaa rraacciinnee


  Le rpertoire de plus haut niveau pour la RedHat 5.1
  (pub/redhat/redhat-5.1 <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/>)
  contient les distributions pour les diffrentes plate-formes ainsi
  qu'un rpertoire de mises  jour et de corrections pour des paquets
  sortis depuis cette version 5.1.



       SRPMS/     alpha/     i386/      sparc/     updates/




  Nous allons baser notre discours sur la distribution i386. La dmarche
  explique dans ce document devrait tre la mme pour toutes les
  architectures supportes par Red Hat (Alpha, SPARC, ppc, etc.) ; elle
  n'a cependant t teste que sur architecture i386 (les auteurs
  seraient intresss par tout complment d'information). La racine de
  l'arborescence i386 ressemble  ce qui suit :



       -rw-r--r--   8 ftpuser  ftpusers     19686 May 27  1997 COPYING
       -rw-r--r--   1 ftpuser  ftpusers      3023 May  7 09:58 README
       -rw-r--r--  10 ftpuser  ftpusers      2751 Sep 18  1997 RPM-PGP-KEY
       drwxr-xr-x   5 ftpuser  ftpusers        96 Jul 15 08:34 RedHat/
       drwxr-xr-x   5 ftpuser  ftpusers      8192 Jul 15 08:35 doc/
       drwxr-xr-x   5 ftpuser  ftpusers      8192 Jul 15 08:35 dosutils/
       drwxr-xr-x   5 ftpuser  ftpusers      8192 Jul 15 08:33 gnome/
       drwxr-xr-x   2 ftpuser  ftpusers        96 Jun  7 02:47 images/
       drwxr-xr-x   4 ftpuser  ftpusers        96 Jun  5 12:24 misc/




  Le rpertoire doc est une mine d'information. Point important, le
  manuel d'installation de la RedHat au format HTML se trouve dans le
  rpertoire doc/rhmanual/manual/
  <ftp://ftp.redhat.com/pub/redhat/redhat-5.1/i386/doc/rhmanual/manual/doc000.htm>.
  On y trouvera aussi de nombreuses FAQ (Foire Aux Questions) ainsi que
  tous les HOWTO et mini-HOWTO.

  Le rpertoire images contient les images binaires des disquettes de
  dmarrage. Dans les dernires distributions (5.1 et au-del), deux
  images sont disponibles. L'image de dmarrage s'appelle boot.img. Elle
  est ncessaire lorsque l'installation se fait directement depuis le
  CD-ROM. L'utilisateur pourra tre amen  fournir une disquette sur
  laquelle l'image supplmentaire (supp.img) aura t recopie si
  l'installation est lance depuis un disque dur local, via NFS ou par
  FTP. Reportez-vous  la section ``Installation depuis le CD-ROM'' pour
  plus de dtails.

  Le rpertoire misc contient les sources et les excutables d'un
  certain nombre de programmes utiliss lors de l'installation.
  22..22..  LLee rrppeerrttooiirree ""RReeddHHaatt"" ---- ccoorrppss pprriinncciippaall ddee llaa ddiissttrriibbuuttiioonn


  La partie la plus importante de l'arborescence se trouve dans le
  rpertoire RedHat :



       drwxr-xr-x   2 ftpuser  ftpusers     24576 Jul 15 08:35 RPMS/
       drwxr-xr-x   2 ftpuser  ftpusers      8192 Jul 15 08:32 base/
       -rw-rw-rw-  59 ftpuser  ftpusers         0 Aug 15 14:21 i386
       drwxr-xr-x   4 ftpuser  ftpusers        96 Jun  5 12:24 instimage/




  Les constituants principaux de la distribution sont situs dans le
  rpertoire RPMS. Ils sont forms d'un ensemble de fichiers au format
  RPM (Redhat Package Manager). Un paquet RPM est typiquement constitu
  d'excutables binaires, accompagns de leur documentation et de
  fichiers de configuration. Reportez-vous  la section ``Les paquets
  RPM'' pour plus de renseignements.

  Le rpertoire base regroupe plusieurs fichiers 'prcompils' utiliss
  lors de l'installation (par exemple, le fichier comps dcrit les
  _c_o_m_p_o_s_a_n_t_s (groupes de paquets) utiliss pendant la phase "Choix des
  paquets  installer" ("Choose packages to install").  Le fichier
  hdlist est un autre de ces fichiers : il contient la plupart des
  champs d'en-tte de chacun des paquets RPM du rpertoire RPMS).

  Cela signifie que le processus d'installation peut connatre les
  inter-dpendances entre paquets simplement en consultant le fichier
  hdlist plutt que de parcourir tous les paquets prsents ; c'est
  particulirement pratique dans le cas d'une installation par FTP.

  Une autre utilit du fichier hdlist est de pouvoir associer aux noms
  des paquets des noms de fichiers (perl  perl-5.004-6.i386.rpm par
  exemple). Cela signifie que si vous dsirez effectuer des mises  jour
  (voir section ``Mettre  jour des paquets'') ou ajouter vos propres
  paquets au rpertoire RPMS, vous devrez reconstruire le fichier
  hdlist.  La faon de procder est dcrite plus loin dans le chapitre
  ``Regnrer le fichier hdlist''.

  Le rpertoire instimage contient une arborescence "live" ncessaire 
  la procdure d'installation (on y trouve un certain nombre de
  programmes et de librairies dynamiques).


  33..  LLeess ppaaqquueettss RRPPMM


  La plus grande partie de la distribution est constitue de paquets RPM
  (Redhat Package Manager). Classiquement, un paquet RPM est form
  d'excutables binaires, de leur documentation associe et de fichiers
  de configuration.  Le programme rpm <http://www.rpm.org> est un
  gestionnaire de paquets trs puissant, qui peut tre utilis pour
  installer, consulter, vrifier, mettre  jour, effacer ou construire
  des paquets (logiciels) au format RPM. rpm maintient une base de
  donnes des paquets manipuls ; de cette manire, les informations
  relatives aux logiciels installs sont toujours disponibles.

  Les fichiers RPM prsents dans une distribution ont t construits sur
  un systme fonctionnant sous cette distribution. C'est un point
  important dans la mesure o la plupart des programmes compils
  s'appuyent sur les librairies dynamiques (shared libraries). A partir
  de la version 5.0, Red Hat se base sur la nouvelle librairie C du GNU
  (version 2, grant proprement les donnes en 64 bits). La version de
  cette librairie est communment appele glibc, ou, sous Linux, libc 6.
  L'dition de liens de tous les excutables de la distribution a t
  faite en utilisant cette librairie.  Si vous essayez d'installer des
  programmes d'autres distributions, vous courez le risque que rien ne
  marche,  moins d'avoir pris la prcaution d'installer le paquet libc5
  pour compatibilit ascendante.

  Les noms des paquets RPM contiennent le suffixe ._a_r_c_h.rpm ; _a_r_c_h est
  l'architecture (i386 pour les binaires Intel). Les paquets que vous
  installez doivent correspondre aux versions des librairies dynamiques
  prsentes sur votre machine. Le programme rpm <http://www.rpm.org>
  s'assure en gnral que c'est le cas. Il y a cependant moyen d'outre-
  passer ses vrifications, mais vous devez avoir bien conscience de ce
  que vous risquez si vous dcidez d'agir ainsi. Nanmoins, si vous
  utilisez le disque d'installation RedHat, les paquets corrects seront
  installs sur votre machine.

  Si vous vous apercevez qu'un paquet n'est pas prsent au terme de
  l'installation, ne dsesprez pas. Vous pouvez  tout moment installer
  (en tant que root) des paquets RPM :



       rpm --install  WindowMaker-0.18-1b.i386.rpm




  Vous pouvez aussi faire l'installation directement depuis l'internet,
  si vous connaissez l'URL du paquet :



       rpm --install ftp://rufus.w3.org/redhat-contrib/noarch/mirror-2.9-2.noarch.rpm




  Une variante des paquets RPM contient les sources d'origine qui ont
  servi  fabriquer un paquet binaire. Ces paquets possdent le suffixe
  .src.rpm et sont situs dans le rpertoire SRPMS. Il n'est pas
  ncessaire qu'ils se trouvent sur le CD-ROM d'installation. De toute
  faon, il n'y a pas suffisamment de place pour les y faire tenir.
  Bien entendu, vous pourrez graver un second CD-ROM avec les SRPMS.


  44..  CCoommmmeenntt ffaaiirree uunnee ccooppiiee llooccaallee dd''uunnee ddiissttrriibbuuttiioonn ??


  Vous devez recopier la distribution sur un disque inscriptible
  accessible par la machine possdant le graveur de CD (tonnant non ?).
  Si vous voulez y mettre les dernires mises  jour, l'arborescence
  devra aussi tre accessible en criture depuis votre machine Linux
  (disque local, partition NFS, disque JAZ...).

  Vous pouvez ou bien recopier le contenu d'un CD-ROM RedHat, ou bien
  rcuprer la distribution par FTP. Si vous choisissez cette seconde
  solution, le meilleur moyen pour avoir une copie correcte est
  d'utiliser le paquet mirror.

  mirror est un script volu en perl qui compare le contenu d'une
  arborescence avec celui d'une rfrence sur une autre machine. Il
  utilise FTP pour rcuprer les fichiers qui sont sur le site distant
  et qui sont absents du site local, il supprime les fichiers locaux qui
  n'apparaissent pas dans l'arborescence distante. Le programme mirror
  est configurable.  Le paquet peut tre rcupr au format RPM 
  l'adresse rufus.w3.org <http://rufus.w3.org/linux/RPM/mirror.html>.

  Faites votre copie locale du fichier de configuration de mirror
  (mirror.redhat) et modifiez les champs vous concernant au dbut du
  fichier. Aprs la section par dfaut, dfinissez les paquets
  suivants :



       package=updates
              site=ftp.sunsite.auc.dk
              exclude_patt=(alpha/|sparc/)
              remote_dir=/disk1/ftp.redhat.com/pub/redhat/redhat-5.1/updates
              local_dir=/jaz/redhat-5.1/updates

       package=dist
              site=ftp.sunsite.auc.dk
              exclude_patt=(alpha/|sparc/)
              remote_dir=/disk1/ftp.redhat.com/pub/redhat/redhat-5.1/i386
              local_dir=/jaz/redhat-5.1/i386




  La commande qui suit va recopier toute l'arborescence RedHat sur votre
  disque local. _*_R__f_l__c_h_i_s_s_e_z_* avant de la lancer, car vous tes sur le
  point de rcuprer prs de 350 Mo de donnes.



       mirror -pdist mirror.redhat




  Cela va dupliquer le site FTP de Red Hat sur votre disque local. Le
  contenu de la distribution ne change pas entre deux versions ; vous
  n'aurez donc  tlcharger l'arborescence qu'_U_N_E _S_E_U_L_E fois.  Toutes
  les modifications par rapport  la distribution se trouvent dans le
  rpertoire updates. En consquence, si vous dsirez maintenir un site
  miroir  jour de la distribution RedHat, la seule chose que vous aurez
   considrer est le rpertoire updates. Cela pourra tre fait par la
  commande :



       mirror -pupdates mirror.redhat




  Vous pouvez le faire rgulirement - disons une fois par semaine - par
  un script cron. La distribution RedHat est disponible un peu partout
  sur le globe  travers un grand nombre de serveurs FTP mis  jour
  quotidiennement depuis le site primaire ( <ftp://ftp.redhat.com/pub>).
  Essayez de choisir un site proche de vous (consultez l'URL RedHat FAQ
  <http://www.redhat.com/support/docs/rhl/RedHat-FAQ/RedHat-
  FAQ-12.html#ss12.1>).


  55..  MMeettttrree  jjoouurr ddeess ppaaqquueettss


  Afin de pouvoir faire des mises  jour, vous devez avoir accs en
  criture au rpertoire contenant la distribution. Vous devez aussi
  avoir install une version du programme rpm <http://www.rpm.org>.

  Vous procderez ensuite en trois tapes :


  1. Vrifiez les modes d'accs aux fichiers.

  2. Remplacez les RPM mis  jour.

  3. Regnrez le fichier hdlist.

  Si vous maintenez un miroir du rpertoire updates, vous pourrez
  produire  tout moment un CD-ROM incluant les dernires mises  jour
  en rptant ces trois tapes.


  55..11..  VVrriiffiieerr lleess mmooddeess dd''aaccccss aauuxx ffiicchhiieerrss


  Durant l'installation, certains programmes sont directement excuts
  depuis le CD-ROM. Malheureusement, le programme FTP ne prserve pas
  toujours les modes d'accs des fichiers et des arborescences copis.
  En consquence, il est ncessaire de s'assurer que les programmes, les
  scripts shell et les librairies dynamiques ont les droits d'excution
  idoines, avant que l'arborescence soit claque sur le CD. Lancez
  simplement le script updatePerm sur la copie locale de la
  distribution :


  ______________________________________________________________________
  #!/bin/bash

  LIST=/tmp/er3hd3w25
  CDDIR=/jaz/redhat-${RHVERSION}

  # Recherche tous les rpertoires et s'assure qu'ils ont le bit +x
  find $CDDIR -type d -exec chmod -c 755 {} \;

  # Recherche les excutables et les scripts shell ou perl
  find $CDDIR -type f | file -f - | grep -v RPM \
     | egrep -i 'executable|perl|bourne|shell' | cut -f1 -d: > $LIST

  # Recherche les bibliothques dynamiques
  find $CDDIR -name \*.so >> $LIST

  # Rend tout ce petit monde excutable
  while read file
  do
     if [ ! -x $file ] ; then
        chmod -c 755 $file
     fi
  done < $LIST

  /bin/rm $LIST

  exit 0
  ______________________________________________________________________




  55..22..  RReemmppllaacceerr lleess RRPPMM mmiiss  jjoouurr


  Le script suivant, appel updateCD, copie tous les fichiers depuis le
  rpertoire de mise  jour vers l'arborescence des RPM.  Le script
  utilise quelques commandes magiques de rpm pour dterminer quels
  paquets de la mise  jour sont plus rcents que ceux de la
  distribution. Les anciens paquets correspondants sont dplacs vers le
  rpertoire ${OLD}.


  ______________________________________________________________________
  #! /bin/bash
  # Ce script met  jour les RPM d'une distribution place dans $RPMDIR.
  # Les anciens RPM sont dplacs vers $OLDDIR.
  # Les nouveaux RPM doivent se trouver dans $UPDDIR.
  # L'architecture est $ARCH.

  RHVERSION=5.1

  ARCH=i386
  CDDIR=/jaz/redhat-${RHVERSION}
  RPMDIR=${CDDIR}/${ARCH}/RedHat/RPMS
  UPDDIR=${CDDIR}/updates/${ARCH}
  OLDDIR=${CDDIR}/old

  if [ ! -d $OLDDIR ] ; then
     echo making directory $OLDDIR
     mkdir $OLDDIR
  fi

  allow_null_glob_expansion=1

  for rpm in ${UPDDIR}/*.rpm ; do
    NAME=`rpm --queryformat "%{NAME}" -qp $rpm`
    unset OLDNAME
    for oldrpm in ${RPMDIR}/${NAME}*.rpm ; do
      if [ `rpm --queryformat "%{NAME}" -qp $oldrpm` = "$NAME" ]; then
        OLDNAME=$oldrpm;
        break
      fi
    done
    if [ -z "$OLDNAME" ]; then
      echo $NAME is new
      cp -pv $rpm $RPMDIR
    else
      if [ `basename $rpm` != `basename $OLDNAME` ]; then
        mv $OLDNAME $OLDDIR
        cp -pv $rpm $RPMDIR
      fi
    fi
  done


  # Copie les images de dmarrage au bon endroit...
  for newfile in ${UPDDIR}/images/* ; do
    file=${CDDIR}$/${ARCH}/images/$(basename ${newfile})
    if [ $newfile -nt $file ] ; then
       cp -pv $newfile $file
    fi
  done

  exit 0
  ______________________________________________________________________







  55..33..  RReeggnnrreerr llee ffiicchhiieerr hhddlliisstt


  Lors d'une installation par CD-ROM, le programme d'installation qui se
  trouve sur le CD-ROM (misc/src/install/genhdlist) s'appuie sur le
  fichier RedHat/base/hdlist dcrivant les paquets disponibles sur le
  CD-ROM. Ce programme doit tre lanc avec pour unique argument le nom
  de la racine de la distribution. Voici le script updateHdlist :


  ______________________________________________________________________
  #!/bin/bash

  echo Gnration du fichier hdlist...

  RHVERSION=5.1   # Ajout du traducteur par rapport  la version anglaise

  CDDIR=/jaz/redhat-${RHVERSION}
  ARCH=i386
  GENHDDIR=${CDDIR}/${ARCH}/misc/src/install

  chmod u+x ${GENHDDIR}/genhdlist
  chmod 644 ${CDDIR}/${ARCH}/RedHat/base/hdlist
  ${GENHDDIR}/genhdlist ${CDDIR}/${ARCH}

  exit 0
  ______________________________________________________________________



  Remarque : aprs avoir incorpor les mises  jour dans le rpertoire
  principal RedHat/RPMS, votre copie de la distribution n'est plus un
  miroir du site Red Hat. En fait, elle est plus  jour ! Par contre, si
  vous en refaites un miroir, les anciens paquets RPM qui ont t mis 
  jour vont tre de nouveau tlchargs et les mises  jour seront
  supprimes.


  66..  EEnnffiinn :: ggrraavvaaggee dduu CCDD


  Puisque nous supposons que vous avez un graveur de CD en tat de
  marche sur votre systme et que vous savez vous en servir, nous
  n'allons pas entrer dans les dtails sur la faon de graver le CD. Si
  vous voulez claquer le CD depuis Linux, nous ne saurions trop
  recommander l'excellent programme xcdroast <http://www.fh-
  muenchen.de/rz/xcdroast>.  Sous xcdroast, validez les extensions Rock
  Ridge ainsi que la cration du fichier TRANS.TBL.

  Assurez-vous alors simplement que _l_a _r_a_c_i_n_e de votre CD contient au
  moins les fichiers et rpertoires suivants :



       COPYING      RPM-PGP-KEY README       RedHat/




  Les arborescences suivantes peuvent galement se rvler pratiques :



       doc/         gnome/      misc/        dosutils/    images/


  77..  IInnssttaallllaattiioonn ddeeppuuiiss llee CCDD--RROOMM


  Lorsque vous faites l'installation depuis le CD-ROM, vous devez tout
  d'abord crer une disquette bootable. IMPORTANT : employez une
  disquette neuve, frachement formate DOS ! L'utilisation d'une
  vieille disquette, fatigue et au bout du rouleau, peut conduire 
  d'tranges problmes durant l'installation.

  Sous Linux, vous pouvez crer une disquette  l'aide de la commande
  dd :



       dd if=/mnt/cdrom/images/boot.img of=/dev/fd0 bs=1440k




  Sous DOS ou Windows-9x, utilisez le programme RAWRITE.EXE qui se
  trouve sur le CD-ROM dans le rpertoire dosutils.

  Arrtez la machine sur laquelle vous voulez faire l'installation ou la
  mise  jour, insrez la disquette de dmarrage et votre CD-ROM encore
  tout chaud, et laissez le systme dmarrer sur la disquette.  Pour
  plus d'information sur la procdure d'installation, rfrez-vous aux
  documents et aux HOWTO Installation-HOWTO et Bootdisk-HOWTO qui se
  trouvent sur le CD-ROM dans le rpertoire doc/HOWTO.


  88..  AAVVEERRTTIISSSSEEMMEENNTT


  LLee ccoonntteennuu ddee ccee ddooccuummeenntt eesstt ssuuppppooss ccoorrrreecctt.. CCeeppeennddaanntt,, sseess aauutteeuurrss
  eett llee ttrraadduucctteeuurr ssee ddggaaggeenntt ddee ttoouuttee rreessppoonnssaabbiilliitt qquuaanntt  uunnee
  ddggrraaddaattiioonn qquueellccoonnqquuee mmaattrriieellllee eett//oouu llooggiicciieellllee oouu  uunnee ppeerrttee ddee
  ddoonnnneess ssuuiittee  ll''aapppplliiccaattiioonn ddeess pprrooccdduurreess ddccrriitteess ddaannss llee
  ddooccuummeenntt..




























