emerge '-k' recognizes the need to downgrade the version of rxvt from 2.7.10-r1 to 2.7.10, but '-K' thinks otherwise... ***********$ emerge -kpv --oneshot x11-terms/rxvt These are the packages that I would merge, in order: Calculating dependencies ...done! [binary UD] x11-terms/rxvt-2.7.10 [2.7.10-r1] -cjk +motif -xgetdefault Total size of downloads: 0 kB **********$ emerge -Kpv --oneshot x11-terms/rxvt These are the packages that I would merge, in order: Calculating dependencies ...done! [binary R ] x11-terms/rxvt-2.7.10-r1 -cjk -debug +motif -xgetdefault Total size of downloads: 0 kB ****************$ emerge --version Portage 2.0.51-r15 (default-linux/x86/2004.3, gcc-3.3.5, glibc-2.3.4.20040808-r1, 2.6.6 i686) ************$ grep KEYWORDS /usr/portage/x11-terms/rxvt/*.ebuild /usr/portage/x11-terms/rxvt/rxvt-2.7.10-r1.ebuild:KEYWORDS="~x86 ~ppc ~alpha ~sparc ~mips ~amd64 ~ppc64" /usr/portage/x11-terms/rxvt/rxvt-2.7.10.ebuild:KEYWORDS="x86 ppc alpha sparc ~mips amd64 ~ppc64"
This is by design. --usepkgonly does not use $PORTDIR for dep calculation at all and thus ignores all masking.
Then please fix the documentation in 'man emerge'. --usepkgonly (-K) Behaves just as --usepkg except that this will only emerge binary packages. All the binary packages must be available at the time of dependency calculation or emerge will simply abort. (emphasis on "just as --usepkg"). Is there a way to get the indicated behaviour of -K? i.e. install the versions that -k would try to install, but fail if binary packages don't exist? (I assume not).
emerge -kp foobar | grep ebuild > /dev/null || emerge -k foobar Of course, that wouldn't work if "ebuild" is within the name of one of the packages to be installed.
fixed in cvs