Http://packages.ubuntu.com/source/maverick/aptcmdline/apt-get.cc
पर स्रोत टारबॉल से फ़ाइल में देखकर , मैं देख सकता हूं कि यह एक तर्क है जो सेटिंग को सक्षम करता है।--auto-remove
APT::Get::AutomaticRemove
कमांड autoremove
और remove
दोनों फ़ंक्शन को कॉल करते हैं DoInstall
।
कमांड "ऑटोरेमोव" APT::Get::AutomaticRemove
भी सेट करता है और इसलिए यह वैसा ही काम करता है --auto-remove
।
DoAutomaticRemove
फ़ंक्शन में देखते हुए , यह स्पष्ट रूप से दिखाई देता है कि APT::Get::AutomaticRemove
सेटिंग को सक्षम करना ( --auto-remove
और autoremove
ऐसा करता है) सभी स्थापित पैकेजों के माध्यम से एप्ट लूपिंग का कारण बनता है और हटाने के लिए अप्रयुक्त पैकेजों को चिह्नित करता है।
से 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);
से 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;
}
फ़ंक्शन से 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);
}
}
मैं नहीं बोल सकता कि यह इरादा है या नहीं, आप एक बग भर सकते हैं / launchpad.net पर एक प्रश्न पूछ सकते हैं ।
फिलहाल, पैकेज को डिलीट करने से रोकना संभव नहीं है apt-get autoremove
। यदि आप पैकेज रखना चाहते हैं, तो चलाएँ apt-get -s autoremove
, संकुल को सूची से कॉपी करें और उस सूची से संकुल हटा दें जिसे आप रखना चाहते हैं। अंत में, उन पैकेजों को हटा दें: sudo apt-get purge [packages-to-be-removed]
(शुद्ध विन्यास फाइल को हटा देता है, यदि कोई हो)