파일에 상대 cmdline/apt-get.cc의 소스 타르볼에서 http://packages.ubuntu.com/source/maverick/apt , 나는 볼 수 --auto-remove수 있도록하는 인수입니다 APT::Get::AutomaticRemove설정.
명령 autoremove과 remove둘 다 함수를 호출합니다 DoInstall.
"autoremove"명령 APT::Get::AutomaticRemove도 설정 되므로 --auto-remove.
이 DoAutomaticRemove기능을 살펴보면 APT::Get::AutomaticRemove설정 을 활성화하면 (이 작업 --auto-remove을 autoremove수행하면) 설치된 모든 패키지를 통해 Apt가 반복되고 사용되지 않는 패키지가 삭제 된 것으로 표시됩니다.
보낸 사람 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](퍼지하면 구성 파일도 제거됩니다)