fp-wiki>ImportUser (Imported from MoinMoin) |
m (1 revision(s)) |
(No difference)
|
Latest revision as of 16:35, 24 May 2008
rpmupdates
The rpmupdates script is a small bash program that updates the RPMs in you tree. Put your updated RPMs in new/new/. This script will compare them to the RPMs in i386/Fedora/RPMS/. If the RPMs in new/new/ are newer, this script will move the old RPMs to olddir/, and copy the new RPMs to i386/Fedora/RPMS/ and new/done. If they are not newer, it will move them to new/ and give a warning message. I have seen several perl programs that do the same thing, but I would really like to see a python program that could be included with anaconda.
Move the rpmupdates script to /fedora (or /dvd), and run it from that directory.
diff -urN anaconda-9.2/scripts/rpmupdates anaconda-9.2.new/scripts/rpmupdates --- anaconda-9.2/scripts/rpmupdates 1969-12-31 16:00:00.000000000 -0800 +++ anaconda-9.2.new/scripts/rpmupdates 2003-01-22 16:21:22.000000000 -0800 @@ -0,0 +1,85 @@ +#!/bin/bash +# +# UPDATES_DIR The directory that contains the updates +# RPM1DIR The original RH tree +# RPM2DIR Disc 2 of the tree +# ARCH Arch +# EXTRA_DIR The directory that contains extra RPMS +# OLDDIR All old rpms will be dumped here + +RPM1DIR=i386/Fedora/RPMS +UPDATES_DIR=new/new +OLDDIR=olddir +DONE_DIR=new/done +EXTRA_DIR=extra +# DEBUG=0 + + echo NOTICE: beginning to apply updated packages to ${RPM1DIR} + echo NOTICE: from ${UPDATES_DIR} ### and ${EXTRA_DIR} + echo NOTICE: this may take a few minutes + echo + + if [<nop>[ ! -d <nop>$OLDDIR ] <nop> ; then + echo making directory $OLDDIR + mkdir $OLDDIR + fi + + if [<nop>[ $DEBUG ] <nop> + then + echo 'in update_cd' + echo PWD = <code>pwd</code> + echo RPM1DIR=$RPM1DIR + echo ARCH=$ARCH + echo UPDATES_DIR=$UPDATES_DIR + echo + fi + allow_null_glob_expansion=1 + +# for rpm in ${UPDATES_DIR}/*.rpm ${EXTRA_DIR}/*.rpm ; do + for rpm in ${UPDATES_DIR}/*.rpm; do + RPMDIR=${RPM1DIR} +# NAME=<code>rpm --qf '%{NAME}' -qp $rpm --nosignature --nodigest</code> for BETAs (4x) + NAME=<code>rpm --qf '%{NAME}' -qp $rpm</code> + ARCH=<code>rpm --qf '%{ARCH}' -qp $rpm</code> + unset OLDNAME + for oldrpm in ${RPM1DIR}/${NAME}*.${ARCH}.rpm ; do + if [<nop>[ x<code>rpm --qf '%{NAME}' -qp $oldrpm</code> = x$NAME ] <nop> ; then + if [<nop>[ x<code>rpm --qf '%{ARCH}' -qp $oldrpm</code> = x$ARCH ] <nop> ; then + OLDNAME=$oldrpm + RPMDIR=${RPM1DIR} + break + fi + fi + done + + if [<nop>[ ! -d $DONE_DIR ] <nop> ;then + echo Making $DONE_DIR + mkdir $DONE_DIR + fi + + if [<nop>[ -z $OLDNAME ] <nop> ; then + echo $NAME $ARCH is new + cp -pv $rpm $RPMDIR + mv $rpm $DONE_DIR + else + if [<nop>[ x<code>basename $rpm</code> != x<code>basename $OLDNAME</code> ] <nop> + then + if [<nop>[ $DEBUG ] <nop> + then + echo mv $OLDNAME $OLDDIR + echo cp -pv $rpm $RPMDIR + echo mv $rpm $DONE_DIR + else + mv $OLDNAME $OLDDIR + #echo removing $OLDNAME + #rm $OLDNAME + cp -pv $rpm $RPMDIR + mv $rpm $DONE_DIR + fi + else + echo NOTICE: <code>basename $rpm</code> update already applied + echo NOTICE: Now moving <code>basename $rpm</code> to new/ + mv $rpm new + fi + fi + done