diff options
Diffstat (limited to 'scripts/freshen.sh')
-rwxr-xr-x | scripts/freshen.sh | 82 |
1 files changed, 0 insertions, 82 deletions
diff --git a/scripts/freshen.sh b/scripts/freshen.sh deleted file mode 100755 index 78ce4c3f1..000000000 --- a/scripts/freshen.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/sh - -# Traditionally, and to some extent still, rpm --freshen upgraded -# packages that matched by RPMTAG_NAME, not RPMTAG_PROVIDENAME. -# -# This freshen.sh script illustrates how to revert to the "traditional" -# behavior for doing, say, -# rpm -Fvh kernel-bigmem*.rpm -# so that only kernel-bigmem packages are upgraded, rather than -# upgrading (i.e. erasing) every kernel package that contains -# Provides: kernel = V-R -# -# Copy the freshen.sh script to /usr/lib/rpm, and add the following -# lines to /etc/popt to enable the behavior: -# rpm alias -F --freshen -# rpm exec --freshen /usr/lib/rpm/freshen.sh -# - -dbg= #echo # Do "dbg=echo" for debugging -#set -x -#echo "args: $*" - -# Invoke rpmi from the same directory as freshen.sh. -rpmi="`dirname $0`/rpmi" -rpme="`dirname $0`/rpme" -rpmq="`dirname $0`/rpmq" - -# Parse out any options and add to new arglist. -# Note: this fails for options with arguments, -# and doesn't detect multiple -i/-e/-U/-F options either. -opts="" -while [ $# -gt 0 ]; do - case $1 in - -*) opt="$1" - opts="$opts $opt" && shift - [ "$opt" = "--" ] && break - ;; - *) opts="$opts --" && break - ;; - esac -done -#echo "opts: $opts" - -# $opts has the options with final '--', $* has the package files - -# If no remaining options, just invoke rpm (which will fail). -[ $# = 0 ] && $dbg exec $rpmi -F $opts - -# Split remaining args into erase/install/upgrade invocations -iargs= -eargs= -Fargs= -for fn in $*; do - # If not a file, just pass to freshen. - [ ! -f $fn ] && Fargs="$Fargs $fn" && continue - - # For all occurences of identically named packages installed ... - N="`$rpmq -qp --qf '%{NAME}' $fn`" - NVR="`$rpmq -qa $N`" - - # ... special case kernel packages, ignore packages not installed. - case $N in - kernel*) - # ... if none installed, skip thi kernel package. - [ "$NVR" = "" ] && continue - - # ... else install new package before erasing old package(s). - iargs="$iargs $fn" - eargs="$eargs $NVR" - ;; - *) Fargs="$Fargs $fn";; - esac - -done - -set -e # Exit on any error from here on out. - -# Install before erase to insure deps are provided. -[ "$iargs" != "" ] && $dbg $rpmi -i $opts $iargs -[ "$eargs" != "" ] && $dbg $rpme -e $opts $eargs -# Other, non-kernel, files passed to --freshen as always. -[ "$Fargs" != "" ] && $dbg $rpmi -F $opts $Fargs |