diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2007-03-14 12:41:37 +0100 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2007-03-14 12:41:37 +0100 |
commit | e4b74e4b347ccde887a3d7d8a585dcf264e13305 (patch) | |
tree | a39975c1afd4b5f0b2df19baf1a727873d06289e /cmdline/apt-get.cc | |
parent | 92b9551f03035f5a875a44588a318773f652da6a (diff) |
* cmdline/apt-get.cc:
- apt-get install foo
for a already installed package foo that is marked "auto" will clear
the auto-flag
Diffstat (limited to 'cmdline/apt-get.cc')
-rw-r--r-- | cmdline/apt-get.cc | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 6c1b915ab..8f4e17898 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -1484,6 +1484,7 @@ bool DoInstall(CommandLine &CmdL) if (Cache->BrokenCount() != 0) BrokenFix = true; + unsigned int AutoMarkChanged = 0; unsigned int ExpectedInst = 0; unsigned int Packages = 0; pkgProblemResolver Fix(Cache); @@ -1606,6 +1607,18 @@ bool DoInstall(CommandLine &CmdL) return false; if (TryToInstall(Pkg,Cache,Fix,Remove,BrokenFix,ExpectedInst) == false) return false; + + // see if we need to fix the auto-mark flag + // e.g. apt-get install foo + // where foo is marked automatic + if(Cache[Pkg].Install() == false && + (Cache[Pkg].Flags & pkgCache::Flag::Auto)) + { + ioprintf(c1out,_("%s set to manual installed.\n"), + Pkg.Name()); + Cache->MarkAuto(Pkg,false); + AutoMarkChanged++; + } } } @@ -1768,6 +1781,14 @@ bool DoInstall(CommandLine &CmdL) } + // if nothing changed in the cache, but only the automark information + // we write the StateFile here, otherwise it will be written in + // cache.commit() + if (AutoMarkChanged > 0 && + Cache->DelCount() == 0 && Cache->InstCount() == 0 && + Cache->BadCount() == 0) + Cache->writeStateFile(NULL); + // See if we need to prompt if (Cache->InstCount() == ExpectedInst && Cache->DelCount() == 0) return InstallPackages(Cache,false,false); |