When I run equery depgraph www-client/chromium-10.0.648.151, not all dependencies are available. Some shows M[package.mask], while some other shows [missing keyword]. My ACCEPT_KEYWORDS is ~amd64-linux, according to emerge --info. I experimented with different ACCEPT_KEYWORDS (as an environmental variable passed to eqeury), and all have different missing dependencies. Among all possible combinations, only with ACCEPT_KEYWORDS='amd64 ~amd64 ~amd64-linux' all dependencies can be satisfied at once.

Here are my questions:

  1. Is ACCEPT_KEYWORDS='amd64 ~amd64 ~amd64-linux' a valid configuration?
  2. I learned from the documentation that amd64 mean stable, and ~amd64 means unstable. What about ~amd64-linux?
  3. If I select ~amd64, equery wouldn't use the packages available only to amd64, resulting in missing dependencies. Is this expected? If so, should unstable testers use at least ACCEPT_KEYWORDS='amd64 ~amd64' instead of ACCEPT_KEYWORDS='~amd64'?
  4. Does the order of the keywords matter?

Additional info: I installed Gentoo Prefix following this guide. By default, $EPREFIX/etc/make.profile is a symlink to $EPREFIX/usr/portage/profiles/prefix/linux/amd64 and contains a make.defaults that has ACCEPT_KEYWORDS="-amd64 ~amd64-linux". Neither $EPREFIX/etc/make.conf nor $EPREFIX/etc/make.globals has ACCEPT_KEYWORDS configured. According to eselect profile list, no profile is selected.


1. Is ACCEPT_KEYWORDS='amd64 ~amd64 ~amd64-linux' a valid configuration?

From man make.conf:

ACCEPT_KEYWORDS = [space delimited list of KEYWORDS]

So ACCEPT_KEYWORDS='amd64 ~amd64 ~amd64-linux' is a valid combination.

2. What about ~amd64-linux?

amd64-linux is a Prefix thing. I don't know much about Prefix, but I can see amd64-linux in the list of valid keywords at /usr/portage/profiles/arch.list, in the section named "Prefix keywords". ~amd64-linux is just the testing counterpart of amd64-linux.

3. ACCEPT_KEYWORDS='amd64 ~amd64' vs just ~amd64

If you have ~amd64 in your ACCEPT_KEYWORDS, portage will use all the latest ebuilds, which often contains a lot of unstable stuff. I think that's why missing dependencies are to be expected. For example, that can happen if you want to install software-a, and the latest one in the testing branch is software-a-2.3.4, which requires library-b-5.6.7, which doesn't have an ebuild yet. Regarding amd64 ~amd64 and just ~amd64, they are the same, really, because if your architecture is amd64 you will have amd64 in ACCEPT_KEYWORDS, no matter what.

4. Does the order of the keywords matter?

No, because it's just a matter of whether your ACCEPT_KEYWORDS variable contains a certain keyword or not. It's like a set (unordered).

Having used Gentoo for a while, I still don't have the dare to put ~amd64 in my ACCEPT_KEYWORDS. It's so unstable it's really not recommended, setting it up for the first time guarantees a lot of breakage.

  • thanks for the very clear explanation. in my case, I still had to put in ~amd64 to get the latest xtables-addons. but since my Gentoo box serves as a pure firewall, I'm not really concerned of other packages' stability :)
    – pepoluan
    Mar 21 '11 at 7:08
  • 2
    @pepoluan If ~amd64 is just to have xtables-addons then you should put it in /etc/portage/package.keywords or /etc/portage/package.accept_keywords instead of using the unstable testing branch. For more information refer to man portage, or ask here in a different question.
    – phunehehe
    Mar 21 '11 at 7:42
  • gosh, you're right >.< ... I apologize, it seems my n00bness shines through :P ... anyways, I'm not the original poster, just a wayward commenter :)
    – pepoluan
    Mar 21 '11 at 13:46
  • @pepoluan Glad I was of help. Everybody is a noob at some point :)
    – phunehehe
    Mar 21 '11 at 13:49
  • Thanks for your detailed answer. I don't understand why but the default keyword is ~amd64-linux (with amd64 explicitly removed). So far it's running well =)
    – netvope
    Mar 21 '11 at 15:24

The ACCEPT_KEYWORDS environment variable is for allowing "all" not-yet-marked stable packages/versions for the current architecture to be built.

The ~ in front of an arch means unstable (not "completely" tested).

The often better approach is to use /etc/portage/package.keywords and list the package in there with the ~amd64 keyword if you really need the latest build.

By the way: amd64 firewall, isn't that how wikipedia defines overkill?

  1. Yes
  2. Never heard of "~amd64-linux", but the ~ means "unstable".
  3. No, it is not expected that "~amd64" excludes "amd64".
  4. No.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.