Page suivante Page précédente Table des matières

5. Mettre à jour des paquets

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.

5.1 Vérifier les modes d'accès aux fichiers

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

5.2 Remplacer les RPM mis à jour

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

5.3 Regénérer le fichier hdlist

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.


Page suivante Page précédente Table des matières