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.

2 Answers 2


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, 2011 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, 2011 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, 2011 at 13:46
  • @pepoluan Glad I was of help. Everybody is a noob at some point :)
    – phunehehe
    Mar 21, 2011 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, 2011 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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .