I have my setting at stable but there are a few unstable programs I install. emerge "USE=~X86" foo but when I an update it will blindly want to downgrade foo so you edit /etc/portage/package.keywords of course I knew that, no I didn't, I read a note in package.mask now emerge is happy um, some automation with something like first idea (-r is not taken) emerge -remember =foo-0.5 saves settings to /etc/portage/package.keywords checks if necessary, that is does it need to be saved in the first place checks for package.mask and flashes warning variation: emerge -remember "USE=bar" =foo-0.5 same as above but also saves the USE variable second idea (or -nomask) emerge -override =foo-0.5 emerge -override foo ignores/overides mask settings used to indicate an install and calls the above to remember the settings package.mask would ask for y/n confirmation third idea (or -available) emerge -list foo lists ALL version in current portage The additions of [stable|unstable] to the emerge -s foo output would be required. note that I have foo1, foo2, foo3 foo1 is the lastest stable foo2 is officially stable but unstable in gentoo. It is the one I want foo3 is the lastest unstable, the *unstable* development version thus I need a way to explictly choose versions, '=' support will do the hoops I have to jump through to install foo2. It's always has to be the latest version, either the lastest stable or latest unstable and anything in between is a pain to install.
I'm not a fan of enabling random-joe to merge packages that are outside of normal areas if they can't figure out how to merge them now. It saves our time (by eliminating bug reports) and requires users to learn so that can get what they want. Manual steps help shake the bugs and hidden issues loose. The listing of all available is doable. Just have to get it coded.
There's a strict rule for emerge that it won't touch user configuration files.