From 5fddde78ad15e1f6160f65465139d2c1e416d047 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Fri, 8 Jan 2021 13:22:30 +0100 Subject: 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. --- apt-private/private-cmndline.cc | 3 +-- apt-private/private-install.cc | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) (limited to 'apt-private') 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::vectorCndSet("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) -- cgit v1.2.3