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 française : Thierry Danis
danis@mail.dotcom.fr
v.00, 9 septembre 1998, traduction française du 12 décembre
1998
Ce document explique comment fabriquer un CD-ROM de la distribution
RedHat équivalent à ceux que vous pouvez vous procurer directement
auprès de Red Hat. Vous y trouverez une description de la structure
des fichiers de la distribution, ainsi que la façon de procéder pour
inclure dans celle-ci des RPM à jour. Les prérequis sont une solide
connexion à l'internet et un graveur de CD.
______________________________________________________________________
Table des matières
1. Introduction
2. Structure du site FTP de RedHat
2.1 La racine
2.2 Le répertoire "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 Vérifier les modes d'accès aux fichiers
5.2 Remplacer les RPM mis à jour
5.3 Regénérer le fichier hdlist
6. Enfin : gravage du CD
7. Installation depuis le CD-ROM
8. AVERTISSEMENT
______________________________________________________________________
11.. IInnttrroodduuccttiioonn
Vous pouvez avoir plusieurs raisons de faire vos propres CD-ROM. Vos
poches sont peut-être percées et vous ne voulez pas débourser les 50
dollars de la distribution RedHat . Vous
pouvez aussi avoir besoin d'un CD-ROM avec les mises à jour les plus
récentes pour la dernière distribution. C'est d'autant plus vrai
qu'après chaque version importante de la RedHat, de nombreuses mises à
jour sont sorties, la plupart d'entre elles étant liées à des
problèmes de sécurité. Allez jeter un oeil au fichier
updates/00README.errata
.
Il existe un errata spécifique à chaque plate-forme supportée. Allez
faire un tour par exemple sur la page d'errata pour Intel
.
22.. SSttrruuccttuurree dduu ssiittee FFTTPP ddee RReeddHHaatt
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.
22..11.. LLaa rraacciinnee
Le répertoire de plus haut niveau pour la RedHat 5.1
(pub/redhat/redhat-5.1 )
contient les distributions pour les différentes plate-formes ainsi
qu'un répertoire 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 démarche
expliquée dans ce document devrait être la même pour toutes les
architectures supportées par Red Hat (Alpha, SPARC, ppc, etc.) ; elle
n'a cependant été testée que sur architecture i386 (les auteurs
seraient intéressés par tout complément 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 répertoire doc est une mine d'information. Point important, le
manuel d'installation de la RedHat au format HTML se trouve dans le
répertoire doc/rhmanual/manual/
.
On y trouvera aussi de nombreuses FAQ (Foire Aux Questions) ainsi que
tous les HOWTO et mini-HOWTO.
Le répertoire images contient les images binaires des disquettes de
démarrage. Dans les dernières distributions (5.1 et au-delà), deux
images sont disponibles. L'image de démarrage s'appelle boot.img. Elle
est nécessaire lorsque l'installation se fait directement depuis le
CD-ROM. L'utilisateur pourra être amené à fournir une disquette sur
laquelle l'image supplémentaire (supp.img) aura été recopiée si
l'installation est lancée depuis un disque dur local, via NFS ou par
FTP. Reportez-vous à la section ``Installation depuis le CD-ROM'' pour
plus de détails.
Le répertoire misc contient les sources et les exécutables d'un
certain nombre de programmes utilisés lors de l'installation.
22..22.. LLee rrééppeerrttooiirree ""RReeddHHaatt"" ---- ccoorrppss pprriinncciippaall ddee llaa ddiissttrriibbuuttiioonn
La partie la plus importante de l'arborescence se trouve dans le
répertoire 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 situés dans le
répertoire RPMS. Ils sont formés d'un ensemble de fichiers au format
RPM (Redhat Package Manager). Un paquet RPM est typiquement constitué
d'exécutables binaires, accompagnés de leur documentation et de
fichiers de configuration. Reportez-vous à la section ``Les paquets
RPM'' pour plus de renseignements.
Le répertoire base regroupe plusieurs fichiers 'précompilés' utilisés
lors de l'installation (par exemple, le fichier comps décrit les
_c_o_m_p_o_s_a_n_t_s (groupes de paquets) utilisés 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-tête de chacun des paquets RPM du répertoire RPMS).
Cela signifie que le processus d'installation peut connaître les
inter-dépendances entre paquets simplement en consultant le fichier
hdlist plutôt que de parcourir tous les paquets présents ; c'est
particulièrement 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 désirez effectuer des mises à jour
(voir section ``Mettre à jour des paquets'') ou ajouter vos propres
paquets au répertoire RPMS, vous devrez reconstruire le fichier
hdlist. La façon de procéder est décrite plus loin dans le chapitre
``Regénérer le fichier hdlist''.
Le répertoire instimage contient une arborescence "live" nécessaire à
la procédure d'installation (on y trouve un certain nombre de
programmes et de librairies dynamiques).
33.. LLeess ppaaqquueettss RRPPMM
La plus grande partie de la distribution est constituée de paquets RPM
(Redhat Package Manager). Classiquement, un paquet RPM est formé
d'exécutables binaires, de leur documentation associée et de fichiers
de configuration. Le programme rpm est un
gestionnaire de paquets très puissant, qui peut être utilisé pour
installer, consulter, vérifier, mettre à jour, effacer ou construire
des paquets (logiciels) au format RPM. rpm maintient une base de
données des paquets manipulés ; de cette manière, les informations
relatives aux logiciels installés sont toujours disponibles.
Les fichiers RPM présents dans une distribution ont été construits sur
un système fonctionnant sous cette distribution. C'est un point
important dans la mesure où la plupart des programmes compilés
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, gérant proprement les données en 64 bits). La version de
cette librairie est communément appelée glibc, ou, sous Linux, libc 6.
L'édition de liens de tous les exécutables 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 précaution 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
présentes sur votre machine. Le programme rpm
s'assure en général que c'est le cas. Il y a cependant moyen d'outre-
passer ses vérifications, mais vous devez avoir bien conscience de ce
que vous risquez si vous décidez d'agir ainsi. Néanmoins, si vous
utilisez le disque d'installation RedHat, les paquets corrects seront
installés sur votre machine.
Si vous vous apercevez qu'un paquet n'est pas présent au terme de
l'installation, ne désespérez 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 possèdent le suffixe
.src.rpm et sont situés dans le répertoire SRPMS. Il n'est pas
nécessaire qu'ils se trouvent sur le CD-ROM d'installation. De toute
façon, 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.
44.. CCoommmmeenntt ffaaiirree uunnee ccooppiiee llooccaallee dd''uunnee ddiissttrriibbuuttiioonn ??
Vous devez recopier la distribution sur un disque inscriptible
accessible par la machine possédant le graveur de CD (étonnant non ?).
Si vous voulez y mettre les dernières 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
récupérer 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 référence sur une autre machine. Il
utilise FTP pour récupérer 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 récupéré au format RPM à
l'adresse rufus.w3.org .
Faites votre copie locale du fichier de configuration de mirror
(mirror.redhat) et modifiez les champs vous concernant au début du
fichier. Après la section par défaut, définissez 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 récupérer près de 350 Mo de données.
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 à télécharger l'arborescence qu'_U_N_E _S_E_U_L_E fois. Toutes
les modifications par rapport à la distribution se trouvent dans le
répertoire updates. En conséquence, si vous désirez maintenir un site
miroir à jour de la distribution RedHat, la seule chose que vous aurez
à considérer est le répertoire updates. Cela pourra être fait par la
commande :
mirror -pupdates mirror.redhat
Vous pouvez le faire régulièrement - 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 ( ).
Essayez de choisir un site proche de vous (consultez l'URL RedHat FAQ
).
55.. MMeettttrree àà jjoouurr ddeess ppaaqquueettss
Afin de pouvoir faire des mises à jour, vous devez avoir accès en
écriture au répertoire contenant la distribution. Vous devez aussi
avoir installé une version du programme rpm .
Vous procéderez ensuite en trois étapes :
1. Vérifiez les modes d'accès aux fichiers.
2. Remplacez les RPM mis à jour.
3. Regénérez le fichier hdlist.
Si vous maintenez un miroir du répertoire updates, vous pourrez
produire à tout moment un CD-ROM incluant les dernières mises à jour
en répétant ces trois étapes.
55..11.. VVéérriiffiieerr lleess mmooddeess dd''aaccccèèss aauuxx ffiicchhiieerrss
Durant l'installation, certains programmes sont directement exécutés
depuis le CD-ROM. Malheureusement, le programme FTP ne préserve pas
toujours les modes d'accès des fichiers et des arborescences copiés.
En conséquence, il est nécessaire de s'assurer que les programmes, les
scripts shell et les librairies dynamiques ont les droits d'exécution
idoines, avant que l'arborescence soit claquée 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 répertoires et s'assure qu'ils ont le bit +x
find $CDDIR -type d -exec chmod -c 755 {} \;
# Recherche les exécutables 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 bibliothèques dynamiques
find $CDDIR -name \*.so >> $LIST
# Rend tout ce petit monde exécutable
while read file
do
if [ ! -x $file ] ; then
chmod -c 755 $file
fi
done < $LIST
/bin/rm $LIST
exit 0
______________________________________________________________________
55..22.. RReemmppllaacceerr lleess RRPPMM mmiiss àà jjoouurr
Le script suivant, appelé updateCD, copie tous les fichiers depuis le
répertoire de mise à jour vers l'arborescence des RPM. Le script
utilise quelques commandes magiques de rpm pour déterminer quels
paquets de la mise à jour sont plus récents que ceux de la
distribution. Les anciens paquets correspondants sont déplacés vers le
répertoire ${OLD}.
______________________________________________________________________
#! /bin/bash
# Ce script met à jour les RPM d'une distribution placée dans $RPMDIR.
# Les anciens RPM sont déplacés 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 démarrage 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
______________________________________________________________________
55..33.. RReeggéénnéérreerr llee ffiicchhiieerr hhddlliisstt
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 décrivant 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 Génération 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 : après avoir incorporé les mises à jour dans le répertoire
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 téléchargés et les mises à jour seront
supprimées.
66.. EEnnffiinn :: ggrraavvaaggee dduu CCDD
Puisque nous supposons que vous avez un graveur de CD en état de
marche sur votre système et que vous savez vous en servir, nous
n'allons pas entrer dans les détails sur la façon de graver le CD. Si
vous voulez claquer le CD depuis Linux, nous ne saurions trop
recommander l'excellent programme xcdroast . Sous xcdroast, validez les extensions Rock
Ridge ainsi que la création 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 répertoires suivants :
COPYING RPM-PGP-KEY README RedHat/
Les arborescences suivantes peuvent également se révéler pratiques :
doc/ gnome/ misc/ dosutils/ images/
77.. IInnssttaallllaattiioonn ddeeppuuiiss llee CCDD--RROOMM
Lorsque vous faites l'installation depuis le CD-ROM, vous devez tout
d'abord créer une disquette bootable. IMPORTANT : employez une
disquette neuve, fraîchement formatée DOS ! L'utilisation d'une
vieille disquette, fatiguée et au bout du rouleau, peut conduire à
d'étranges problèmes durant l'installation.
Sous Linux, vous pouvez créer 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 répertoire dosutils.
Arrêtez la machine sur laquelle vous voulez faire l'installation ou la
mise à jour, insérez la disquette de démarrage et votre CD-ROM encore
tout chaud, et laissez le système démarrer sur la disquette. Pour
plus d'information sur la procédure d'installation, référez-vous aux
documents et aux HOWTO Installation-HOWTO et Bootdisk-HOWTO qui se
trouvent sur le CD-ROM dans le répertoire doc/HOWTO.
88.. AAVVEERRTTIISSSSEEMMEENNTT
LLee ccoonntteennuu ddee ccee ddooccuummeenntt eesstt ssuuppppoosséé ccoorrrreecctt.. CCeeppeennddaanntt,, sseess aauutteeuurrss
eett llee ttrraadduucctteeuurr ssee ddééggaaggeenntt ddee ttoouuttee rreessppoonnssaabbiilliittéé qquuaanntt àà uunnee
ddééggrraaddaattiioonn qquueellccoonnqquuee mmaattéérriieellllee eett//oouu llooggiicciieellllee oouu àà uunnee ppeerrttee ddee
ddoonnnnééeess ssuuiittee àà ll''aapppplliiccaattiioonn ddeess pprrooccéédduurreess ddééccrriitteess ddaannss llee
ddooccuummeenntt..
.