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