All files in the make.profile directory may be tweaked via parent profiles when using cascading profiles. For more info, please see https://wiki.gentoo.org/wiki/Profile_(Portage)
deprecated eapi make.defaults packages packages.build package.accept_keywords package.bashrc package.keywords package.mask package.provided package.unmask package.use package.use.force package.use.mask package.use.stable.force package.use.stable.mask parent profile.bashrc soname.provided use.force use.mask use.stable.mask use.stable.force virtuals
bashrc binrepos.conf categories color.map license_groups make.conf(5) mirrors modules package.accept_keywords package.accept_restrict package.env package.keywords package.license package.mask package.properties package.unmask package.use postsync.d repo.postsync.d repos.conf sets.conf
sets.conf
layout.conf pkg_desc_index
arch.list categories info_pkgs info_vars license_groups make.defaults package.mask package.unmask package.use package.use.force package.use.mask package.use.stable.force package.use.stable.mask profiles.desc repo_name thirdpartymirrors use.desc use.force use.local.desc use.mask use.stable.mask use.stable.force
make.globals repos.conf sets
config world world_sets
Extended Atom Syntax
The following atom syntax extensions are only supported in user
configuration files and command line arguments for programs such as
emerge(1):
Examples:
# match sed from the 'gentoo' repository sys-apps/sed::gentoo # match kdelibs from the 'kde-testing' repository kde-base/kdelibs::kde-testing # match empathy from the 'gnome' repository net-im/empathy::gnome
Examples:
# match anything with a version containing 9999, which can be used in # package.mask to prevent emerge --autounmask from selecting live ebuilds =*/*-*9999* # match anything with a version containing _beta =*/*-*_beta* # match anything from the 'sys-apps' category sys-apps/* # match packages named 'zlib' from any category */zlib # match any package from a category that begins with 'net-' net-*/* # match any package name from any category */* # match any package from the 'gentoo' repository */*::gentoo
Any file in this directory, directories of other profiles or top-level "profiles" directory that begins with "package." or "use." can be more than just a flat file. If it is a directory, then all the files in that directory will be sorted in lexical order by file name and summed together as if it were a single file. Note that this behavior is only supported since portage-2.1.6.7, and it is not included in PMS at this time.
Example:
${repository_location}/profiles/package.mask/removals ${repository_location}/profiles/package.mask/testing
Example:
default/linux/amd64/17.0 # emerge -n '>=sys-apps/portage-2.3.62' # rm -f /etc/portage/make.profile # ln -s /var/db/repos/gentoo/profiles/default/linux/amd64/17.0 /etc/portage/make.profile
If the eapi file does not exist, then the EAPI defaults to 0 unless the default has been overridden by a profile_eapi_when_unspecified setting inside metadata/layout.conf of the containing repository.
Format:
- comments begin with # (no inline comments) - one DEPEND atom per line - packages to be added to the @system set begin with a * - packages to be added to the @profile set do not begin with a * - packages may only be added to the @profile set if the containing repository's layout.conf has 'profile-set' listed in the profile-formats field. Otherwise, packages that do not begin with '*' will simply be ignored for legacy reasonsNote: In a cascading profile setup, you can remove packages in children profiles which were added by parent profiles by prefixing the atom with a '-'. The '-*' wildcard discards all @system and @profile packages added by parent profiles.
Example:
# i am a comment ! # pull a version of glibc less than 2.3 into @system *<sys-libs/glibc-2.3 # pull any version of bash into @system *app-shells/bash # pull a version of readline earlier than 4.2 into @system *<sys-libs/readline-4.2 # pull vim into @profile app-editors/vim
Note:
- The bashrc files will be sourced after profile.bashrc for the same profile. - profile-formats in metadata/layout.conf must contain profile-bashrcs for this to be enabled.
Format:
- comments begin with # (no inline comments). - one atom per line with space-delimited list of bashrc files.
Example:
# By setting INSTALL_MASK in bashrc/nostandardconf.conf, we can avoid installing # the standard configuration and enable another package to install it. net-misc/dhcp nostardardconf.conf
For example, if you manage your own copy of a 2.6 kernel, then you can tell portage that 'sys-kernel/development-sources-2.6.7' is already taken care of and it should get off your back about it.
Portage will not attempt to update a package that is listed here unless another package explicitly requires a version that is newer than what has been listed. Dependencies that are satisfied by package.provided entries may cause installed packages satisfying equivalent dependencies to be removed by emerge(1) --depclean actions (see the ACTIONS section of the emerge(1) man page for more information).
Format:
- comments begin with # (no inline comments) - one DEPEND atom per line - relational operators are not allowed - must include a version
Example:
# you take care of the kernel sys-kernel/development-sources-2.6.7 # you installed your own special copy of QT x11-libs/qt-3.3.0 # you have modular X but packages want monolithic x11-base/xorg-x11-6.8
Note: In a cascading profile setup, you can remove USE flags in children profiles which were added by parent profiles by prefixing the flag with a '-'.
Format:
- comments begin with # (no inline comments) - one DEPEND atom per line with space-delimited USE flags
Example:
# force docs for GTK 2.x =x11-libs/gtk+-2* doc # unforce mysql support for QT x11-libs/qt -mysql
Note: In a cascading profile setup, you can remove USE flags in children profiles which were added by parent profiles by prefixing the flag with a '-'.
Format:
- comments begin with # (no inline comments) - one DEPEND atom per line with space-delimited USE flags
Example:
# mask docs for GTK 2.x =x11-libs/gtk+-2* doc # unmask mysql support for QT x11-libs/qt -mysql
When multiple parent profiles are specified, they are inherited in order from the first line to the last.
If layout.conf is new enough, you can also use the <repo>:<path> syntax. The <repo> is the same string as is stored in the repo_name file (or omitted to refer to the current repo), and <path> is a subdir starting at profiles/.
Format:
- comments begin with # (no inline comments) - line begins with a multilib category - multilib category is followed by one or more sonames - only one multilib category is allowed per line - prefixing an soname with a '-' will negate a parent profile setting
Example:
# provide libc and ld-linux sonames for x86_32 and x86_64 categories x86_32 ld-linux.so.2 libc.so.6 x86_64 ld-linux-x86-64.so.2 libc.so.6
Note: In a cascading profile setup, you can remove USE flags in children profiles which were added by parent profiles by prefixing the flag with a '-'.
Format:
- comments begin with # (no inline comments) - one USE flag per line
Note: In a cascading profile setup, you can remove USE flags in children profiles which were added by parent profiles by prefixing the flag with a '-'.
Format:
- comments begin with # (no inline comments) - one USE flag per line
Example:
# mask doc doc # unmask mysql -mysql
Format:
- comments begin with # (no inline comments) - one virtual and DEPEND atom base pair per line
Example:
# use net-mail/ssmtp as the default mta virtual/mta net-mail/ssmtp # use app-dicts/aspell-en as the default dictionary virtual/aspell-dict app-dicts/aspell-en
Example:
/etc/portage/package.accept_keywords/common /etc/portage/package.accept_keywords/e17 /etc/portage/package.accept_keywords/kde
Additional package-specific bashrc files can be created in /etc/portage/env.
Format:
- comments begin with # (no inline comments) - configuration of each repository is specified in a section starting with "[${repository_name}]" - attributes are specified in "${attribute} = ${value}" format
Example:
[example-binhost] # repos with higher priorities are preferred when packages with equal # versions are found in multiple repos priority = 9999 # packages are fetched from here sync-uri = https://example.com/binhost
Format:
- one category per line
Example:
app-hackers media-other
Format:
- comments begin with # (no inline comments) - mirror type followed by a list of hosts
Example:
# local private mirrors used only by my company local ftp://192.168.0.3/mirrors/gentoo http://192.168.0.4/distfiles # people in japan would want to use the japanese mirror first sourceforge http://keihanna.dl.sourceforge.net/sourceforge # people in tawain would want to use the local gnu mirror first gnu ftp://ftp.nctu.edu.tw/UNIX/gnu/
Example:
portdbapi.auxdbmodule = portage.cache.sqlite.database
After changing the portdbapi.auxdbmodule setting, it may be necessary to transfer or regenerate metadata cache. Users of the rsync tree need to run `emerge --metadata` if they have enabled FEATURES="metadata-transfer" in make.conf(5). In order to regenerate metadata for repositories not distributing pregenerated metadata cache, run `emerge --regen` (see emerge(1)). If you use something like the sqlite module and want to keep all metadata in that format alone (useful for querying), enable FEATURES="metadata-transfer" in make.conf(5).
Format:
- comment lines begin with # (no inline comments) - one DEPEND atom per line followed by additional KEYWORDS - lines without any KEYWORDS imply unstable host arch Example: # always use unstable libgd media-libs/libgd ~x86 # only use stable mplayer media-video/mplayer -~x86 # always use unstable netcat net-analyzer/netcat
Note: In addition to the normal values from ACCEPT_KEYWORDS package.keywords supports three special tokens:
* package is visible if it is stable on any architecture ~* package is visible if it is in testing on any architecture ** package is always visible (KEYWORDS are ignored completely)
Additional Note: If you encounter the -* KEYWORD, this indicates that the package is known to be broken on all systems which are not otherwise listed in KEYWORDS. For example, a binary only package which is built for x86 will look like:
games-fps/quake3-demo-1.11.ebuild:KEYWORDS="-* x86"
If you wish to accept this package anyways, then use one of the other keywords in your package.accept_keywords like this:
games-fps/quake3-demo x86
Format:
- comment lines begin with # (no inline comments) - one DEPEND atom per line followed by additional RESTRICT tokens
Format:
- comment lines begin with # (no inline comments) - one DEPEND atom per line followed by name(s) of environment file(s)
Example:
# use environment variables from /etc/portage/env/glibc.conf for the glibc package sys-libs/glibc glibc.conf
Format:
- comment lines begin with # (no inline comments) - one DEPEND atom per line followed by additional licenses or groups
Format:
- comment lines begin with # (no inline comments) - one DEPEND atom per line
Example:
# mask out versions 1.0.4496 of the nvidia # drivers and later >=media-video/nvidia-kernel-1.0.4496 >=media-video/nvidia-glx-1.0.4496
Format:
- comment lines begin with # (no inline comments) - one DEPEND atom per line followed by additional properties
Format:
- comments begin with # (no inline comments) - one DEPEND atom per line with space-delimited USE flags - USE flags can be prefixed with USE_EXPAND name followed by a colon (:) and a space. In this case, all the names following it are treated as values for the USE_EXPAND. Note that if you need to remove earlier assignments or defaults, you need to explicitly specify '-*'.
Example:
# turn on docs for GTK 2.x =x11-libs/gtk+-2* doc # disable mysql support for QT x11-libs/qt -mysql # set preferred video card for all packages */* VIDEO_CARDS: -* radeon
Using this information it is possible for hooks to be run for only a certain repository. This way other update actions can be performed for that repository only.
Format:
- comments begin with # (no inline comments) - configuration of each repository is specified in a section starting with "[${repository_name}]" - attributes are specified in "${attribute} = ${value}" format
Attributes supported in sections of repositories:
Warning: It is a security vulnerability to disable this option because this will prevent detection of revoked keys!
Example:
[DEFAULT] # make gentoo the main repository, which makes it the default master # repository for repositories that do not specify masters main-repo = gentoo # make all repositories inherit eclasses from the java-overlay and # java-experimental repositories, with eclasses from java-experimental # taking precedence over those from java-overlay eclass-overrides = java-overlay java-experimental [gentoo] # repos with higher priorities are preferred when ebuilds with equal versions # are found in multiple repos (see the `emerge --info --verbose` repo # display for a listing of repos and their corresponding priorities). priority = 9999 # disable all eclass overrides for ebuilds from the gentoo repository eclass-overrides = # when processing metadata/layout.conf from other repositories, substitute # 'gentoo' in place of references to repositories named 'foo' and 'bar', # and discard the 'baz' alias contained in gentoo's layout.conf aliases = foo bar -baz [kde-testing] # override the metadata/layout.conf masters setting from the kde-testing repo masters = gentoo kde [python] # override the metadata/layout.conf masters setting from the python repo, # so that settings won't be inherited from those masters, and so that # those master repos won't be required as dependencies (the user must # ensure that any required dependencies such as eclasses are satisfied) masters = # Repository 'gentoo' synchronized using CVS [gentoo] location = /var/db/repos/gentoo sync-type = cvs sync-uri = :pserver:anonymous@anoncvs.gentoo.org:/var/cvsroot sync-cvs-repo = gentoo-x86 auto-sync = yes # Overlay 'voip' syncronized with layman's plug-in sync module [voip] location = /var/lib/layman/voip sync-type = laymanator sync-uri = git://anongit.gentoo.org/proj/voip.git auto-sync = yes
Example:
[world] class = portage.sets.base.DummyPackageSet packages = @profile @selected @system [usersets] class = portage.sets.files.StaticFileSet multiset = true directory = %(PORTAGE_CONFIGROOT)setc/portage/sets world-candidate = True [module-rebuild] class = portage.sets.dbapi.OwnerSet files = /lib/modules
Portage will source all of these bashrc files after /etc/portage/bashrc in the following order:
Also see /var/lib/portage/world_sets and the emerge(1) --list-sets option.
Patches from more-specific directories overrides patches from less-specific, i.e. if patches with the same name coexist in different directories matches same package, only patch from directory matches the first matching pattern will be applied. Patches for each package are applied in the POSIX lexicographic order. Patch file name must end in ".patch" or, for EAPI >= 6, in ".diff".
If package ebuild uses EAPI <= 5, it must explicitly invoke epatch_user or inherit epatch.eclass(5) and rely on default src_prepare for apply patches. Otherwise, patches are silently ignored. If package ebuild uses EAPI >= 6, applying user patches is mandatory.
Format:
- comments begin with # (no inline comments) - attributes are specified in "${attribute} = ${value}" format
Supported attributes.
# Specify the repository name (overriding profiles/repo_name). repo-name = foo-overlay # eclasses provided by java-overlay take precedence over identically named # eclasses that are provided by gentoo masters = gentoo java-overlay # indicate that this repo can be used as a substitute for foo-overlay aliases = foo-overlay # indicate that ebuilds with the specified EAPIs are banned eapis-banned = 0 1 # indicate that ebuilds with the specified EAPIs are deprecated eapis-deprecated = 2 3 4 # sign commits in this repo, which requires Git >=1.7.9, and # key configured by `git config user.signingkey key_id` sign-commits = true # do not sign Manifest files in this repo sign-manifests = false # Manifest files only contain DIST entries thin-manifests = true # indicate that this repo requires manifests for each package, and is # considered a failure if a manifest file is missing/incorrect use-manifests = strict # customize the set of hashes generated for Manifest entries manifest-hashes = SHA256 SHA512 WHIRLPOOL # indicate that this repo contains the md5-dict cache format, # which may be generated by egencache(1) cache-formats = md5-dict # indicate that this repo contains profiles that may use directories for # package.mask, package.provided, package.use, package.use.force, # package.use.mask, package.use.stable.force, package.use.stable.mask, # use.force, use.mask, use.stable.force, and use.stable.mask. # profile-formats = portage-1 # indicate that paths such as 'gentoo:targets/desktop' or ':targets/desktop' in # profile parent files can be used to express paths relative to the root # 'profiles' directory of a repository (when the repo name is omitted before # the colon, it refers to the current repository the parent file is inside) profile-formats = portage-2
Example:
sys-apps/sed 4.2 4.2.1 4.2.1-r1 4.2.2: Super-useful stream editor sys-apps/usleep 0.1: A wrapper for usleep
Format:
- one KEYWORD per line
Example:
x86 ppc sparc
Format:
- one category per line
Example:
app-admin dev-lang games-strategy sys-kernel
Format:
- comments begin with # (no inline comments) - one group name, followed by list of licenses and nested groups - nested groups are prefixed with the '@' symbol
Example:
# The FSF-APPROVED group includes the entire GPL-COMPATIBLE group and more. FSF-APPROVED @GPL-COMPATIBLE Apache-1.1 BSD-4 MPL-1.0 MPL-1.1 # The GPL-COMPATIBLE group includes all licenses compatible with the GNU GPL. GPL-COMPATIBLE Apache-2.0 BSD BSD-2 GPL-2 GPL-3 LGPL-2.1 LGPL-3 X11 ZLIB
Format:
- comment lines begin with # (no inline comments) - one DEPEND atom per line followed by additional KEYWORDS
Example:
# add stable keyword to libgd media-libs/libgd x86 # remove stable keyword from mplayer and add unstable keyword media-video/mplayer -x86 ~x86 # remove all keywords from netcat net-analyzer/netcat -*
Format:
- comments begin with # (no inline comments) - one DEPEND atom per line
Example:
# masked for security reasons <sys-libs/zlib-1.1.4 # <caleb@gentoo.org> (10 Sep 2003) # new kde betas =kde-base/kde-3.2.0_beta1 =kde-base/kdeaccessibility-3.2.0_beta1
- comments begin with # (no inline comments) - one profile list per line in format: arch dir status - arch must be listed in arch.list - dir is relative to profiles.desc - status must be 'stable', 'dev', or 'exp'
Example:
alpha default/linux/alpha/10.0 stable m68k default/linux/m68k/10.0 dev x86 default/linux/x86/10.0 stable x86-linux prefix/linux/x86 exp
Format:
- comments begin with # (no inline comments) - mirror type followed by a list of hosts
Example:
sourceforge http://aleron.dl.sourceforge.net/sourceforge http://unc.dl.sourceforge.net/sourceforge gentoo http://distro.ibiblio.org/pub/linux/distributions/gentoo/distfiles/ ftp://ftp.gtlib.cc.gatech.edu/pub/gentoo/distfiles kernel https://www.kernel.org/pub https://www.us.kernel.org/pub
Format:
- comments begin with # (no inline comments) - use flag - some description
Example:
3dfx - Adds support for 3dfx video cards acl - Adds support for Access Control Lists doc - Adds extra documentation
Format: - comments begin with # (no inline comments) - package:use flag - description Example: app-editors/nano:justify - Toggles the justify option dev-libs/DirectFB:fusion - Adds Multi Application support games-emulation/xmess:net - Adds network support
This entire directory can be safely deleted. It is highly recommended you do not do this however as it can be a time consuming process to generate them all again.
The format follows somewhat closely that of the ebuild repository. There is a directory for each category and a package-version subdirectory for each package you have installed.
Inside each package directory are misc files that describe the installed contents of the package as well as build time information (so that the package can be unmerged without needing the ebuild repository).
The exact file contents and format are not described here again so that things can be changed quickly. Generally though there is one file per environment variable that "matters" (like CFLAGS) with the contents stored inside of it. Another common file is the CONTENTS file which lists the path and hashes of all objects that the package installed onto your system.
Example:
x86_32: libcom_err.so.2 libss.so.2 x86_64: libcom_err.so.2 libss.so.2
Example:
x86_32: ld-linux.so.2 libc.so.6 x86_64: ld-linux-x86-64.so.2 libc.so.6
Format:
- one DEPEND atom base per line
Example:
games-misc/fortune-mod-gentoo-dev dev-libs/uclibc app-cdr/cdemu
Example:
@kde
Marius Mauch <genone@gentoo.org> Mike Frysinger <vapier@gentoo.org> Drake Wyrm <wyrm@haell.com> Arfrever Frehtes Taifersar Arahesis <arfrever@apache.org>