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 :
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.
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
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
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.