Skip to content

Instantly share code, notes, and snippets.

@jasmas
Created March 3, 2016 07:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jasmas/4b18e9e6942692ebaca9 to your computer and use it in GitHub Desktop.
Save jasmas/4b18e9e6942692ebaca9 to your computer and use it in GitHub Desktop.
A simple shell script for removing OS X packages installed with .pkg files
#!/bin/sh
[ -n "$1" ] || { echo "usage: rmpkg package-id"; exit 1; }
pkgutil --pkg-info $1 || exit $?
printf "\n"
PKGVOL=`pkgutil --pkg-info $1 | sed -n 's/volume: \(.*\)/\1/p'`
PKGLOC=`pkgutil --pkg-info $1 | sed -n 's/location: \(.*\)/\1/p'`
pkgutil --only-files --files $1 | tr '\r\n' '\0' | xargs -0 -n 1 printf "%s%s/%s\n" $PKGVOL $PKGLOC
printf "\n"
read -p "Delete files? [Yes/No]: " ANSWER
printf "\n"
if [ $ANSWER = "Yes" ]; then
pkgutil --only-files --files $1 | tr '\r\n' '\0' | xargs -0 -n 1 -I % sudo rm "$PKGVOL$PKGLOC/%"
fi
pkgutil --only-dirs --files $1 | sort -r | tr '\r\n' '\0' | xargs -0 -n 1 printf "%s%s/%s\n" $PKGVOL $PKGLOC
printf "\n"
read -p "Delete empty directories? [Yes/No]: " ANSWER
if [ $ANSWER = "Yes" ]; then
pkgutil --only-dirs --files $1 | sort -r | tr '\r\n' '\0' | xargs -0 -n 1 -I % sudo rmdir "$PKGVOL$PKGLOC/%"
fi
printf "\n"
read -p "Forget package? [Yes/No]: " ANSWER
if [ $ANSWER = "Yes" ]; then
sudo pkgutil --forget $1
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment