#!/bin/sh SCRIPT_NAME=$(basename "$0") usage() { echo "Usage: $SCRIPT_NAME " echo "" echo "Subcommands:" echo " obsolete Packages installed but not available in any configured repo" echo " manual Packages that were manually installed" echo " residual Packages removed but with configuration files remaining" } cmd_obsolete() { aptitude search '~o' -F '%p' } cmd_manual() { apt-mark showmanual } cmd_residual() { dpkg -l | awk '/^rc/ { print $2 }' } case "$1" in obsolete) cmd_obsolete ;; manual) cmd_manual ;; residual) cmd_residual ;; ""|--help|-h) usage ;; *) echo "$SCRIPT_NAME: unknown subcommand '$1'" >&2 echo "" >&2 usage >&2 exit 1 ;; esac