From 6cd9fbd763298816e5d010703ceb9ffad0c235c9 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 12 Mar 2010 10:59:37 +0100 Subject: [PATCH] * cmdline/apt-get.cc: - add a --only-upgrade flag to install command (Closes: #572259) That is NOT what is requested in e.g. #74067 - this is a very simple flag which behaves orthogonal to --no-upgrade not a full-blown upgrade option for a single package instead of the whole package set. --- cmdline/apt-get.cc | 14 +++++++++++++- debian/changelog | 2 ++ doc/apt-get.8.xml | 7 +++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 5a814e25..b35e16b9 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1098,7 +1098,17 @@ bool TryToInstall(pkgCache::PkgIterator Pkg,pkgDepCache &Cache, Pkg.Name()); return true; } - + + // Ignore request for install if package would be new + if (_config->FindB("APT::Get::Only-Upgrade", false) == true && + Pkg->CurrentVer == 0) + { + if (AllowFail == true) + ioprintf(c1out,_("Skipping %s, it is not installed and only upgrades are requested.\n"), + Pkg.Name()); + return true; + } + // Check if there is something at all to install pkgDepCache::StateCache &State = Cache[Pkg]; if (Remove == true && Pkg->CurrentVer == 0) @@ -1779,6 +1789,7 @@ bool DoInstall(CommandLine &CmdL) Cache[Pkg].Install() == false && (Cache[Pkg].Flags & pkgCache::Flag::Auto) && _config->FindB("APT::Get::ReInstall",false) == false && + _config->FindB("APT::Get::Only-Upgrade",false) == false && _config->FindB("APT::Get::Download-Only",false) == false) { ioprintf(c1out,_("%s set to manually installed.\n"), @@ -2821,6 +2832,7 @@ int main(int argc,const char *argv[]) /*{{{*/ {0,"fix-missing","APT::Get::Fix-Missing",0}, {0,"ignore-hold","APT::Ignore-Hold",0}, {0,"upgrade","APT::Get::upgrade",0}, + {0,"only-upgrade","APT::Get::Only-Upgrade",0}, {0,"force-yes","APT::Get::force-yes",0}, {0,"print-uris","APT::Get::Print-URIs",0}, {0,"diff-only","APT::Get::Diff-Only",0}, diff --git a/debian/changelog b/debian/changelog index d1983ee9..f27c096b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,6 +14,8 @@ apt (0.7.26) UNRELEASED; urgency=low Thanks to Osamu Aoki for pointing it out! (Closes: #567669) * apt-pkg/deb/dpkgpm.cc: - fix error message construction in OpenLog() + * cmdline/apt-get.cc: + - add a --only-upgrade flag to install command (Closes: #572259) -- David Kalnischkies Fri, 19 Feb 2010 21:21:43 +0100 diff --git a/doc/apt-get.8.xml b/doc/apt-get.8.xml index 3d22f262..4f8c8016 100644 --- a/doc/apt-get.8.xml +++ b/doc/apt-get.8.xml @@ -444,6 +444,13 @@ Configuration Item: APT::Get::Upgrade. + + Do not install new packages; When used in conjunction with install, + only-upgrade will prevent packages on the command line + from being upgraded if they are not already installed. + Configuration Item: APT::Get::Only-Upgrade. + + Force yes; This is a dangerous option that will cause apt to continue without prompting if it is doing something potentially harmful. It -- 2.20.1