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