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.