summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-private/private-cmndline.cc10
-rwxr-xr-xtest/integration/test-apt-get-autoremove41
2 files changed, 51 insertions, 0 deletions
diff --git a/apt-private/private-cmndline.cc b/apt-private/private-cmndline.cc
index b8b29e9c8..de3992a00 100644
--- a/apt-private/private-cmndline.cc
+++ b/apt-private/private-cmndline.cc
@@ -474,6 +474,16 @@ static void BinaryCommandSpecificConfiguration(char const * const Binary, char c
std::string const binary = flNotDir(Binary);
if (binary == "apt-get" && CmdMatches("update"))
_config->CndSet("Binary::apt-get::Acquire::AllowInsecureRepositories", true);
+ if ((binary == "apt" || binary == "apt-get") && CmdMatches("upgrade", "dist-upgrade", "full-upgrade"))
+ {
+ //FIXME: the option is documented to apply only for install/remove, so
+ // we force it false for configuration files where users can be confused if
+ // 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);
+ }
}
#undef CmdMatches
/*}}}*/
diff --git a/test/integration/test-apt-get-autoremove b/test/integration/test-apt-get-autoremove
index 8af864acb..6f3452fbd 100755
--- a/test/integration/test-apt-get-autoremove
+++ b/test/integration/test-apt-get-autoremove
@@ -46,6 +46,47 @@ Reading state information...
1 package was automatically installed and is no longer required.
Use '$AUTOREMOVE' to remove it.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget install -s -o APT::Get::HideAutoRemove=small
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following package was automatically installed and is no longer required:
+ po-debconf
+Use '$AUTOREMOVE' to remove it.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget upgrade -s
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ po-debconf
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv po-debconf [1.0.16]' aptget install -s --autoremove
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following packages will be REMOVED:
+ po-debconf
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv po-debconf [1.0.16]' aptget upgrade -s --autoremove
+echo 'APT::Get::AutomaticRemove "true";' > rootdir/etc/apt/apt.conf.d/autoremoval
+testsuccessequal 'Reading package lists...
+Building dependency tree...
+Reading state information...
+The following packages will be REMOVED:
+ po-debconf
+0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
+Remv po-debconf [1.0.16]' aptget install -s
+testequal "Reading package lists...
+Building dependency tree...
+Reading state information...
+Calculating upgrade...
+The following package was automatically installed and is no longer required:
+ po-debconf
+Use '$AUTOREMOVE' to remove it.
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget upgrade -s
+rm -f rootdir/etc/apt/apt.conf.d/autoremoval
+
testdpkginstalled 'po-debconf'
echo 'APT::NeverAutoRemove { "^po-debconf$"; };' > rootdir/etc/apt/apt.conf.d/00autoremove