[Aptitude-devel] Bug#661188: Bug#661188: aptitude purge <package> recursively REMOVES BUT DOES NOT PURGE the unneeded dependencies of <package>

Daniel Hartwig mandyke at gmail.com
Tue Feb 28 05:22:52 UTC 2012

2012/2/28 Georgiy Treyvus <georgiytreyvus at gmail.com>:
> One thing I think that can be done is to modify the documentation to be
> clearer about these things so that there are no surprises.

Could you point out where the documentation is unclear, or how precisely
it could be made more clear?

The descriptions for "purge" and "remove" do not in any way state that
dependencies will also be acted on.

The behaviour of removing unused dependencies is part of a separate
cleanup action which aptitude performs.  This is controlled and
documented by the configuration item Aptitude::Delete-Unused.

IMO, the understanding that "aptitude purge pkg" means "purge pkg and also
purge all of it's unused dependencies" is not contained in the docs.  But
that's me :-)

With Delete-Unused (the default), "aptitude x" means "do x; then clean
up any unused packages".

> Things can however be made more flexible/convenient with package groups.
> Just out of curiosity does APT have the notion of package groups because I
> know that Pacman does? Read this to help clarify if
> needed. https://wiki.archlinux.org/index.php/KDE_Packages

I believe this type of thing is the job of tasks and tasksel.  However, I
have made a note of it anyway.

> Speaking of the automated install it should not be in the advanced section
> of the installation disk and should be more visible to n00bs...

You will have to direct such suggestions to the debian-installer team.

> Also though I understand your reasoning for the behavior of "aptitude remove
> <package>" and "aptitude purge <package>" I really think remove should
> remove recursively and purge should purge recursively. That's how it works
> in Pacman when you add the -n or --nosave
> option. http://www.archlinux.org/pacman/pacman.8.html
> Also further experimentation has shown that
> "aptitude remove <package>" == "apt-get remove <package> && apt-get
> autoremove"
> "aptitude purge <package>" == "apt-get purge <package> && apt-get
> autoremove"

Yes.  This is the intended and documented behaviour--see above.

If you set Aptitude::Delete-Unused to 'false' then:

"aptitude remove <package>" == "apt-get remove <package>"

> This equivalence is exact for say you have package A depending on B and C.
> Say you have package D depending on E and F. Say you go:
> aptitude install A D
> apt-get remove A
> B and C are still installed. Now say you go:
> aptitude remove d
> Not only are E and F removed as is expected by aptitude's recursive nature
> but B and C are also. This unlike pacman's "pacman -Rs d" which will remove
> e and f, but leave b and c untouched unless they are:
So the user in this situation desires to keep B and C installed?  In
the APT world such a desire is indicated to the package manager by
marking those packages as manually installed.

It seems the crux of what you are after is a middle ground between "remove"
and "autoremove"?  You mention that pacman supports this.

More information about the Aptitude-devel mailing list