Wenn ich die Datei cmdline/apt-get.ccaus dem Quell-Tarball unter http://packages.ubuntu.com/source/maverick/apt betrachte , sehe ich, dass dies --auto-removeein Argument ist, das die APT::Get::AutomaticRemoveEinstellung ermöglicht .
Die Befehle autoremoveund removebeide rufen die Funktion auf DoInstall.
Der Befehl "autoremove" wird APT::Get::AutomaticRemoveebenfalls gesetzt und macht daher das Gleiche wie --auto-remove.
Wenn Sie sich die DoAutomaticRemoveFunktion ansehen, sehen Sie deutlich, dass das Aktivieren der APT::Get::AutomaticRemoveEinstellung ( --auto-removeund autoremovedies auch) dazu führt, dass Apt alle installierten Pakete durchläuft und nicht verwendete Pakete zum Löschen markiert.
Von 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);
Von 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;
}
Ab Funktion 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);
}
}
Ich kann nicht sagen, ob es beabsichtigt ist oder nicht. Sie können einen Fehler melden oder eine Frage bei launchpad.net stellen .
Derzeit ist es nicht möglich, Pakete vom Löschen durch auszuschließen apt-get autoremove. Wenn Sie Pakete behalten möchten, führen Sie sie aus apt-get -s autoremove, kopieren Sie die Pakete aus der Liste und entfernen Sie die Pakete aus der Liste, die Sie behalten möchten. Schließlich entfernen Sie diese Pakete: sudo apt-get purge [packages-to-be-removed](Bereinigen entfernt auch die Konfigurationsdateien, falls vorhanden)