http://packages.ubuntu.com/source/maverick/aptにcmdline/apt-get.cc
あるソースtarballのファイルを見ると、これが設定を有効にする引数であることがわかります。--auto-remove
APT::Get::AutomaticRemove
コマンドautoremove
とremove
両方が関数を呼び出しますDoInstall
。
コマンド「autoremove」も設定する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]
もしあればパージも構成ファイルを削除します)