#!/bin/bash shopt -sq extglob # NOTE: this uses a different algorithm # for parsing the package name/version/release # than setup. However, it mostly works... parseName() { REM=${1%%*([^-])} REL=${1##$REM} NEXT=${REM%%-} REM=${NEXT%%*([^-])} VER=${NEXT##$REM} PKG=${REM%%-} } do_uninstall () { DO_POSTSCRIPT=no while read line ; do case $line in etc/postuninstall/*) DO_POSTSCRIPT=$line ;; */) # ignore directories ;; *) rm -f /$line ;; esac done < /etc/setup/${PKG}.lst if [ "$DO_POSTSCRIPT" -ne "no" ] ; then `/$line` mv /$line /$line.done fi } for fn in $* ; do case $fn in *-src.tar*) echo "I don't do -src packages" ;; *.tar.bz2) parseName ${fn%%.tar.bz2} echo Unnstalling $PKG Version $VER Release $REL gunzip /etc/setup/${PKG}.lst.gz do_uninstall rm /etc/setup/${PKG}.lst echo "$PKG $fn REMOVED" >> /etc/setup/installed.db ;; *.tar.gz) parseName ${fn%%.tar.gz} echo Uninstalling $PKG Version $VER Release $REL gunzip /etc/setup/${PKG}.lst.gz do_uninstall rm /etc/setup/${PKG}.lst echo "$PKG $fn REMOVED" >> /etc/setup/installed.db ;; *) echo bad filespec: $fn ;; esac done echo "It's up to you to remove the appropriate entries from" echo "/etc/setup/installed.db"