I wrote:
> Here's a variation on the theme that serves me well.

Here's a slightly safer version.

#!/bin/sh
#
# pkg_nuke - delete unneeded packages
#
# Usage:
#   pkg_info > wanted
#   vi wanted # keep only the lines you want
#   pkg_nuke wanted
#
# All packages will be deleted, except the
# wanted packages and their dependencies.
#

[ $# -eq 1 ] || exit 1
[ -f "$1" ] || exit 2

field1 () { awk '{print $1}'; }

wanted=`mktemp -t`
field1 < "$1" | sort > $wanted || exit 3

while true; do
  a=0
  for x in `pkg_info | field1 | sort | comm -23 - $wanted`; do
    pkg_delete $x && a=1
  done
  [ $a -eq 0 ] && break
done

rm $wanted

Reply via email to