How do I uninstall any Apple pkg Package file?

128,703

Solution 1

https://wincent.com/wiki/Uninstalling_packages_(.pkg_files)_on_Mac_OS_X describes how to uninstall .pkg using native pkgutil.

Modified excerpt

$ pkgutil --pkgs # list all installed packages
$ pkgutil --files the-package-name.pkg # list installed files

After visually inspecting the list of files you can do something like:

$ pkgutil --pkg-info the-package-name.pkg # check the location
$ cd / # assuming the package is rooted at /...
$ pkgutil --only-files --files the-package-name.pkg | tr '\n' '\0' | xargs -n 1 -0 sudo rm -f
$ pkgutil --only-dirs --files the-package-name.pkg | tail -r | tr '\n' '\0' | xargs -n 1 -0 sudo rmdir

Needless to say, extreme care should always be taken when removing files with root privileges. Particularly, be aware that some packages may update shared system components, so uninstalling them can actually break your system by removing a necessary component.

For smaller packages it is probably safer to just manually remove the files after visually inspecting the package file listing.

Apparently, there was once an --unlink option available in pkgutil, but as of Lion it is not mentioned in the man page. Perhaps it was removed because it was deemed too dangerous.

Once you've uninstalled the files, you can remove the receipt with:

$ sudo pkgutil --forget the-package-name.pkg

Solution 2

Built into the system there is no option to uninstall the files using an uninstaller so you can either make an uninstaller yourself or remove the files manually.

The best method to determine what files have been installed is to get a hold of the original .pkg if possible. If this is not possible you can also use the receipts instead found at /Library/Receipts. Your biggest issue is when you are dealing with a .mpkg which contains multiple .pkg files as you will then have to find all the seperate .pkg files in that folder (thankfully not that difficult when sorted by date).

Once you have the .pkg file (Receipt or the full install file) you can then use a utility to either create the uninstaller or find the files so you can remove them manually:

Uninstaller

Absolute Software InstallEase is a free program that can create uninstallers from existing .pkg files. Make the uninstaller .pkg file (note: You'll need Apple's Developer Tools installed to actually make the .pkg file)

Manually

Using a program such as Pacifist or a QuickLook plugin like Suspicious Package you can view what files are installed and at what location. Using that list you can then manually navigate to those folders and remove the files. I've used this method personally countless times before I discovered InstallEase, but this is still often faster if the install isn't spread out among many locations.

Solution 3

you can also uninstall .pkg packages with UninstallPKG ( http://www.corecode.at/uninstallpkg/ )

[full disclosure: yes i am the author]

Solution 4

I made a shell srcipt

you can try it

https://github.com/iamrToday/pkg-remove

It shows a .gif demo, you can see the source code, just wrap the brablc's command line. You can run it to search infomation , you also can remove apk. It is interactive.

Solution 5

You can try the suggestions from this site: http://www.entropy.ch/software/macosx/mysql/remove-old-mysql.html. Also, there's an article regarding this on the Adobe support site; here's the link: http://support.adobe.com/devsup/devsup.nsf/docs/52355.htm.

Also, the apps that usually have a pkg file in the dmg usually also have another pkg that is used for uninstalling. I'm not sure if this is true here, but I wanted to let you know to keep the original dmg file.

Share:
128,703

Related videos on Youtube

dlamblin
Author by

dlamblin

I had something here once. It was about work. #SOreadytohelp

Updated on September 17, 2022

Comments

  • dlamblin
    dlamblin almost 2 years

    Despite opinions to the contrary, not all packages are installed cleanly in only one directory. Is there a way to reverse the install process of a pkg file, preferably with the original package (or from a repository of information about installed packages)?

    Specifically I've installed the PowerPC MySQL 5.4.1 package on an intel MacBook, and would like to cleanly reverse that, recovering the 5.1 x86 install I can see is still there, but not working properly now.

  • dlamblin
    dlamblin almost 15 years
    Thanks, while the regular 5.1 mysql packages left a receipt, the beta 5.4 mysql packages did not. That's slightly odd.
  • NobleUplift
    NobleUplift about 10 years
    Wow, if I knew this I never would have installed the .pkg to begin with. y u no Programs and Features OS X?
  • Sam Mason
    Sam Mason over 9 years
    I'd recommend using rmdir instead of rm -r; one could also use tac or tail -r to reverse the list of directory names so that they get deleted in the correct order
  • FiloSottile
    FiloSottile over 9 years
    DON'T RUN THE sudo rm -ir PART. The list includes the parent directories! So if the pkg installed something in /usr/... you will remove ALL /usr/
  • brablc
    brablc over 9 years
    I have changed the command for deleting directories to use rmdir (which does not delete not-empty-directories) and uses tail -r to list them in better order.
  • cmroanirgo
    cmroanirgo over 9 years
    ironically, when using pgkutil I found an uninstaller.pl tucked away that I could use. Perfect!
  • James McMahon
    James McMahon over 7 years
    One thing that pkgs don't seem to keep track of is the symlinks created by the pkgs. It's possible that cleaning up the package from the instructions above (or any of the methods here) will leave broken symlinks behind.
  • Ron E
    Ron E over 6 years
    It's worth noting it's not free but does include a free trial
  • Pierre.Vriens
    Pierre.Vriens about 6 years
    what does it do?
  • rToday Lin
    rToday Lin about 6 years
    I show a .gif demo, you can see the source code, just wrap the brablc's command line. you can run it to search infomation , you also can remove apk. it is interactive . :)
  • osxUser
    osxUser about 4 years
    Hi, I was wondering if my pkg also create files within an existing location. for example, in /usr/local/lib... in such cases, I wish my uninstaller to remain those folders. is there any configuration for pkgutil to show only folders that are being created by the installer ?
  • brablc
    brablc about 4 years
    The script uses rmdir to delete directories. And rmdir only deletes empty directories. So unless you want to keep empty directories you do not need to care.