Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

When you install a program like postgresql, it installs several programs for its last version.

Once installed how remove all those packages? because using

apt-get remove postgresql

removes only that meta-package

share|improve this question
up vote 8 down vote accepted

As apt-get autoremove (suggested by Aaron) will remove all "helper-packages" nothing seems to depend on any longer, sometimes you want to keep some of them for one reason or another. So if that concerns you, another possibility would be:

$(apt-cache depends postgresql|awk '{print "sudo apt-get remove "$NF}')

Using Bash as your shell, this would basically do the following:

  1. apt-cache depends postgresql would list all packages the postgresql depends on, including postgresql itself. But each line would look like depends on: <package> -- so we pipe the output to...
  2. awk '{print "sudo apt-get remove "$NF}' which would take the last word on each line (which is the package name), and prints it out after preceding it with our intended command: sudo apt-get remove (you could of course also use apt-get purge instead).
  3. finally, using the $() construct, we advise Bash to interpret the output as command to be executed.

You could alternatively replace the 3rd step and instead redirect the output into a file:

apt-cache depends postgresql|awk '{print "sudo apt-get remove "$NF}' >

And then inspect the file, optionally do some adjustments (such as commenting out/removing lines where you want to keep a package), and finally execute the script using


Now you have a lot of possibilities to chose from :)

EDIT: Checking with more complex metapackages as e.g. lubuntu-desktop, above statements needs to be refined:

apt-cache depends <packageName>|grep "Depends on"|awk '{print "sudo apt-get remove "$NF}'

The grep is needed to restrict the result to dependencies (and skip the recommends etc.).

IMPORTANT: You should use this only for metapackages!!! otherwise, you may end up with an empty disk (e.g. postgresql-9.1 depends on libc6, and removing libc6 will certainly backfire as it is needed by a lot of packages).

So be careful, and better redirect to a file first (as explained) and investigate before execution.

share|improve this answer
apt-cache depends postgresql only shows that it depends on postgresql-9.1 – Marc Jul 22 '12 at 19:46
That's correct -- but I wouldn't iterate with the remove; postgresql-9.1 itself depends e.g. on libc6, and if you remove that you probably get an empty disk (almost). This said, I must add you should only use this on meta-packages, for the given reasons. In your example, the meta-package seems to hold only this one package -- looking on others I see it gets much more complex, and my above answer would need to be refined (check e.g. with the lxde metapackage, or lubuntu-desktop... – Izzy Jul 22 '12 at 20:14

HIt Alt+Ctrl+T and run:

sudo apt-get autoremove

This command removes packages that are no longer needed, which is due to removing a package (such as postgresql) that depends on them.

You can always purge the configuration files with:

sudo apt-get autoremove --purge

To clean even further, use the following:

sudo apt-get install deborphan sudo apt-get autoremove --purge
share|improve this answer
The bad side is that it can not purge packages (remove configuration files) of that metapackage. – Marc Jul 22 '12 at 20:31

Simple follow the following commands :

sudo apt-get install deborphan
sudo apt-get autoremove --purge postgresql
sudo apt-get autoremove --purge `deborphan`
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.