Rev 1038 | Rev 1050 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
## Delete a package version from dpkg_archive# Script run by ssh to delete a package##set -xset -efunction error {echo ERROR: $*exit 1;}function delete_dir {if [ -e "$1" ] ; thenchmod -R u+w "$1"rm -rf "$1"fiif [ -L "$1" ] ; thenrm -rf "$1"fi}# User optionstagForDeletion=""removeTag=""while getopts DTK arg ; docase $arg inD) set -x ;;T) tagForDeletion=1 ;;K) removeTag=1 ;;*) error Unknown option: $arg ;;esacdoneshift $(($OPTIND - 1))# User argumentspname=${1:?Need package name}pver=${2:?Need package version}dpkg="$HOME/dpkg_archive"[ -d $dpkg ] || error dpkg_archive not found## Names of working directories#olddir="$dpkg/${pname}/${pver}.DELETE.TMPDIR"realdir="$dpkg/${pname}/${pver}"pkgdir="$dpkg/${pname}"if [ -n "${tagForDeletion}" ] ; then## Tag for delayed deletion# Touch a tagfile - the creation stamp will be used#tagFile="$realdir/.deletepkg"if [ -d "$realdir" ] ; thenchmod u+w "$realdir"rm -f "$tagFile"touch "$tagFile"chmod u-w "$realdir"fielif [ -n "${removeTag}" ] ; then## Remove any tag thats present#tagFile="$realdir/.deletepkg"if [ -d "$realdir" ] ; thenchmod u+w "$realdir"rm -f "$tagFile"chmod u-w "$realdir"fielse## Create package directory# Ensure its writablemkdir -p "$pkgdir"chmod u+w "$pkgdir"## Delete possible tmp directorydelete_dir "$olddir"## Rename and then delete - minimize diruption# Then delete the old#if [ -e "$realdir" ] ; thenmv "$realdir" "$olddir"delete_dir "$olddir"elif [ -L "$realdir" ] ; thendelete_dir "$realdir"fi## Try to remove package directory too#rmdir -p "$pkgdir" || true# Fix up permissions on the package and package-versionif [ -d "$pkgdir" ] ; thenchmod a-w "$pkgdir"fifi