En regardant dans le fichier cmdline/apt-get.cc
depuis l'archive tar source à http://packages.ubuntu.com/source/maverick/apt , je peux voir que --auto-remove
c'est un argument qui permet le APT::Get::AutomaticRemove
réglage.
Les commandes autoremove
et les remove
deux appellent la fonction DoInstall
.
La commande "autoremove" est APT::Get::AutomaticRemove
également définie et elle fait donc la même chose que --auto-remove
.
En regardant dans la DoAutomaticRemove
fonction, il est clairement visible que l'activation du APT::Get::AutomaticRemove
paramètre ( --auto-remove
et autoremove
fait cela) provoque une boucle Apt à travers tous les packages installés et marque les packages inutilisés pour la suppression.
De main()
:
CommandLine::Args Args[] = {
// ... stripped to save space
{0,"auto-remove","APT::Get::AutomaticRemove",0},
// ...
}
CommandLine::Dispatch Cmds[] = { // ...
{"remove",&DoInstall},
{"purge",&DoInstall},
{"autoremove",&DoInstall},
// ...
}
// ...
// Parse the command line and initialize the package library
CommandLine CmdL(Args,_config);
De DoInstall()
:
unsigned short fallback = MOD_INSTALL;
if (strcasecmp(CmdL.FileList[0],"remove") == 0)
fallback = MOD_REMOVE;
else if (strcasecmp(CmdL.FileList[0], "purge") == 0)
{
_config->Set("APT::Get::Purge", true);
fallback = MOD_REMOVE;
}
else if (strcasecmp(CmdL.FileList[0], "autoremove") == 0)
{
_config->Set("APT::Get::AutomaticRemove", "true");
fallback = MOD_REMOVE;
}
De la fonction DoAutomaticRemove
:
bool doAutoRemove = _config->FindB("APT::Get::AutomaticRemove", false);
// ...
// look over the cache to see what can be removed
for (pkgCache::PkgIterator Pkg = Cache->PkgBegin(); ! Pkg.end(); ++Pkg) {
if (doAutoRemove) {
if(Pkg.CurrentVer() != 0 &&
Pkg->CurrentState != pkgCache::State::ConfigFiles)
Cache->MarkDelete(Pkg, purgePkgs);
else
Cache->MarkKeep(Pkg, false, false);
}
}
Je ne peux pas dire si c'est prévu ou non, vous pouvez combler un bug / poser une question sur launchpad.net .
Pour le moment, il n'est pas possible d'exclure des packages de la suppression par apt-get autoremove
. Si vous souhaitez conserver des packages, exécutez apt-get -s autoremove
, copiez les packages de la liste et supprimez les packages de cette liste que vous souhaitez conserver. Enfin, supprimez ces packages: sudo apt-get purge [packages-to-be-removed]
(la purge supprime également les fichiers de configuration, le cas échéant)