In Gentoo, what is the difference between amd64, ~amd64 and ~amd64-linux

chromedependenciesgentoo

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.

Best Answer

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.

Related Question