How remove all programs comes from a package? [duplicate]
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 head package
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:
-
apt-cache depends postgresql
would list all packages the postgresql depends on, including postgresql itself. But each line would look likedepends on: <package>
-- so we pipe the output to... -
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 useapt-get purge
instead). - 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}' >pg_remove.sh
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
bash pg_remove.sh
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.
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
deborphan