I recently had to update perl and its deps (bash, groff, libperl, python, ncurses and portage) and told it "emerge -u perl", but as I hunted the problem down (after it quit a compile of one of the deps), I found out that whichever of the packages I wanted to update, it did unmerge the recent package it had just merged (eg. emerge -u python -> merges python-2.2.2 -> tells me "will be unmerged: 2.2.2, protected 2.2.1-rXX" and if I wouldnt interrupt, it would unmerge python 2.2.2 again, instead of the old one I wanted to replace with a new version). I was using portage 2.0.44 at the moment these problems came up, but even the 2.0.46-r10 (think it was 10), didnt make a change. So I had to unmerge the package first (including bash, hm.) and re-emerge the package. Or emerge the new one and unmerge the old one afterwards (would say "omitted: [new version] unmerging: [old version]". Hope you can reproduce that problem and fix it. Reproducible: Always Steps to Reproduce: 1. emerge -u [package] Actual Results: Unmerging: [new version] Protected: [old version] Expected Results: Unmerging: [old version] Protected or Omitted: [new version]
Running: # regenworld # AUTOCLEAN="no" emerge -e world will fix it. It's corrupt COUNTER files in your portage db. There is a script in bugs somewhere that can fix that. It shouldn't happen ever again in >=portage-2.0.46-r10. Your problem started with 2.0.44 so it'll persist until you rebuild with 2.0.46 or you fix the counters by hand.