find-trailing-packages.sh
by
zcat
—
last modified
Dec 20, 2007 11:22 AM
—
filed under:
Testing
A small script to run after a FN-1 to FNrespin upgrade, in order to find reasons why some unupgraded packages are trailing
find-trailing-packages.sh
—
text/x-sh,
1Kb
File contents
#!/bin/sh
[ $# -lt 1 ] && echo "usage: $(basename $0) /path/to/respin/mountpoint" && exit 1
[ $UID -ne 0 ] && echo "need to be root." && exit 2
[ ! -d "$1/Packages" ] && "$1 doesn't appear to be a valid tree" && exit 1
[ ! -r "/root/upgrade.log" ] && "this doesn't appear to be an upgrade. /root/upgrade.log does not exist" && exit 1
respin_mnt="$1"
cd /root
rpm -qa --qf='%{N}\n' | sort | uniq > trail.installed
grep "^Upgrading" upgrade.log | awk '{print $2}' | sort | uniq > trail.upgraded
comm -23 trail.installed trail.upgraded > trail.notupgraded
rpm -qa --qf '%{N}\n' | sort | uniq -cd | sort -rn > trail.dupes
printf "Packages Installed: %4d\n" $(wc -l trail.installed|awk '{print $1}')
printf "Packages Upgraded: %4d\n" $(wc -l trail.upgraded|awk '{print $1}')
printf "Packages Not Upgraded: %4d\n" $(wc -l trail.notupgraded|awk '{print $1}')
printf "Package Duplicates: %4d\n" $(wc -l trail.dupes|awk '{print $1}')
echo "Dupes list:"
cat trail.dupes
rm trail.nochange trail.unavailable trail.other 2>/dev/null
while read pn; do
INSTRPM_NV=$(rpm -q --qf '%{N}-%{V}\n' $pn)
if [ -e $respin_mnt/Packages/${INSTRPM_NV}*.rpm ]; then
#echo "$pn not upgraded because version unchanged"
echo $pn >> trail.nochange
elif [ ! -e $respin_mnt/Packages/${pn}-*.rpm ]; then
#echo "$pn not upgraded because it's unavailable on media"
echo $pn >> trail.unavailable
else
echo "$pn not upgraded for some other reason"
echo $pn >> trail.other
fi
done < trail.notupgraded
echo
echo "Reasons why some packages were not upgraded:"
printf " 1) Version unchanged [OK]: %4d\n" $(wc -l trail.nochange|awk '{print $1}')
printf " 2) Package unavailable [??]: %4d\n" $(wc -l trail.unavailable|awk '{print $1}')
printf " 3) Other [??]: %4d\n" $(wc -l trail.other|awk '{print $1}')
echo
#echo "Unavailable packages: $(cat trail.unavailable|xargs)"
#echo "Other packges: $(cat trail.other|xargs)"
echo "Unavailable packages: " ; cat trail.unavailable
echo
echo "Other packages: " ; cat trail.other

