diff options
author | Julian Andres Klode <julian.klode@canonical.com> | 2021-01-08 13:22:30 +0100 |
---|---|---|
committer | Julian Andres Klode <julian.klode@canonical.com> | 2021-01-08 13:22:30 +0100 |
commit | 5fddde78ad15e1f6160f65465139d2c1e416d047 (patch) | |
tree | 2ad03279165b4b0fd17d1c753487375dd4bd2a8f | |
parent | cf883949f245af02049d1b24ecfd2145e1958078 (diff) |
Only autoremove kernels in apt(8); respect --no-auto-remove
Automatically removing kernels in apt-get could be unexpected, so limit
it to apt for now. To handle --no-auto-remove correctly, rewrite the
hack that makes apt ignore APT::Get::AutomaticRemove options from config
files such that it unsets the option.
This then means we can do FindB("APT::Get::AutomaticRemove", true) as the
default for APT::Get::AutomaticRemove::Kernels and get the behavior we
want: If you set --no-auto-remove, it is respected as that FindB returns
false; if you don't set it, it will be true.
-rw-r--r-- | apt-private/private-cmndline.cc | 3 | ||||
-rw-r--r-- | apt-private/private-install.cc | 4 |
2 files changed, 3 insertions, 4 deletions
diff --git a/apt-private/private-cmndline.cc b/apt-private/private-cmndline.cc index 588dea06b..2049842db 100644 --- a/apt-private/private-cmndline.cc +++ b/apt-private/private-cmndline.cc @@ -506,8 +506,7 @@ static void BinaryCommandSpecificConfiguration(char const * const Binary, char c // we support it anyhow, but allow it on the commandline to take effect // even through it isn't documented as a user who doesn't want it wouldn't // ask for it - _config->Set("Binary::apt-get::APT::Get::AutomaticRemove", false); - _config->Set("Binary::apt::APT::Get::AutomaticRemove", false); + _config->Set("APT::Get::AutomaticRemove", ""); } } #undef CmdMatches diff --git a/apt-private/private-install.cc b/apt-private/private-install.cc index b110cbdc3..402f8f4b6 100644 --- a/apt-private/private-install.cc +++ b/apt-private/private-install.cc @@ -699,8 +699,8 @@ bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, std::vector<PseudoPkg OpTextProgress Progress(*_config); bool const distUpgradeMode = strcmp(CmdL.FileList[0], "dist-upgrade") == 0 || strcmp(CmdL.FileList[0], "full-upgrade") == 0; - if (distUpgradeMode) - _config->CndSet("APT::Get::AutomaticRemove::Kernels", "true"); + if (distUpgradeMode && _config->Find("Binary") == "apt") + _config->CndSet("APT::Get::AutomaticRemove::Kernels", _config->FindB("APT::Get::AutomaticRemove", true)); bool resolver_fail = false; if (distUpgradeMode == true || UpgradeMode != APT::Upgrade::ALLOW_EVERYTHING) |