Nästa Föregående Innehållsförteckning

5. Infoga uppdateringar

När du infogar uppdateringar måste du ha skrivbehörighet till distributionskatalogen från en Linux-dator med en fungerande version av rpm . Utför följande tre steg:

  1. Korrigera alternativen för filskydd.
  2. Byta ut uppdaterade RPM-filer.
  3. Generera hdlist-filen.

Om du alltid har en aktuell avbild av katalogen updates kan du när som helst skapa en CD med aktuella uppdateringar genom att utföra de tre stegen.

5.1 Korrigera alternativen för filskydd

Under installationsprocessen körs vissa program direkt från CD-skivan. Tyvärr bevaras inte alltid skyddet för de filer och kataloger som kopieras. Därför måste du se till att programmen, shell-skripten och de delade biblioteken har körningstillstånd innan du bränner in katalogen på CD-skivan. Det kan du göra genom att köra skriptet updatePerm på din lokala kopia av distributionen:


#!/bin/bash

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

# Söka efter alla kataloger och kontrollera att de har tillståndet +x
find $CDDIR -type d -exec chmod -c 755 {} \;

# Söka efter alla filer som är körbara eller som är shell- eller perl-skript
find $CDDIR -type f | file -f - | grep -v RPM \
   | egrep -i 'executable|perl|bourne|shell' | cut -f1 -d: > $LIST

# Söka efter delade bibliotek
find $CDDIR -name \*.so >> $LIST

# Göra dem körbara medan du läser filen

do
-x $file ] ; then
      chmod -c 755 $file
   fi
done < $LIST

/bin/rm $LIST

exit 0

5.2 Byta ut uppdaterade RPMS-filer

Med skriptet updateCD kopierar du alla filer från uppdateringskatalogen till RPMS-katalogen. I skriptet ingår några tjusiga rpm-trick som avgör vilka paket i uppdateringskatalogen som är nyast. Äldre paket flyttas till katalogen ${OLD}.


#! /bin/bash
# Med det här skriptet uppdateras de rpm-filer i en RedHat-distribution som hittas i $RPMDIR.
# Gamla rpm-filer placeras i $OLDDIR.
# De nya rpm-filerna bör placeras i $UPDDIR.
# Arkitekturen är $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 är nytt
    cp -pv $rpm $RPMDIR
  else
    if [ `basename $rpm` != `basename $OLDNAME` ]; then
      mv $OLDNAME $OLDDIR
      cp -pv $rpm $RPMDIR
    fi
  fi
done


# Kopiera nya startbildfiler till rätt plats...
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 Generera en ny hdlist-fil

När du installerar från CD-skivan kommer installationsprogrammet på CD-skivan, misc/src/install/genhdlist att vara beroende av filen RedHat/base/hdlist , som beskriver vilka RPM-paket som finns på CD-skivan. Programmet måste köras med rotnamnet för distributionen som enda argument. Så här ser updateHdlist-skriptet ut:


#!/bin/bash

echo skapar hdlist...
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

Obs! När du har infogat uppdateringarna i huvudkatalogen RedHat/RPMS är din kopia av distributionen inte längre en avbild av RedHats distributionsplats. Den är i själva verket ännu mer aktuell! Om du tänker avbilda distributionen kommer därför äldre versioner av uppdaterade RPM-filer att hämtas en gång till och uppdateringarna tas bort.


Nästa Föregående Innehållsförteckning