Knowledge Base:Missing keywords and keyword requests
This article is about packages that have not been marked as available for installation on a specific architecture, and how to make them available. On architectures such as amd64, this usually isn't required.
See accepting a keyword for a single package for how to install packages from the testing branch.
Here is an example of trying to emerge a package with no ~arm keyword.
emerge --ask media-libs/liblo
These are the packages that would be merged, in order: Calculating dependencies... done! !!! All ebuilds that could satisfy "=media-libs/liblo-0.31" have been masked. !!! One of the following masked packages is required to complete your request: - media-libs/liblo-0.31::gentoo (masked by: missing keyword) For more information, see the MASKED PACKAGES section in the emerge man page or refer to the Gentoo Handbook.
Gentoo installations on architectures with less keyword coverage, new architectures, embedded systems or specialized applications. While amd64 is probably the most common architecture with the most keywords added, it's possible to install Gentoo by stage3 on at least 10 architectures, not including prefix or variants with other C libraries than glibc. See a list of supported architectures and a directory of experimental downloads. A Raspberry Pi is an example; it's perfectly possible to have a desktop environment or run server processes on this type of machine as with other architectures, even though the ebuild in Gentoo may not have a keyword at all.
Lots of packages may compile on an architecture even if there is no ~arch keyword added to them, finding missing keywords and filing keyword requests on the bug tracker can help the Gentoo project extend support for different architectures. A package with an ~arch keyword means that the package has had some testing on that architecture, and would hopefully progress to being marked with a stable keyword (without the tilde prefix) once tested.
If the output of emerge contains "(masked by: ~arm keyword)" or your arch keyword prefixed with a tilde ~ then there is already a keyword added for the arch for that package. The package could then be a candidate to request stabilization instead, for the keyword to be changed and for the package to be marked stable.
To test packages with missing keywords for an architecture, add them to /etc/portage/package.accept_keywords appending ** (a space and two asterisks) to the category/package name and (optionally) the version required. Then emerge the package again.
mkdir -p /etc/portage/package.accept_keywords/
# Recommended. # Get the latest version but not any live ebuild (git/svn etc) <media-libs/liblo-9999 ** # Some other examples follow. # To accept the latest version. # This will pull in live git/svn ebuild if there is one which may not # be what was intended. Live ebuilds also need entries for package.unmask. media-libs/liblo ** # Or like this, pinning a particular version. =media-libs/liblo-0.31 **
emerge --ask media-libs/liblo
It's a good idea to have recently synchronized the Gentoo portage repository so the keywords are current. The Gentoo Cheat Sheet is a handy reference document for the different methods to sync.
Lots more packages with missing keywords would need to be added in the same manner to the /etc/portage/package.accept_keywords list if the package has a lot of dependencies. It's sometimes useful to keep these grouped in a file for that particular package or feature, if there are lots of them.
In some cases using the autounmask functions of portage to add the entries can make this process easier.
Fixing it for everybody
If the package compiles successfully and tests of the package succeed, open a bug to request keywords for the package(s).
* Product - Gentoo Linux * Component - Keywording * Hardware - Your architecture, for example arm or arm64. * Summary - "category/package ~myarch keyword request" * Bugzilla Keywords - do not add CC-ARCHES * Description - "I use this package on myarch please add ~myarch keyword"
Thanks to Jannik2099 on IRC for a magic link to open a template for arm64 keyword requests, here are some extra links for other arches. Click the link to go to a template for a keyword request on Gentoo bugzilla for each architecture.
Don't request keywording in some cases
equery m libreoffice
* app-office/libreoffice [gentoo] Maintainer: email@example.com (Gentoo Office project) Upstream: None specified Homepage: https://www.libreoffice.org Location: /var/db/repos/gentoo/app-office/libreoffice Keywords: 184.108.40.206-r1:0: amd64 arm64 x86 ~amd64-linux ~arm ~ppc64 Keywords: 220.127.116.11:0: Keywords: 7.2.9999:0: Keywords: 18.104.22.168-r1:0: Keywords: 7.3.9999:0: Keywords: 9999:0: License: || ( LGPL-3 MPL-1.1 )
- Knowledge Base:Accepting a keyword for a single package
- /etc/portage/package.accept_keywords — files or directories of files containing definitions for per-package ACCEPT_KEYWORDS statements.
- ACCEPT_KEYWORDS — informs the package manager which ebuilds' KEYWORDS values it is allowed to accept.
- Bugzilla/Bug report guide — explains how to report bugs on the Gentoo Bugzilla
- Package testing — provides information for ebuild developers on testing ebuilds.
- Gentoo Cheat Sheet — a reference card of useful commands and tips for administrating Gentoo systems.
Much of this page was written from taking notes from the chat on IRC in gentoo-arm. Thanks.