diff options
author | David Kalnischkies <kalnischkies@gmail.com> | 2011-02-07 13:08:43 +0100 |
---|---|---|
committer | David Kalnischkies <kalnischkies@gmail.com> | 2011-02-07 13:08:43 +0100 |
commit | bea417121247afe00cdd4ba13215544d5b5d3262 (patch) | |
tree | 72a972560ba2589c1b7ae0f359e4d5a877b7b301 /cmdline | |
parent | a1ac2ca85ae4d7c8b3ab3c4e2f3ba6c26202c363 (diff) |
always do removes first and set not installed remove packages
on hold to prevent temporary installation later (Closes: #549968)
Diffstat (limited to 'cmdline')
-rw-r--r-- | cmdline/apt-get.cc | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index e93d12c2b..a6377f9f1 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -895,7 +895,11 @@ struct TryToRemove { if ((Pkg->CurrentVer == 0 && PurgePkgs == false) || (PurgePkgs == true && Pkg->CurrentState == pkgCache::State::NotInstalled)) + { ioprintf(c1out,_("Package %s is not installed, so not removed\n"),Pkg.FullName(true).c_str()); + // MarkInstall refuses to install packages on hold + Pkg->SelectedState = pkgCache::State::Hold; + } else Cache->GetDepCache()->MarkDelete(Pkg, PurgePkgs); } @@ -1790,14 +1794,7 @@ bool DoInstall(CommandLine &CmdL) return false; } - unsigned short order[] = { 0, 0, 0 }; - if (fallback == MOD_INSTALL) { - order[0] = MOD_INSTALL; - order[1] = MOD_REMOVE; - } else { - order[0] = MOD_REMOVE; - order[1] = MOD_INSTALL; - } + unsigned short const order[] = { MOD_REMOVE, MOD_INSTALL, 0 }; TryToInstall InstallAction(Cache, Fix, BrokenFix); TryToRemove RemoveAction(Cache, Fix); |