Просмотр исходного кода

* cmdline/apt-get.cc:
- do not clean the auto-flag in "remove" mode (e.g. apt-get remove already-installed-pkg)
- only show packages in the auto-remove list that are not already marked for removal

Michael Vogt лет назад: 19
Родитель
Сommit
fd59a71340
1 измененных файлов с 9 добавлено и 4 удалено
  1. 9 4
      cmdline/apt-get.cc

+ 9 - 4
cmdline/apt-get.cc

@@ -1417,9 +1417,13 @@ bool DoAutomaticRemove(CacheFile &Cache)
 	 if(Pkg.CurrentVer() != 0 || Cache[Pkg].Install())
 	    if(Debug)
 	       std::cout << "We could delete %s" <<  Pkg.Name() << std::endl;
-	   
-	 autoremovelist += string(Pkg.Name()) + " ";
-	 autoremoveversions += string(Cache[Pkg].CandVersion) + "\n";
+	  
+	 // only show stuff in the list that is not yet marked for removal
+	 if(Cache[Pkg].Delete() == false) 
+	 {
+	    autoremovelist += string(Pkg.Name()) + " ";
+	    autoremoveversions += string(Cache[Pkg].CandVersion) + "\n";
+	 }
 	 if (doAutoRemove)
 	 {
 	    if(Pkg.CurrentVer() != 0 && 
@@ -1611,7 +1615,8 @@ bool DoInstall(CommandLine &CmdL)
 	    // 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 && 
+	    if(!Remove && 
+	       Cache[Pkg].Install() == false && 
 	       (Cache[Pkg].Flags & pkgCache::Flag::Auto))
 	    {
 	       ioprintf(c1out,_("%s set to manual installed.\n"),