Using one branch
The ACCEPT_KEYWORDS variable defines what software branch to use on the system. It defaults to the stable software branch for the system's architecture, for instance x86.
It is recommended to stick with the stable branch. However, if the administrator wants to help the Gentoo project by running unstable software, an architecture testing branch can be used. In this instance: ~x86. Be aware, running unstable software may require submitting bug reports to https://bugs.gentoo.org if an issue with the is experienced.
To use more recent software, users can consider using the testing branch instead. To have Portage use the testing branch, add a ~ in front of the architecture.
The testing branch is exactly what it says - Testing. If a package is in testing, it means that the developers feel that it is functional but has not been thoroughly tested. Users using the testing branch might very well be the first to discover a bug in the package in which case they should file a bug report to let the developers know about it.
Beware though; using the testing branch might incur stability issues, imperfect package handling (for instance wrong/missing dependencies), too frequent updates (resulting in lots of building) or broken packages. Users that do not know how Gentoo works and how to solve problems, we recommend to stick with the stable and tested branch.
For example, to select the testing branch for the x86 architecture, edit /etc/portage/make.conf and set:
When changing from stable to testing, users will find out that lots of packages will be updated. Keep in mind that, after moving to the testing branch, it might be challenging to go back to the stable branch.
Mixing stable with testing
It is possible to ask Portage to allow the testing branch for particular packages but use the stable branch for the rest of the system. To achieve this, add the package category and name in /etc/portage/package.accept_keywords. It is also possible to create a directory (with the same name) and list the package in the files under that directory.
For instance, to use the testing branch for gnumeric:
Testing particular versions
To use a specific software version from the testing branch but don't want Portage to use the testing branch for subsequent versions, add in the version in the package.accept_keywords location. In this case use the = operator. It is also possible to enter a version range using the <=, <, > or >= operators.
In any case, if version information is added, an operator must be used. Without version information, an operator cannot be used.
In the following example we ask Portage to allow installing gnumeric-1.2.13 even when it is in the testing branch:
The Gentoo developers do not support the use of unmasking packages. Please exercise due caution when doing so. Support requests related to package.unmask and/or package.mask might not be answered.
When a package has been masked by the Gentoo developers, yet despite the reason mentioned in the package.mask file (situated in /var/db/repos/gentoo/profiles/ by default) a user still wants to use this package, then add the desired version (usually this will be the exact same line from the package.mask file in the profile) to the /etc/portage/package.unmask file (or in a file in that directory if it is a directory).
For instance, if
=net-mail/hotwayd-0.8 is masked, then it can be unmasked by adding the exact same line in the package.unmask location:
If an entry in /var/db/repos/gentoo/profiles/package.mask contains a range of package versions, then it is necessary to unmask only the version(s) that are actually needed. Please read the previous section to learn how to specify versions.
It is also possible to ask Portage not to take a certain package or a specific version of a package into account. To do so, mask the package by adding an appropriate line to the /etc/portage/package.mask location (either in that file or in a file in this directory).
For instance, to prevent Portage from installing kernel sources newer than gentoo-sources-4.9.16, add the following line at the package.mask location: