.TH "MAKE.CONF" "5" "Jun 2007" "Portage 2.1.3" "Portage"
.SH "NAME"
make.conf \- custom settings for Portage
.SH "SYNOPSIS"
.B /etc/make.conf
.SH "DESCRIPTION"
This file contains various variables that are used by Portage.
Portage will check the currently\-defined environment variables
first for any settings.  If no environment settings are found,
Portage then checks /etc/make.conf.  If no setting is found
in /etc/make.conf, Portage checks /etc/make.globals. If no
setting is found there, the profile's default setting is grabbed
from /etc/make.profile/make.defaults. Please note that all user
settings should be made in the environment or in /etc/make.conf,
which is intended to be customized by the user.
.br
Exceptions are incremental variables such as USE, CONFIG_PROTECT*,
and ACCEPT_KEYWORDS.  Incremental variables are propagated down from
make.defaults to make.globals to make.conf to the environment
settings.  Clearing these variables requires a clear\-all as in:
export USE="\-*"
.SH "VARIABLES"
.TP
\fBACCEPT_KEYWORDS\fR = \fI[space delimited list of KEYWORDS]\fR
Enable testing of ebuilds that have not yet been deemed 'stable'.  Users
of the 'x86' architecture would set this to '~x86' while ppc users would
set this to '~ppc'.  This is an incremental variable.  Only define a 
~arch.
.br
Defaults to the value of $ARCH.
.TP
\fBBUILD_PREFIX\fR = \fI[path]\fR
Defines the location of the package working directory. 
.br
Defaults to ${PORTAGE_TMPDIR}/portage
.TP
.B CBUILD
This variable is passed by the \fIebuild scripts\fR to the \fIconfigure\fR
as \fI\-\-build=${CBUILD}\fR only if it is defined.  Do not set this yourself
unless you know what you are doing.
.TP
\fBCCACHE_DIR\fR = \fI[path]\fR
Defines the location of the ccache working directory.  See the \fBccache\fR(1)
man page for more information.
.br
Defaults to /var/tmp/ccache
.TP
\fBCCACHE_SIZE\fR = \fI"size"\fR
This controls the space use limitations for ccache.  The default is 2 gigabytes 
('2G').  Sizes are specified with 'G', 'M', or 'K'.
.TP
.B CFLAGS CXXFLAGS
Use these variables to set the desired optimization/CPU instruction settings
for applications that you compile.  Nearly all ebuild files will take advantage
of your custom settings, resulting in a Gentoo Linux that is fully customized
to your specifications.  Please use sane settings as some packages will fail to
compile/run if the optimizations are too extreme.

For more information, see the \fIInvoking GCC\fR section of the gcc manual:
.br
http://gcc.gnu.org/onlinedocs/
.TP
.B CHOST
This variable is passed by the \fIebuild scripts\fR to the \fIconfigure\fR
step as \fI\-\-host=${CHOST}\fR.  This way you can force the build\-host.

For more information:
.br
http://gcc.gnu.org/onlinedocs/gcc\-4.1.1/gcc/Submodel\-Options.html
.br
http://gcc.gnu.org/onlinedocs/gcc\-3.3/gcc/Submodel\-Options.html
.br
http://gcc.gnu.org/onlinedocs/gcc\-3.2/gcc/Submodel\-Options.html
.br
http://gcc.gnu.org/onlinedocs/gcc\-2.95.3/gcc_2.html
.TP
\fBCLEAN_DELAY\fR = \fIinteger\fR
Determines how long the countdown delay will be after running `emerge clean`.
.br
Defaults to 5 seconds.
.TP
\fBCOLLISION_IGNORE\fR = \fI[space delimited list of files and/or directories]\fR
This variable allows the user to disable \fIcollision\-protect\fR for specific
files and/or directories.
.TP
\fBCONFIG_PROTECT\fR = \fI[space delimited list of files and/or directories]\fR
All files and/or directories that are defined here will have "config file protection"
enabled for them. See the \fBCONFIGURATION FILES\fR section
of \fBemerge\fR(1) for more information.
.TP
\fBCONFIG_PROTECT_MASK\fR = \fI[space delimited list of files and/or directories]\fR
All files and/or directories that are defined here will have "config file protection"
disabled for them. See the \fBCONFIGURATION FILES\fR section
of \fBemerge\fR(1) for more information.
.TP
.B CTARGET
This variable is passed by the \fIebuild scripts\fR to the \fIconfigure\fR
as \fI\-\-target=${CTARGET}\fR only if it is defined.
.TP
\fBDISTDIR\fR = \fI[path]\fR
Defines the location of your local source file repository.  Note
that locations under /usr/portage are not necessarily safe for data storage.
See the \fBPORTDIR\fR documentation for more information.
.br
Defaults to /usr/portage/distfiles.
.TP
.B DOC_SYMLINKS_DIR
If this variable contains a directory then symlinks to html documentation will
be installed into it.
.TP
.B EBEEP_IGNORE
Defines whether or not to ignore audible beeps when displaying important
informational messages.  This variable is unset by default.
.TP
.B EMERGE_DEFAULT_OPTS
Options to append to the end of the \fBemerge\fR(1) command line on every invocation.
These options will not be appended to the command line if \-\-ignore\-default\-opts
is specified.
.TP
.B EPAUSE_IGNORE
Defines whether or not to ignore short pauses that occur when displaying
important informational messages.  This variable is unset by default.
If it is set to any value pauses are ignored.
.TP
\fBEXTRA_ECONF\fR = \fI[configure options string]\fR
Contains additional options that \fBeconf\fR will append to configure
script arguments (see \fBebuild\fR(5)).
.TP
\fBFEATURES\fR = \fI"sandbox ccache"\fR
Defines actions portage takes by default.  These options should
not be changed by anyone but developers and/or maintainers.  'sandbox' is an important
part of \fBFEATURES\fR and should not be disabled by default.  This is 
an incremental variable.
.RS
.TP
.B assume\-digests
When commiting work to cvs with \fBrepoman\fR(1), assume that all existing 
SRC_URI digests are correct.  This feature also affects digest generation via
\fBebuild\fR(1) and \fBemerge\fR(1) (emerge generates digests only when the
\fIdigest\fR feature is enabled). Existing digests for files that do not exist
in ${DISTDIR} will be automatically assumed even when \fIassume\-digests\fR is
not enabled. If a file exists in ${DISTDIR} but it's size does not match the
existing digest, the digest will be regenerated regardless of whether or
not \fIassume\-digests\fR is enabled. The \fBebuild\fR(1) \fBdigest\fR command
has a \fB\-\-force\fR option that can be used to force regeneration of digests.
.TP
.B buildpkg
Binary packages will be created for all packages that are merged. Also see
\fBquickpkg\fR(1) and \fBemerge\fR(1) \fB\-\-buildpkg\fR and
\fB\-\-buildpkgonly\fR options.
.TP
.B buildsyspkg
Build binary packages for just packages in the system set.
.TP
.B ccache
Enable portage support for the ccache package.  If the ccache dir is not 
present in the user's environment, then portage will default to 
${PORTAGE_TMPDIR}/ccache.
.TP
.B collision\-protect
A QA\-feature to ensure that a package doesn't overwrite files it doesn't own.
The \fICOLLISION_IGNORE\fR variable can be used to selectively disable this
feature.
.TP
.B digest
Autogenerate digests for packages when running the \fBemerge\fR(1) command.  If
the \fIassume\-digests\fR feature is also enabled then existing SRC_URI digests
will be reused whenever they are available.
.TP
.B distcc
Enable portage support for the distcc package.
.TP
.B distlocks
Portage uses lockfiles to ensure competing instances don't clobber
each other's files. This feature is enabled by default but may cause
heartache on less intelligent remote filesystems like NFSv2 and some
strangely configured Samba server (oplocks off, NFS re\-export). A tool
/usr/lib/portage/bin/clean_locks exists to help handle lock issues
when a problem arises (normally due to a crash or disconnect).
.TP
.B fakeroot
Enable fakeroot for the install and package phases when a non-root user runs
the \fBebuild\fR(1) command.
.TP
.B fixpackages
Runs the script that will fix the dependencies in all binary packages.  This is 
run whenever packages are moved around in the portage tree.  Please note that this 
can take a lot of time.
.TP
.B getbinpkg
Force emerges to always try to fetch files from the \fIPORTAGE_BINHOST\fR.  See 
\fBmake.conf\fR(5) for more information.
.TP
.B gpg
Check the signatures of Manifests and make sure they are correct.
.TP
.B installsources
Install source code into /usr/src/debug/${CATEGORY}/${PF} (also see
\fBsplitdebug\fR). This feature works only if debugedit is installed and CFLAGS
is set to include debug information (such as with the \-ggdb flag).
.TP
.B keeptemp
Do not delete the ${T} directory after the merge process.
.TP
.B keepwork
Do not delete the ${WORKDIR} directory after the merge process. ${WORKDIR} can
then be reused since this feature disables most of the clean phase that runs
prior to each build. Due to lack of proper cleanup, this feature can
interfere with normal emerge operation and therefore it should not be left
enabled for more than a short period of time.
.TP
.B lmirror
When \fImirror\fR is enabled in \fBFEATURES\fR, fetch files even
when \fImirror\fR is also in the \fBebuild\fR(5) \fBRESTRICT\fR variable.
.TP
.B metadata\-transfer
Automatically perform a metadata transfer when `emerge \-\-sync` is run.
In versions of portage >=2.1.5, this feature is disabled by
default. When metadata\-transfer is disabled, metadata cache from the
${PORTDIR}/metadata/cache/ directory will be used directly (if available)
and eclasses in ${PORTDIR}/eclass/ must not be modified except by
`emerge \-\-sync` operations since the cache validation mechanism
will not recognize eclass modifications. Normally, this issue only
pertains to users of the rsync tree since the cvs tree does not contain
a metadata/cache/ directory. Users of the rsync tree who want to modify
eclasses should use \fBPORTDIR_OVERLAY\fR in order for the cache
validation mechanism to work correctly.
.TP
.B mirror
Fetch everything in \fBSRC_URI\fR regardless of \fBUSE\fR settings,
except do not fetch anything when \fImirror\fR is in \fBRESTRICT\fR.
.TP
.B noauto
When utilizing \fBebuild\fR(1), only run the function requested.
.TP
.B noclean
Do not delete the the source and temporary files after the merge process.
.TP
.B nodoc
Do not install doc files (/usr/share/doc).
.TP
.B noinfo
Do not install info pages.
.TP
.B noman
Do not install manpages.
.TP
.B nostrip
Prevents the stripping of binaries that are merged to the live filesystem.
.TP
.B notitles
Disables xterm titlebar updates (which contains status info).
.TP
.B parallel\-fetch
Fetch in the background while compiling. Run
`tail \-f /var/log/emerge\-fetch.log` in a
terminal to view parallel-fetch progress.
.TP
.B sandbox
Enable sandbox\-ing when running \fBemerge\fR(1) and \fBebuild\fR(1).
.TP
.B sesandbox
Enable SELinux sandbox\-ing.  Do not toggle this \fBFEATURE\fR yourself.
.TP
.B severe
When checking Manifests, only accept ones that have been signed by a
key which you trust.
.TP
.B sfperms
Stands for Smart Filesystem Permissions.  Before merging packages to the 
live filesystem, automatically search for and set permissions on setuid 
and setgid files.  Files that are setuid have the group and other read 
bits removed while files that are setgid have the other read bit removed.  
See also \fIsuidctl\fR below.
.TP
.B sign
When commiting work to cvs with \fBrepoman\fR(1), sign the Manifest with 
a GPG key.  Read about the \fIPORTAGE_GPG_KEY\fR variable in \fBmake.conf\fR(5).
.TP
.B splitdebug
Prior to stripping ELF etdyn and etexec files, the debugging info is 
stored for later use by various debuggers.  This feature is disabled by
\fBnostrip\fR.  For installation of source code, see \fBinstallsources\fR.
.TP
.B strict
Have portage react strongly to conditions that have the potential to be 
dangerous (like missing or incorrect digests for ebuilds).
.TP
.B stricter
Have portage react strongly to conditions that may conflict with system
security provisions (for example textrels, executable stack).  Read about
the \fIQA_STRICT_*\fR variables in \fBmake.conf\fR(5).
.TP
.B suidctl
Before merging packages to the live filesystem, automatically strip setuid 
bits from any file that is not listed in \fI/etc/portage/suidctl.conf\fR.
.TP
.B test
Run package\-specific tests during each merge to help make sure 
the package compiled properly.  See \fItest\fR in \fBebuild\fR(1) 
and \fIsrc_test()\fR in \fBebuild\fR(5). This feature implies the "test"
\fBUSE\fR flag.
.TP
.B unmerge-orphans
If a file is not claimed by another package in the same slot and it is not
protected by \fICONFIG_PROTECT\fR, unmerge it even if the modification time or
checksum differs from the file that was originally installed.
.TP
.B userfetch
When portage is run as root, drop privileges to portage:portage during the
fetching of package sources.
.TP
.B userpriv
Allow portage to drop root privileges and compile packages as 
portage:portage without a sandbox (unless \fIusersandbox\fR is also used).
.TP
.B usersandbox
Enable the sandbox in the compile phase, when running without root privs (\fIuserpriv\fR).
.TP
.B webrsync-gpg
Enable GPG verification when using \fIemerge\-webrsync\fR.
.RE
.TP
.B FETCHCOMMAND
This variable contains the command used for fetching package sources from
the internet.  It must contain the full path to the executable as well as the
place\-holders \\${DISTDIR}, \\${FILE} and \\${URI}.  The command should be
written to place the fetched file at \\${DISTDIR}/\\${FILE}.
Also see \fBRESUMECOMMAND\fR.
.TP
\fBGENTOO_MIRRORS\fR = \fI[URLs]\fR
Insert your space\-seperated list of local mirrors here.  These
locations are used to download files before the ones listed in
the \fIebuild scripts\fR. Merging 'mirrorselect' can help.  Entries in this
variable that have no protocol and simply start with a '/' path separator may
be used to specify mounted filesystem mirrors.
.TP
\fBhttp_proxy ftp_proxy\fR = \fI[host:port]\fR
These vars are used if the sources must be downloaded from the
internet by \fBwget\fR(1).  They are only required if you use a
proxy server for internet access.
.TP
\fBINSTALL_MASK\fR = \fI[space delimited list of file names]\fR
Use this variable if you want to selectively prevent certain files from being
copied into your file system tree.  This does not work on symlinks, but only on
actual files.  Useful if you wish to filter out files like HACKING.gz and
TODO.gz. The \fBINSTALL_MASK\fR is processed just before a package is merged.
Also supported is a \fBPKG_INSTALL_MASK\fR variable that behaves exactly like
\fBINSTALL_MASK\fR except that it is processed just before creation of a binary
package.
.TP
.B MAKEOPTS
Use this variable if you want to use parallel make.  For example, if you
have a dual\-processor system, set this variable to "\-j2" or "\-j3" for 
enhanced build performance with many packages. Suggested settings are
between \fICPUs+1\fR and \fI2*CPUs+1\fR.
For more information, see \fBmake\fR(1).
.TP
\fBNOCOLOR\fR = \fI["true" | "false"]\fR
Defines if color should be disabled by default.
.br
Defaults to false.
.TP
\fBPKGDIR\fR = \fI[path]\fR
Defines the location where created .tbz2 binary packages will be stored.  Note
that locations under /usr/portage are not necessarily safe for data storage.
See the \fBPORTDIR\fR documentation for more information.
.br
Defaults to /usr/portage/packages.
.TP
.B PORT_LOGDIR
This variable defines the directory in which per\-ebuild logs are kept.
Logs are created only when this is set. They are stored as
${CATEGORY}:${PF}:YYYYMMDD\-HHMMSS.log in the directory specified. If the
direcory does not exist, it will be created automatically and group permissions
will be applied to it.  If the directory already exists, portage will not
modify it's permissions.
.TP
\fBPORTAGE_BINHOST\fR = \fI"ftp://login:pass@grp.mirror.site/pub/grp/i686/athlon\-xp/"\fR
This is the host from which portage will grab prebuilt\-binary packages.  
The list is a single entry specifying the full address of the directory 
serving the tbz2's for your system.  This is only used when running with 
the get binary pkg options are given to \fBemerge\fR.  Review \fBemerge\fR(1) 
for more information.  For versions of portage less that 2.2, this variable
should point to the 'All' directory on the host that creates the binary
packages and not to the root of the \fBPKGDIR\fR.  Starting with portage 2.2,
it should point to a directory containing a 'Packages' index file.  If
${PORTAGE_BINHOST}/Packages does not exist then portage will attempt to use
the older protocol.
.TP
\fBPORTAGE_BINHOST_HEADER_URI\fR = \fI"ftp://login:pass@grp.mirror.site/pub/grp/i686/athlon\-xp/"\fR
This variable only makes sense on a system that will serve as a binhost and
build packages for clients.  It defines the URI header field for the package
index file which is located at ${PKGDIR}/Packages. Clients that have
\fBPORTAGE_BINHOST\fR properly configured will be able to fetch the index and
use the URI header field as a base URI for fetching binary packages. If the URI
header field is not defined then the client will use it's ${PORTAGE_BINHOST}
setting as the base URI.
.TP
.B PORTAGE_BINPKG_TAR_OPTS
This variable contains options to be passed to the tar command for creation
of binary packages.
.TP
\fBPORTAGE_COMPRESS\fR = \fI"bzip2"\fR
This variable contains the command used to compress documentation during the
install phase.
.TP
\fBPORTAGE_COMPRESS_FLAGS\fR = \fI"\-9"\fR
This variable contains flags for the \fBPORTAGE_COMPRESS\fR command.
.TP
.B PORTAGE_ELOG_CLASSES
.TP
.B PORTAGE_ELOG_SYSTEM
.TP
.B PORTAGE_ELOG_COMMAND
.TP
.B PORTAGE_ELOG_MAILURI
.TP
.B PORTAGE_ELOG_MAILFROM
.TP
.B PORTAGE_ELOG_MAILSUBJECT
Please see /etc/make.conf.example for elog documentation.
.TP
\fBPORTAGE_FETCH_CHECKSUM_TRY_MIRRORS\fR = \fI5\fR
Number of mirrors to try when a downloaded file has an incorrect checksum.
.TP
\PORTAGE_FETCH_RESUME_MIN_SIZE\fR = \fI350K\fR
Minimum size of existing file for RESUMECOMMAND to be called. Files smaller
than this size will be removed and FETCHCOMMAND will be called to download
the file from the beginning. This is useful for helping to ensure that small
garbage files such as html 404 pages are properly discarded. The variable
should contain an integer number of bytes and may have a suffix such as
K, M, or G.
.TP
\fBPORTAGE_NICENESS\fR = \fI[number]\fR
The value of this variable will be added to the current nice level that
emerge is running at.  In other words, this will not set the nice level,
it will increment it.  For more information about nice levels and what
are acceptable ranges, see \fBnice\fR(1).
.TP
\fBPORTAGE_RSYNC_INITIAL_TIMEOUT\fR = \fIinteger\fR
Used by \fBemerge \-\-sync\fR as a timeout for the initial connection to an
rsync server.
.br
Defaults to 15 seconds.
.TP
\fBPORTAGE_RSYNC_EXTRA_OPTS\fR = \fI[rsync options string]\fR
Additional rsync options to be used by \fBemerge \-\-sync\fR.
.br
Defaults to no value.
.TP
\fBPORTAGE_RSYNC_OPTS\fR = \fI[rsync options string]\fR
Default rsync options to be used by \fBemerge \-\-sync\fR. 
.br
\fBDon't change this unless you know exactly what you're doing!\fR
.br
Defaults to "\-\-recursive \-\-links \-\-safe\-links \-\-perms \-\-times
\-\-compress \-\-force \-\-whole\-file \-\-delete \-\-delete\-after \-\-stats
\-\-timeout=180 \-\-exclude='/distfiles' \-\-exclude='/local'
\-\-exclude='/packages'"
.TP
\fBPORTAGE_RSYNC_RETRIES\fR = \fI[NUMBER]\fR
The number of times rsync should retry on failed connections before
giving up.
.br
Defaults to 3.
.TP
\fBPORTAGE_TMPDIR\fR = \fI[path]\fR
Defines the location of the temporary build directories.
.br
Defaults to /var/tmp.
.TP
\fBPORTAGE_WORKDIR_MODE\fR = \fI"0700"\fR
This variable controls permissions for \fIWORKDIR\fR (see \fBebuild\fR(5)).
.TP
\fBPORTDIR\fR = \fI[path]\fR
Defines the location of the Portage tree. This is the repository for all
profile information as well as all ebuilds. If you change this, you must update
your /etc/make.profile symlink accordingly.
.br
Defaults to /usr/portage. 
.br
\fB***Warning***\fR
.br
Data stored inside \fBPORTDIR\fR is in peril of being overwritten or deleted by
the emerge \-\-sync command. The default value of
\fBPORTAGE_RSYNC_OPTS\fR will protect the default locations of
\fBDISTDIR\fR and \fBPKGDIR\fR, but users are warned that any other locations
inside \fBPORTDIR\fR are not necessarily safe for data storage.  You should not 
put other data (such as overlays) in your \fBPORTDIR\fB.  Portage will walk 
directory structures and may arbitrary add invalid categories as packages.
.TP
\fBPORTDIR_OVERLAY\fR = \fI"[path] [different\-path] [etc...]"\fR
Defines the directories in which user made ebuilds may be stored and not 
overwriten when `emerge \-\-sync` is run.  This is a space delimited list of 
directories.
.br
Defaults to no value.
.TP
\fBQA_STRICT_EXECSTACK = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_EXECSTACK\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
\fBQA_STRICT_WX_LOAD = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_WX_LOAD\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
\fBQA_STRICT_TEXTRELS = \fI"set"\fR
Set this to cause portage to ignore any \fIQA_TEXTREL\fR override
settings from ebuilds.  See also \fBebuild\fR(5).
.TP
.B RESUMECOMMAND
This variable contains the command used for resuming package sources that
have been partially downloaded.  It should be defined using the same format
as \fBFETCHCOMMAND\fR, and must include any additional option(s) that may
be necessary in order to continue a partially downloaded file located at
\\${DISTDIR}/\\${FILE}.
.TP
\fBROOT\fR = \fI[path]\fR
Use \fBROOT\fR to specify the target root filesystem to be used for merging 
packages or ebuilds.  All \fBRDEPEND\fR and \fBPDEPEND\fR will be installed 
into \fBROOT\fR while all \fBDEPEND\fR will be still be installed into /.  
Typically, you should set this setting in the environment rather than in 
\fI/etc/make.conf\fR itself.  It's commonly used for creating new build 
images.  Make sure you use an absolute path.
.br
Defaults to /.
.TP
\fBRPMDIR\fR = \fI[path]\fR
Defines the location where created RPM packages will be stored.
.br
Defaults to ${PORTDIR}/rpm.
.TP
\fBSYNC\fR = \fI[RSYNC]\fR
Insert your preferred rsync mirror here.  This rsync server
is used to sync the local portage tree when `emerge \-\-sync` is run.
.br
Defaults to rsync://rsync.gentoo.org/gentoo\-portage
.TP
\fBUSE\fR = \fI[space delimited list of USE items]\fR
This variable contains options that control the build behavior of several
packages.  More information in \fBebuild\fR(5).  Possible USE values
can be found in \fI/usr/portage/profiles/use.desc\fR.
.TP
\fBUSE_EXPAND\fR = \fI[space delimited list of variable names]\fR
Any variable listed here will be used to augment USE by inserting a new flag
for every value in that variable, so USE_EXPAND="FOO" and FOO="bar bla" results
in USE="foo_bar foo_bla".
.TP
\fBUSE_EXPAND_HIDDEN\fR = \fI[space delimited list of variable names]\fR
Names of \fBUSE_EXPAND\fR variables that should not be shown in the verbose merge
list output of the \fBemerge\fR(1) command.
.TP
\fBUSE_ORDER\fR = \fI"env:pkg:conf:defaults:pkginternal:env.d"\fR
Determines the precedence of layers in the incremental stacking of the USE
variable. Precedence decreases from left to right such that env overrides
pkg, pkg overrides conf, and so forth.

