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.
Using portage you can do this with package.env
. The right place to look for the documentation is http://dev.gentoo.org/~zmedico/portage/doc/portage.html#config-bashrc-ebuild-phase-hooks. Basically the way you use it is as follows. First you create (assuming standard setup without custom ROOT
) a file in /etc/portage/env
. For example, you can create a file /etc/portage/env/paxmark
#paxmark
#Set this to what you need it to be
PAXFLAGS="-p"
post_src_install() {
find "${INSTALL}" -type x -print0 |xargs -0 -n 1 paxctl $PAXFLAGS
}
Then for all packages you want this to apply to you add an entry to /etc/portage/package.env
:
#package.env example for paxmark
sys-apps/gcc paxmark
This will apply the paxmark
script to the package that has it specified. Alternatively you can also create a /etc/portage/bashrc
script for global overrides (be very careful with that).
A general warning though, as you can add pre and post hooks to all phases this can be dangerous. Be careful with what you do as all your packages that use the hook have now become no more robust than your hook script. (The above example for pax marking should be fine).
Best Answer
equery depgraph <atom>
will list you a graph of the dependencies needs to be installedequery depend <atom>
lists all packages that directly need to be installed.