.B ***warning***
.br
Do not modify this value unless you're a developer and you know what
you're doing. If you change this and something breaks, we will not help
you fix it.
.br
.RS
.TP
.B env
USE from the current environment variables (USE and those listed in USE_EXPAND)
.TP
.B pkg
Per\-package USE from \fB/etc/portage/package.use\fR (see \fBportage\fR(5))
.TP
.B conf
USE from make.conf
.TP
.B defaults
USE from make.defaults and package.use in the profile (see \fBportage\fR(5))
.TP
.B pkginternal
USE from \fBebuild\fR(5) IUSE defaults
.TP
.B env.d
USE from the environment variables defined by files in \fI/etc/env.d/\fR
.RE

.SH "REPORTING BUGS"
Please report bugs via http://bugs.gentoo.org/
.SH "AUTHORS"
.nf
Daniel Robbins <drobbins@gentoo.org>
Nicholas Jones <carpaski@gentoo.org>
Mike Frysinger <vapier@gentoo.org>
Saleem Abdulrasool <compnerd@gentoo.org>
.fi
.SH "FILES"
.TP
.B /etc/make.conf
Contains variables for the build\-process and overwrites those in make.defaults.
.TP
.B /etc/make.globals
Contains the default variables for the build\-process, you should edit \fI/etc/make.conf\fR instead.
.TP
.B /etc/portage/color.map
Contains variables customizing colors.
.TP
.B /usr/portage/profiles/use.desc
Contains a list of all global USE flags.
.TP
.B /usr/portage/profiles/use.local.desc
Contains a list of all local USE variables.
.SH "SEE ALSO"
.BR emerge (1),
.BR portage (5),
.BR ebuild (1),
.BR ebuild (5)
.TP
The \fI/usr/sbin/ebuild.sh\fR script. 
.TP
The helper apps in \fI/usr/lib/portage/bin\fR.
