.TH "EMERGE" "1" "Mar 2011" "Portage VERSION" "Portage"
.SH "NAME"
emerge \- Command\-line interface to the Portage system
.SH "SYNOPSIS"
.TP
.BR emerge
[\fIoptions\fR] [\fIaction\fR] [\fIebuild\fR | \fItbz2file\fR | \fIfile\fR | \fI@set\fR | \fIatom\fR] ...
.TP
.BR emerge
\fB\-\-sync\fR | \fB\-\-version\fR
.TP
.BR emerge
\fB\-\-info\fR [\fIatom\fR]
.TP
.BR emerge
\fB\-\-search\fR \fIsomestring\fR
.TP
.BR emerge
\fB\-\-help\fR [\fB\-\-verbose\fR]
.SH "DESCRIPTION"
\fBemerge\fR is the definitive command\-line interface to the Portage
system.  It is primarily used for installing packages, and \fBemerge\fR
can automatically handle any dependencies that the desired package has.
\fBemerge\fR can also update the \fBportage tree\fR, making new and
updated packages available.  \fBemerge\fR gracefully handles updating
installed packages to newer releases as well.  It handles both source
and binary packages, and it can be used to create binary packages for
distribution.
.SH "EBUILDS, TBZ2S, SETS AND ATOMS"
\fBemerge\fR primarily installs packages.  You can specify
packages to install in five possible ways: an \fIatom\fR,
a \fIset\fR, an installed \fIfile\fR, an \fIebuild\fR, or
a \fItbz2file\fR.
.LP
.TP
.BR ebuild
An \fIebuild\fR must be, at a minimum, a valid Portage
package directory name without a version or category, such as
\fBportage\fR or \fBpython\fR.
Both categories and version numbers may be used in addition, such
as \fBsys\-apps/portage\fR or \fB=python\-2.2.1\-r2\fR.
\fBemerge\fR
ignores a trailing slash so that filename completion can be used.
The \fIebuild\fR may also be an actual filename, such as
\fB/usr/portage/app\-admin/python/python\-2.2.1\-r2.ebuild\fR.
\fBWARNING:\fR The implementation of \fBemerge /path/to/ebuild\fR is broken and
so this syntax shouldn't be used.
.TP
.BR tbz2file
A \fItbz2file\fR must be a valid .tbz2 created with \fBebuild
<package>\-<version>.ebuild package\fR or \fBemerge \-\-buildpkg 
[category/]<package>\fR or \fBquickpkg /var/db/pkg/<category>/<package>\fR.
.TP
.BR file
A \fIfile\fR must be a file or directory that has been installed by one or
more packages. If an absolute path is not used, then it must begin with
either "./" or "../". For directories that are owned by multiple packages, all
owning packages will be selected. See the portageq(1) owners command if you
would like to query the owners of one or more files or directories.
.TP
.BR set
A \fIset\fR is a convenient shorthand for a large group of
packages. Three sets are currently always available: \fBselected\fR,
\fBsystem\fR and \fBworld\fR. \fBselected\fR contains the user-selected
"world" packages that are listed in \fB/var/lib/portage/world\fR.
\fBsystem\fR refers to a set of
packages deemed necessary for your system to run properly. \fBworld\fR
encompasses both the \fBselected\fR and \fBsystem\fR sets. [See
\fBFILES\fR below for more information.] Note that a \fIset\fR
is generally used in conjunction with \fB\-\-update\fR. When used as 
arguments to \fBemerge\fR sets have to be prefixed with \fB@\fR to be
recognized. Use the \fB\-\-list\-sets\fR action to display a list of
available package sets.
.TP
.BR atom
An \fIatom\fR describes bounds on a package that you wish to install.  
\fISee portage(5) for the details on atom syntax.\fR  For example, 
\fB>=dev\-lang/python\-2.2.1\-r2\fR matches the latest available version of 
Python greater than or equal to 2.2.1\-r2.  Similarly, 
\fB<dev\-lang/python\-2.0\fR matches the latest available version of Python 
before 2.0.  Note that in many shells you will need to escape characters such 
as '<' and '='; use single\- or double\-quotes around the \fIatom\fR 
to get around escaping problems.
.SH "ACTIONS"
.TP
.BR "No action"
If no action is specified, the action is to merge in the specified
packages, satisfying any dependencies that they may have.  The
arguments can be \fIatoms\fR, \fIsets\fR, installed \fIfiles\fR,
\fIebuilds\fR, or \fItbz2s\fR.
\fBNote that you need to use the \-\-usepkg
option if you want to install a tbz2\fR.  The packages are added
to the \fBworld\fR file at the end, so that they are considered for
later updating.
.TP
.BR \-\-clean
Cleans up the system by examining the installed packages and removing older
packages.  This is accomplished by looking at each installed package and separating
the installed versions by \fBslot\fR.  Clean will \fBremove all but the most recently
installed version in each \fbslot\fR.  Clean should not remove unslotted packages.
Note: Most recently installed means most \fBrecent\fR, not highest version.
.TP
.BR "\-\-config "
Run package specific actions needed to be executed after the emerge process 
has completed.  This usually entails configuration file setup or other similar 
setups that the user may wish to run.
.TP
.BR "\-\-depclean (-c)"
Cleans the system by removing packages that are not associated
with explicitly merged packages. Depclean works by creating the
full dependency tree from the @world set,
then comparing it to installed packages. Packages installed, but
not part of the dependency tree, will be uninstalled by depclean.
See \fB\-\-with\-bdeps\fR for behavior with respect to build time dependencies
that are not strictly required. Packages that are part of the world set will
always be kept. They can be manually added to this set with \fIemerge
\-\-noreplace <atom>\fR. As a safety measure, depclean will not remove any
packages unless *all* required dependencies have been resolved. As a
consequence, it is often necessary to run \fIemerge \-\-update \-\-newuse
\-\-deep @world\fR prior to depclean. 

\fBWARNING:\fR
Inexperienced users are advised to use \fB\-\-pretend\fR with this
option in order to see a preview of which packages
will be uninstalled. Always study the list of packages
to be cleaned for any obvious mistakes. Note that packages listed in
package.provided (see \fBportage\fR(5)) may be removed by
depclean, even if they are part of the world set. Also note that
depclean may break link level dependencies. Thus, it is
recommended to use a tool such as \fBrevdep-rebuild\fR(1)
in order to detect such breakage.

Depclean serves as a dependency aware
version of \fB\-\-unmerge\fR. When given one or more atoms, it will
unmerge matched packages that have no reverse dependencies. Use
\fB\-\-depclean\fR together with \fB\-\-verbose\fR to show reverse
dependencies.
.TP
.BR "\-\-deselect [ y | n ]"
Remove atoms and/or sets from the world file. This action is implied
by uninstall actions, including \fB-\-depclean\fR,
\fB-\-prune\fR and \fB-\-unmerge\fR. Use \fB-\-deselect=n\fR
in order to prevent uninstall actions from removing
atoms from the world file.
.TP
.BR "\-\-help " (\fB\-h\fR)
Displays help information for emerge.  Adding one of the additional
arguments listed above will give you more specific help information
on that subject.  The internal \fBemerge\fR help documentation is
updated more frequently than this man page; check it out if you
are having problems that this man page does not help resolve.
.TP
.BR \-\-info
Produces a list of information to include in bug reports which aids the 
developers when fixing the reported problem.  \fBPlease include this 
information when submitting a bug report.\fR  Expanded output can be obtained 
with the \fI\-\-verbose\fR option.
.TP
.BR \-\-list\-sets
Displays a list of available package sets.
.TP
.BR \-\-metadata
Transfers metadata cache from ${PORTDIR}/metadata/cache/ to
/var/cache/edb/dep/ as is normally done on the
tail end of an rsync update using \fBemerge \-\-sync\fR.  This process
populates the cache database that portage uses for pre-parsed lookups of
package data.  It does not populate cache for the overlays listed in
PORTDIR_OVERLAY.  In order to generate cache for overlays, use \fB\-\-regen\fR.
In versions of portage >=2.1.5 the \-\-metadata action is totally unnecessary
unless the user has enabled FEATURES="metadata-transfer" in \fBmake.conf\fR(5).
.TP
.BR "\-\-prune " (\fB\-P\fR)
\fBWARNING: This action can remove important packages!\fR  Removes all but the
highest installed version of a package from your system. Use \fB\-\-prune\fR
together with \fB\-\-verbose\fR to show reverse dependencies or with
\fB\-\-nodeps\fR to ignore all dependencies.
.TP
.BR \-\-regen
Causes portage to check and update the dependency cache of all ebuilds in the 
portage tree.  The cache is used to speed up searches and the building of 
dependency trees.  This command is not recommended for rsync users as rsync 
updates the cache using server\-side caches.  If you do not know the 
differences between a 'rsync user' and some other user, then you are a 'rsync 
user' :).  Rsync users should simply run \fBemerge \-\-sync\fR to regenerate 
the cache.  After a portage update, rsync users may find it convenient to run 
\fBemerge \-\-metadata\fR to rebuild the cache as portage does at the end of 
a sync operation. In order to specify parallel \fB\-\-regen\fR behavior, use
the \fB\-\-jobs\fR and \fB\-\-load\-average\fR options. If you would like to
generate and distribute cache for use by others, use \fBegencache\fR(1).
.TP
.BR "\-\-resume" (\fB\-r\fR)
Resumes the most recent merge list that has been aborted due to an error.
Please note that this operation will only return an error on failure.  If there
is nothing for portage to do, then portage will exit with a message and a
success condition. A resume list will persist until it has been completed in
entirety or until another aborted merge list replaces it.  The resume history
is capable of storing two merge lists.  After one resume list completes, it is
possible to invoke \-\-resume once again in order to resume an older list.
.TP
.BR "\-\-search " (\fB\-s\fR)
Searches for matches of the supplied string in the portage tree.
By default emerge uses a case-insensitive simple search, but you can 
enable a regular expression search by prefixing the search string with %.
For example, \fBemerge \-\-search "%^kde"\fR searches for any package whose 
name starts with "kde"; \fBemerge \-\-search "%gcc$"\fR searches for any 
package that ends with "gcc"; \fBemerge \-\-search "office"\fR searches for 
any package that contains the word "office".  If you want to include the 
category into the search string, prepend an @: \fBemerge \-\-search 
"%@^dev-java.*jdk"\fR. If you want to search the package descriptions as well, 
use the \fB\-\-searchdesc\fR action.
.TP
.BR "\-\-searchdesc " (\fB\-S\fR)
Matches the search string against the description field as well as
the package name.  \fBTake caution\fR as the descriptions are also
matched as regular expressions.
.TP
.BR \-\-sync
This updates the portage tree that is located in the
directory that the PORTDIR variable refers to (default
location is /usr/portage). The SYNC variable specifies
the remote URI from which files will be synchronized.
The \fBPORTAGE_SYNC_STALE\fR variable configures
warnings that are shown when emerge \-\-sync has not
been executed recently.

\fBWARNING:\fR
The emerge \-\-sync action will modify and/or delete
files located inside the directory that the PORTDIR
variable refers to (default location is /usr/portage).
For more information, see the PORTDIR documentation in
the make.conf(5) man page.

\fBNOTE:\fR
The \fBemerge\-webrsync\fR program will download the entire
portage tree as a tarball, which is much faster than emerge
\-\-sync for first time syncs.

.TP
.BR "\-\-unmerge " (\fB\-C\fR)
\fBWARNING: This action can remove important packages!\fR Removes
all matching packages.  This does no checking of dependencies, so
it may remove packages necessary for the proper operation of your
system.  Its arguments can be \fIatoms\fR or
\fIebuilds\fR. For a dependency aware version of \fB\-\-unmerge\fR,
use \fB\-\-depclean\fR or \fB\-\-prune\fR.
.TP
.BR "\-\-version " (\fB\-V\fR)
Displays the version number of \fBemerge\fR.
.SH "OPTIONS"
.TP
.BR \-\-accept\-properties=ACCEPT_PROPERTIES
This option temporarily overrides the \fBACCEPT_PROPERTIES\fR
variable. The \fBACCEPT_PROPERTIES\fR variable is incremental,
which means that the specified setting is appended to the
existing value from your configuration. The special \fB-*\fR
token can be used to discard the existing configuration
value and start fresh. See the \fBMASKED PACKAGES\fR section
and \fBmake.conf\fR(5) for more information about
ACCEPT_PROPERTIES. A typical usage example for this option
would be to use \fI\-\-accept\-properties=\-interactive\fR to
temporarily mask interactive packages. With default
configuration, this would result in an effective
\fBACCEPT_PROPERTIES\fR value of "* -interactive".
.TP
.BR "\-\-alphabetical "
When displaying USE and other flag output, combines the enabled and
disabled lists into one list and sorts the whole list alphabetically.
.TP
.BR "\-\-ask [ y | n ] (\-a short option)"
Before performing the action, display what will take place (server info for
\fB\-\-sync\fR, \fB\-\-pretend\fR output for merge, and so forth), then ask
whether to proceed with the action or abort.  Using \fB\-\-ask\fR is more
efficient than using \fB\-\-pretend\fR and then executing the same command
without \fB\-\-pretend\fR, as dependencies will only need to be calculated once.
\fBWARNING: If the "Enter" key is pressed at the prompt (with no other input),
it is interpreted as acceptance of the first choice.  Note that the input
buffer is not cleared prior to the prompt, so an accidental press of the
"Enter" key at any time prior to the prompt will be interpreted as a choice!
Use the \-\-ask\-enter\-invalid option if you want a single "Enter" key
press to be interpreted as invalid input.\fR
.TP
.BR "\-\-ask\-enter\-invalid"
When used together with the \fB\-\-ask\fR option,
interpret a single "Enter" key press as
invalid input. This helps prevent accidental
acceptance of the first choice. This option is
intended to be set in the \fBmake.conf\fR(5)
\fBEMERGE_DEFAULT_OPTS\fR variable.
.TP
.BR "\-\-autounmask [ y | n ]"
Automatically unmask packages. If any configuration
changes are required, then they will be displayed
after the merge list and emerge will immediately
abort. If the displayed configuration changes are
satisfactory, you should copy and paste them into
the specified configuration file(s). Currently,
this only works for unstable KEYWORDS masks,
LICENSE masks, and package.use settings.
.TP
.BR \-\-backtrack=COUNT
Specifies an integer number of times to backtrack if
dependency calculation fails due to a conflict or an
unsatisfied dependency (default: \'10\').
.TP
.BR "\-\-binpkg\-respect\-use [ y | n ]"
Tells emerge to ignore binary packages if their use flags
don't match the current configuration. (default: \'n\')
.TP
.BR "\-\-buildpkg [ y | n ] (\-b short option)"
Tells emerge to build binary packages for all ebuilds processed in
addition to actually merging the packages.  Useful for maintainers
or if you administrate multiple Gentoo Linux systems (build once,
emerge tbz2s everywhere) as well as disaster recovery. The package
will be created in the \fBPKGDIR\fR directory (see \fBmake.conf\fR(5)).
An alternative for already\-merged
packages is to use \fBquickpkg\fR(1) which creates a tbz2 from the
live filesystem.
.TP
.BR "\-\-buildpkgonly " (\fB\-B\fR)
Creates binary packages for all ebuilds processed without actually
merging the packages.  This comes with the caveat that all build-time 
dependencies must already be emerged on the system.
.TP
.BR "\-\-changed\-use"
This is an alias for \fB\-\-reinstall=changed\-use\fR.
.TP
.BR "\-\-changelog " (\fB\-l\fR)
Use this in conjunction with the \fB\-\-pretend\fR option.  This will
show the ChangeLog entries for all the packages that will be upgraded.
.TP
.BR "\-\-color < y | n >"
Enable or disable color output.  This option will override \fINOCOLOR\fR
(see \fBmake.conf\fR(5)) and may also be used to force color output when stdout
is not a tty (by default, color is disabled unless stdout is a tty).
.TP
.BR "\-\-columns"
Used alongside \fB\-\-pretend\fR to cause the package name, new version, 
and old version to be displayed in an aligned format for easy cut\-n\-paste.
.TP
.BR "\-\-complete\-graph [ y | n ]"
This causes \fBemerge\fR to consider the deep dependencies of all
packages from the world set. With this option enabled,
\fBemerge\fR will bail out if it determines that the given operation will
break any dependencies of the packages that have been added to the
graph. Like the \fB\-\-deep\fR option, the \fB\-\-complete\-graph\fR
option will significantly increase the time taken for dependency
calculations. Note that, unlike the \fB\-\-deep\fR option, the
\fB\-\-complete\-graph\fR option does not cause any more packages to
be updated than would have otherwise been updated with the option disabled.
.TP
.BR \-\-config\-root=DIR
Set the \fBPORTAGE_CONFIGROOT\fR environment variable.
.TP
.BR "\-\-debug " (\fB\-d\fR)
Tells emerge to run the emerge command in \fB\-\-debug\fR mode.  In this
mode the bash build environment will run with the \-x option, causing 
it to output verbose debugging information to stdout.  This also enables
a plethora of other output (mostly dependency resolution messages).
.TP
.BR "\-\-deep [DEPTH] " (\fB\-D\fR)
This flag forces
\fBemerge\fR to consider the entire dependency tree of packages,
instead of checking only the immediate dependencies of the packages.
As an example, this catches updates in libraries that are not directly
listed in the dependencies of a package.  Also see \fB\-\-with\-bdeps\fR for
behavior with respect to build time dependencies that are not strictly
required.
.TP
.BR "\-\-emptytree " (\fB\-e\fR)
Reinstalls target atoms and their entire deep
dependency tree, as though no packages are currently
installed. You should run this with \fB\-\-pretend\fR
first to make sure the result is what you expect.
.TP
.BR "\-\-exclude " ATOMS
A space separated list of package names or slot atoms.
Emerge won't  install any ebuild or binary package that
matches any of the given package atoms.
.TP
.BR "\-\-fail\-clean [ y | n ]"
Clean up temporary files after a build failure. This is
particularly useful if you have \fBPORTAGE_TMPDIR\fR on
tmpfs. If this option is enabled, you probably also want
to enable \fBPORT_LOGDIR\fR (see \fBmake.conf\fR(5)) in
order to save the build log.
.TP
.BR "\-\-fetchonly " (\fB\-f\fR)
Instead of doing any package building, just perform fetches for all
packages (fetch things from SRC_URI based upon USE setting).
.TP
.BR "\-\-fetch\-all\-uri " (\fB\-F\fR)
Instead of doing any package building, just perform fetches for all
packages (fetch everything in SRC_URI regardless of USE setting).
.TP
.BR "\-\-getbinpkg [ y | n ] (\-g short option)"
Using the server and location defined in \fIPORTAGE_BINHOST\fR (see 
\fBmake.conf\fR(5)), portage will download the information from each binary 
package found and it will use that information to help build the dependency 
list.  This option implies \fB\-k\fR.  (Use \fB\-gK\fR for binary\-only 
merging.)
.TP
.BR "\-\-getbinpkgonly [ y | n ] (\-G short option)"
This option is identical to \fB\-g\fR, as above, except binaries from the
remote server are preferred over local packages if they are not identical.
.TP
.BR "\-\-ignore-default-opts"
Causes \fIEMERGE_DEFAULT_OPTS\fR (see \fBmake.conf\fR(5)) to be ignored.
.TP
.BR "-j [JOBS], \-\-jobs[=JOBS]"
Specifies the number of packages to build simultaneously. If this option is
given without an argument, emerge will not limit the number of jobs that can
run simultaneously. Also see the related \fB\-\-load\-average\fR option.
Note that interactive packages currently force a setting
of \fI\-\-jobs=1\fR. This issue can be temporarily avoided
by specifying \fI\-\-accept\-properties=\-interactive\fR.
.TP
.BR "\-\-keep\-going [ y | n ]"
Continue as much as possible after an error. When an error occurs,
dependencies are recalculated for remaining packages and any with
unsatisfied dependencies are automatically dropped. Also see
the related \fB\-\-skipfirst\fR option.
.TP
.BR \-\-load\-average=LOAD
Specifies that no new builds should be started if there are other builds
running and the load average is at least LOAD (a floating-point number).
This option is recommended for use in combination with \fB\-\-jobs\fR in
order to avoid excess load. See \fBmake\fR(1) for information about
analogous options that should be configured via \fBMAKEOPTS\fR in
\fBmake.conf\fR(5).
.TP
.BR "\-\-newuse " (\fB\-N\fR)
Tells emerge to include installed packages where USE
flags have changed since compilation. This option
also implies the \fB\-\-selective\fR option.
USE flag changes include:

A USE flag was added to a package.
A USE flag was removed from a package.
A USE flag was turned on for a package.
A USE flag was turned off for a package.

USE flags may be toggled by your profile as well as your USE and package.use
settings. If you would like to skip rebuilds for which disabled flags have
been added to or removed from IUSE, see the related
\-\-reinstall=changed\-use option.
.TP
.BR "\-\-noconfmem"
Causes portage to disregard merge records indicating that a config file
inside of a \fBCONFIG_PROTECT\fR directory has been merged already.  Portage
will normally merge those files only once to prevent the user from
dealing with the same config multiple times.  This flag will cause the
file to always be merged.
.TP
.BR "\-\-nodeps " (\fB\-O\fR)
Merges specified packages without merging any dependencies.  Note that
the build may fail if the dependencies aren't satisfied.
.TP
.BR "\-\-noreplace " (\fB\-n\fR)
Skips the packages specified on the command\-line that have already
been installed.  Without this option, any packages, ebuilds, or deps
you specify on the command\-line \fBwill\fR cause Portage to remerge
the package, even if it is already installed.  Note that Portage will
not remerge dependencies by default. Also note that this option takes
precedence over options such as \fB\-\-newuse\fR, preventing a package
from being reinstalled even though the corresponding USE flag settings
may have changed.
.TP
.BR "\-\-nospinner"
Disables the spinner for the session.  The spinner is active when the
terminal device is determined to be a TTY.  This flag disables it regardless.
.TP
.BR "\-\-usepkg\-exclude " ATOMS
A space separated list of package names or slot atoms. Emerge will ignore
matching binary packages.
.TP
.BR "\-\-rebuild\-exclude " ATOMS
A space separated list of package names or slot atoms. Emerge will not rebuild
matching packages due to \fB\-\-rebuild\fR.
.TP
.BR "\-\-rebuild\-ignore " ATOMS
A space separated list of package names or slot atoms. Emerge will not rebuild
packages that depend on matching packages due to \fB\-\-rebuild\fR.
.TP
.BR "\-\-oneshot " (\fB\-1\fR)
Emerge as normal, but do not add the packages to the world file
for later updating.
.TP
.BR "\-\-onlydeps " (\fB\-o\fR)
Only merge (or pretend to merge) the dependencies of the packages
specified, not the packages themselves.
.TP
.BR "\-\-package\-moves [ y | n ]"
Perform package moves when necessary. This option
is enabled by default. \fBWARNING:\fR This option
should remain enabled under normal circumstances.
Do not disable it unless you know what you are
doing.
.TP
.BR "\-\-pretend " (\fB\-p\fR)
Instead of actually performing the merge, simply display what *would*
have been installed if \fB\-\-pretend\fR weren't used.  Using \fB\-\-pretend\fR
is strongly recommended before installing an unfamiliar package.  In
the printout:

.TS
lI l.
N	new (not yet installed)
S	new SLOT installation (side-by-side versions) 
U	updating (to another version)
D	downgrading (best version seems lower)
R	replacing (remerging same version))
F	fetch restricted (must be manually downloaded)
f	fetch restricted (already downloaded)
I	interactive (requires user input)
B	blocked by another package (unresolved conflict)
b	blocked by another package (automatically resolved conflict)
.TE
.TP
.BR "\-\-quiet [ y | n ] (\-q short option)"
Results may vary, but the general outcome is a reduced or condensed
output from portage's displays.
.TP
.BR "\-\-quiet\-build [ y | n ]"
Redirect all build output to logs alone, and do not
display it on stdout.
.TP
.BR \-\-quiet\-unmerge\-warn
Disable the warning message that's shown prior to
\fB\-\-unmerge\fR actions. This option is intended
to be set in the \fBmake.conf\fR(5)
\fBEMERGE_DEFAULT_OPTS\fR variable.
.TP
.BR "\-\-rebuild\-if\-new\-rev [ y | n ]"
Rebuild packages when dependencies that are used at both build\-time and
run\-time are built, if the dependency is not already installed with the
same version and revision.
.TP
.BR "\-\-rebuild\-if\-new\-ver [ y | n ]"
Rebuild packages when dependencies that are used at both build\-time and
run\-time are built, if the dependency is not already installed with the
same version. Revision numbers are ignored.
.TP
.BR "\-\-rebuild\-if\-unbuilt [ y | n ]"
Rebuild packages when dependencies that are used at both build\-time and
run\-time are built.
.TP
.BR "\-\-rebuilt\-binaries [ y | n ]"
Replace installed packages with binary packages that have
been rebuilt. Rebuilds are detected by comparison of
BUILD_TIME package metadata. This option is enabled
automatically when using binary packages
(\fB\-\-usepkgonly\fR or \fB\-\-getbinpkgonly\fR) together with
\fB\-\-update\fR and \fB\-\-deep\fR.
.TP
.BR "\-\-rebuilt\-binaries\-timestamp=TIMESTAMP"
This option modifies emerge's behaviour only if
\fB\-\-rebuilt\-binaries\fR is given. Only binaries that
have a BUILD_TIME that is larger than the given TIMESTAMP
and that is larger than that of the installed package will
be considered by the rebuilt\-binaries logic.
.TP
.BR "\-\-reinstall changed\-use"
Tells emerge to include installed packages where USE flags have
changed since installation.  Unlike \fB\-\-newuse\fR, this option does
not trigger reinstallation when flags that the user has not
enabled are added or removed.
.TP
.BR "\-\-reinstall\-atoms " ATOMS
A space separated list of package names or slot atoms. Emerge will treat
matching packages as if they are not installed, and reinstall them if
necessary.
.TP
.BR \-\-root=DIR
Set the \fBROOT\fR environment variable.
.TP
.BR "\-\-root\-deps[=rdeps]"
If no argument is given then build\-time dependencies of packages for
\fBROOT\fR are installed to
\fBROOT\fR instead of /. If the \fBrdeps\fR argument is given then discard
all build\-time dependencies of packages for \fBROOT\fR. This option is
only meaningful when used together with \fBROOT\fR and it should not
be enabled under normal circumstances. For currently supported
\fBEAPI\fR values, the build-time dependencies are specified in the
\fBDEPEND\fR variable. However, behavior may change for new
\fBEAPI\fRs when related extensions are added in the future.
.TP
.BR "\-\-select [ y | n ]"
Add specified packages to the world set (inverse of
\fB\-\-oneshot\fR). This is useful if you want to
use \fBEMERGE_DEFAULT_OPTS\fR to make
\fB\-\-oneshot\fR behavior default.
.TP
.BR "\-\-selective [ y | n ]"
This is similar to the \fB\-\-noreplace\fR option, except that it
does not take precedence over options such as \fB\-\-newuse\fR.
Some options, such as \fB\-\-update\fR, imply \fB\-\-selective\fR.
Use \fB\-\-selective=n\fR if you want to forcefully disable
\fB\-\-selective\fR, regardless of options like \fB\-\-update\fR.
.TP
.BR "\-\-skipfirst"
This option is only valid when used with \fB\-\-resume\fR.  It removes the 
first package in the resume list. Dependencies are recalculated for
remaining packages and any that have unsatisfied dependencies or are
masked will be automatically dropped. Also see the related
\fB\-\-keep\-going\fR option.
.TP
.BR "\-\-tree " (\fB\-t\fR)
Shows the dependency tree for the given target by indenting dependencies.
This is only really useful in combination with \fB\-\-emptytree\fR or 
\fB\-\-update\fR and \fB\-\-deep\fR.
.TP
.BR "\-\-unordered\-display"
By default the displayed merge list is sorted using the
order in which the packages will be merged. When
\fB\-\-tree\fR is used together with this option, this
constraint is removed, hopefully leading to a more
readable dependency tree.
.TP
.BR "\-\-update " (\fB\-u\fR)
Updates packages to the best version available, which may
not always be the  highest version number due to masking
for testing and development. Package atoms specified on
the command line are greedy, meaning that unspecific
atoms may match multiple versions of slotted packages.
.TP
.BR "\-\-use\-ebuild\-visibility [ y | n ]"
Use unbuilt ebuild metadata for visibility
checks on built packages.
.TP
.BR "\-\-useoldpkg\-atoms " ATOMS
A space separated list of package names or slot atoms. Emerge will prefer
matching binary packages over newer unbuilt packages.
.TP
.BR "\-\-usepkg [ y | n ] (\-k short option)"
Tells emerge to use binary packages (from $PKGDIR) if they are available, thus 
possibly avoiding some time\-consuming compiles.  This option is useful for CD 
installs; you can export PKGDIR=/mnt/cdrom/packages and then use this option to 
have emerge "pull" binary packages from the CD in order to satisfy dependencies.
.TP
.BR "\-\-usepkgonly [ y | n ] (\-K short option)"
Tells emerge to only use binary packages (from $PKGDIR).  All the binary 
packages must be available at the time of dependency calculation or emerge 
will simply abort.  Portage does not use $PORTDIR when calculating dependency 
information so all masking information is ignored.
.TP
.BR "\-\-verbose " (\fB\-v\fR)
Tell emerge to run in verbose mode.  Currently this flag causes emerge to print 
out GNU info errors, if any, and to show the USE flags that will be used for 
each package when pretending. The following symbols are affixed to USE flags
in order to indicate their status:

.TS
l l l
___
l l l.
Symbol	Location	Meaning

-	prefix	not enabled (either disabled or removed)
*	suffix	transition to or from the enabled state
%	suffix	newly added or removed
()	circumfix	forced, masked, or removed
.TE
.TP
.BR "\-\-with\-bdeps < y | n >"
In dependency calculations, pull in build time dependencies
that are not strictly required. This defaults to \'n\' for
installation actions, meaning they will not be installed, and
\'y\' for the \fB\-\-depclean\fR action, meaning they will not be removed.
This setting can be added to
\fBEMERGE_DEFAULT_OPTS\fR (see make.conf(5)) and later overridden via the
command line.
.SH "ENVIRONMENT OPTIONS"
.TP
\fBROOT\fR = \fI[path]\fR
Use \fBROOT\fR to specify the target root filesystem to be used for
merging packages or ebuilds. This variable can be set via the \fB\-\-root\fR
option or in \fBmake.conf\fR(5) (the command line overrides other settings).
.br
Defaults to /.
.TP
\fBPORTAGE_CONFIGROOT\fR = \fI[path]\fR
Use \fBPORTAGE_CONFIGROOT\fR to specify the location for various portage 
configuration files
(see \fBFILES\fR for a detailed list of configuration files).  This variable
can be set via the \fB\-\-config\-root\fR option.
.br
Defaults to /.
.SH "OUTPUT"
When utilizing \fBemerge\fR with the \fB\-\-pretend\fR and \fB\-\-verbose\fR 
flags, the output may be a little hard to understand at first.  This section
explains the abbreviations.
.TP
.B [blocks B     ] app\-text/dos2unix ("app\-text/dos2unix" is blocking app\-text/hd2u\-0.8.0)
Dos2unix is Blocking hd2u from being emerged.  Blockers are defined when
two packages will clobber each others files, or otherwise cause some form
of breakage in your system.  However, blockers usually do not need to be
simultaneously emerged because they usually provide the same functionality.
.TP
.B [ebuild  N    ] app\-games/qstat\-25c
Qstat is New to your system, and will be emerged for the first time.
.TP
.B [ebuild  NS   ] dev-libs/glib-2.4.7
You already have a version of glib installed, but a 'new' version in 
a different SLOT is available.
.TP
.B [ebuild   R   ] sys\-apps/sed\-4.0.5
Sed 4.0.5 has already been emerged, but if you run the command, then 
portage will Re\-emerge the specified package (sed in this case).
.TP
.B [ebuild    F  ] media\-video/realplayer\-8\-r6
The realplayer package requires that you Fetch the sources manually.  
When you attempt to emerge the package, if the sources are not found, 
then portage will halt and you will be provided with instructions on how 
to download the required files.
.TP
.B [ebuild    f  ] media\-video/realplayer\-8\-r6
The realplayer package's files are already downloaded.
.TP
.B [ebuild     U ] net\-fs/samba\-2.2.8_pre1 [2.2.7a]
Samba 2.2.7a has already been emerged and can be Updated to version 
2.2.8_pre1.
.TP
.B [ebuild     UD] media\-libs/libgd\-1.8.4 [2.0.11]
Libgd 2.0.11 is already emerged, but if you run the command, then 
portage will Downgrade to version 1.8.4 for you.
.br 
This may occur if a newer version of a package has been masked because it is
broken or it creates a security risk on your system and a fix has not been
released yet.
.br 
Another reason this may occur is if a package you are trying to emerge requires
an older version of a package in order to emerge successfully.  In this case,
libgd 2.x is incompatible with libgd 1.x.  This means that packages that were
created with libgd 1.x will not compile with 2.x and must downgrade libgd first
before they can emerge.
.TP
.B [ebuild     U ] sys\-devel/distcc\-2.16 [2.13\-r1] USE="ipv6* \-gtk \-qt%"
Here we see that the make.conf variable \fBUSE\fR affects how this package is
built.  In this example, ipv6 optional support is enabled and both gtk and qt
support are disabled.  The asterisk following ipv6 indicates that ipv6 support
was disabled the last time this package was installed.  The percent sign
following qt indicates that the qt option has been added to the package since
it was last installed.  For information about all \fBUSE\fR symbols, see the
\fB\-\-verbose\fR option documentation above.
.br
\fB*Note:\fR Flags that haven't changed since the last install are only
displayed when you use the \fB\-\-pretend\fR and \fB\-\-verbose\fR options.
Using the \fB\-\-quiet\fR option will prevent all information from being
displayed.
.SH "NOTES"
You should almost always precede any package install or update attempt with a 
\fB\-\-pretend\fR install or update.  This lets you see how much will be 
done, and shows you any blocking packages that you will have to rectify.  
This goes doubly so for the \fBsystem\fR and \fBworld\fR sets, which can 
update a large number of packages if the portage tree has been particularly 
active.
.LP
You also want to typically use \fB\-\-update\fR, which ignores packages that 
are already fully updated but updates those that are not.
.LP
When you install a package with uninstalled dependencies and do
not explicitly state those dependencies in the list of parameters,
they will not be added to the world file.  If you want them to be
detected for world updates, make sure to explicitly list them as
parameters to \fBemerge\fR.
.LP
\fBUSE variables\fR may be specified on the command line to
override those specified in the default locations, letting you
avoid using some dependencies you may not want to have.  \fBUSE
flags specified on the command line are NOT remembered\fR.  For
example, \fBenv USE="\-X \-gnome" emerge mc\fR will emerge mc with
those USE settings (on Bourne-compatible shells you may omit the \fBenv\fR
part).  If you want those USE settings to be more 
permanent, you can put them in /etc/portage/package.use instead.
.LP
If \fBemerge \-\-update system\fR or \fBemerge \-\-update world\fR
fails with an error message, it may be that an ebuild uses some
newer feature not present in this version of \fBemerge\fR.  You
can use \fBemerge \-\-update portage\fR to upgrade to the lastest
version, which should support any necessary new features.
.SH "MASKED PACKAGES"
\fINOTE: Please use caution when using development packages.  Problems
and bugs resulting from misusing masked packages drains Gentoo
developer time.  Please be sure you are capable of handling any problems
that may ensue.\fR
.LP
Masks in \fBportage\fR have many uses: they allow a
testing period where the packages can be used in live machines; they
prevent the use of a package when it will fail; and they mask existing
packages that are broken or could pose a security risk.  Read below
to find out how to unmask in various cases.  Also note that if you give 
\fBemerge\fR an ebuild, then all forms of masking will be ignored and
\fBemerge\fR will attempt to emerge the package.
.TP
.BR backtracking
When packages are masked for \fBbacktracking\fR, it means that the dependency
resolver has temporarily masked them in order to avoid dependency conflicts
and/or unsatisfied dependencies. This type of mask is typically accompanied
by a message about a missed package update which has been skipped in order to
avoid dependency conflicts and/or unsatisfied dependencies.
.TP
.BR package.mask
The \fBpackage.mask\fR file primarily blocks the use of packages that cause
problems or are known to have issues on different systems.  It resides in
\fI/usr/portage/profiles\fR.
.TP
.BR CHOST
Use the \fBACCEPT_CHOSTS\fR variable in \fBmake.conf\fR(5) to control
\fBCHOST\fR acceptance.
.TP
.BR EAPI
The \fBEAPI\fR variable in an \fBebuild\fR(5) file is used to mask packages
that are not supported by the current version of portage. Packages masked by
\fBEAPI\fR can only be installed after portage has been upgraded.
.TP
.BR KEYWORDS
The \fBKEYWORDS\fR variable in an \fBebuild\fR file is also used for masking 
a package still in testing.  There are architecture\-specific keywords for 
each package that let \fBportage\fR know which systems are compatible with 
the package.  Packages which compile on an architecture, but have not been 
proven to be "stable", are masked with a tilde (\fB~\fR) in front of the 
architecture name.  \fBemerge\fR examines the \fBACCEPT_KEYWORDS\fR environment 
variable to allow or disallow the emerging of a package masked by 
\fBKEYWORDS\fR.  To inform \fBemerge\fR that it should build these 'testing' 
versions of packages, you should update your 
\fI/etc/portage/package.accept_keywords\fR
file to list the packages you want the
\'testing\' version.  See \fBportage\fR(5) for more information.
.TP
.BR LICENSE
The \fBLICENSE\fR variable in an \fBebuild\fR file can be used to mask
packages based on licensing restrictions. \fBemerge\fR examines the
\fBACCEPT_LICENSE\fR environment variable to allow or disallow the emerging
of a package masked by \fBLICENSE\fR. See \fBmake.conf\fR(5) for information
about \fBACCEPT_LICENSE\fR, and see \fBportage\fR(5) for information about
\fI/etc/portage/package.license\fR.
.TP
.BR PROPERTIES
The \fBPROPERTIES\fR variable in an \fBebuild\fR file can be used to mask
packages based on properties restrictions. \fBemerge\fR examines the
\fBACCEPT_PROPERTIES\fR environment variable to allow or disallow the emerging
of a package masked by \fBPROPERTIES\fR. See \fBmake.conf\fR(5) for information
about \fBACCEPT_PROPERTIES\fR, and see \fBportage\fR(5) for information about
\fI/etc/portage/package.properties\fR. Use the \fB\-\-accept\-properties\fR
option to temporarily override \fBACCEPT_PROPERTIES\fR.
.SH "CONFIGURATION FILES"
Portage has a special feature called "config file protection". The purpose of
this feature is to prevent new package installs from clobbering existing
configuration files. By default, config file protection is turned on for /etc
and the KDE configuration dirs; more may be added in the future.
.LP
When Portage installs a file into a protected directory tree like /etc, any
existing files will not be overwritten. If a file of the same name already
exists, Portage will change the name of the to\-be\-installed file from 'foo' to
\'._cfg0000_foo\'. If \'._cfg0000_foo\' already exists, this name becomes
\'._cfg0001_foo\', etc. In this way, existing files are not overwritten,
allowing the administrator to manually merge the new config files and avoid any
unexpected changes.
.LP
In addition to protecting overwritten files, Portage will not delete any files
from a protected directory when a package is unmerged. While this may be a
little bit untidy, it does prevent potentially valuable config files from being
deleted, which is of paramount importance.
.LP
Protected directories are set using the \fICONFIG_PROTECT\fR variable, normally
defined in make.globals. Directory exceptions to the CONFIG_PROTECTed
directories can be specified using the \fICONFIG_PROTECT_MASK\fR variable. To find
files that need to be updated in /etc, type \fBfind /etc \-iname \'._cfg????_*\'\fR.
.LP
You can disable this feature by setting \fICONFIG_PROTECT="\-*"\fR in /etc/make.conf.
Then, Portage will mercilessly auto\-update your config files. Alternatively,
you can leave Config File Protection on but tell Portage that it can overwrite
files in certain specific /etc subdirectories. For example, if you wanted
Portage to automatically update your rc scripts and your wget configuration,
but didn't want any other changes made without your explicit approval, you'd
add this to /etc/make.conf:
.LP
.I CONFIG_PROTECT_MASK="/etc/wget /etc/rc.d"
.LP
Tools such as dispatch\-conf, cfg\-update, and etc\-update are also available to
aid in the merging of these files. They provide interactive merging and can
auto\-merge trivial changes.
.SH "REPORTING BUGS"
Please report any bugs you encounter through our website:
.LP
\fBhttp://bugs.gentoo.org/\fR
.LP
Please include the output of \fBemerge \-\-info\fR when you submit your
bug report.
.SH "AUTHORS"
.nf
Daniel Robbins <drobbins@gentoo.org>
Geert Bevin <gbevin@gentoo.org>
Achim Gottinger <achim@gentoo.org>
Nicholas Jones <carpaski@gentoo.org>
Phil Bordelon <phil@thenexusproject.org>
Mike Frysinger <vapier@gentoo.org>
Marius Mauch <genone@gentoo.org>
Jason Stubbs <jstubbs@gentoo.org>
Brian Harring <ferringb@gmail.com>
Zac Medico <zmedico@gentoo.org>
.fi
.SH "FILES"
Here is a common list of files you will probably be interested in.  For a 
complete listing, please refer to the \fBportage\fR(5) man page.
.TP
.B /var/lib/portage/world
Contains a list of all user\-specified packages.  You can safely edit
this file, adding packages that you want to be considered in \fBworld\fR
set updates and removing those that you do not want to be considered.
.TP
.B /etc/make.conf
Contains variables for the build process, overriding those in
\fBmake.globals\fR.
.TP
.B /etc/portage/color.map
Contains variables customizing colors.
.TP
.B /etc/dispatch\-conf.conf
Contains settings to handle automatic updates/backups of configuration 
files.
.TP
.B /etc/make.profile/make.defaults
Contains profile\-specific variables for the build process.  \fBDo not
edit this file\fR.
.TP
.B /usr/portage/profiles/use.desc
Contains the master list of USE flags with descriptions of their
functions.  \fBDo not edit this file\fR.
.TP
.B /etc/make.profile/virtuals
Contains a list of default packages used to resolve virtual dependencies.
\fBDo not edit this file\fR.
.TP
.B /etc/make.profile/packages
Contains a list of packages used for the base system.  The \fBsystem\fR
and \fBworld\fR sets consult this file.  \fBDo not edit this file\fR.
.TP
.B /usr/share/portage/config/make.globals
Contains the default variables for the build process.  \fBDo not edit
this file\fR.
.SH "SEE ALSO"
.BR "emerge \-\-help",
.BR quickpkg (1),
.BR ebuild (1),
.BR ebuild (5),
.BR make.conf (5),
.BR color.map (5),
.BR portage (5)
.LP
A number of helper applications reside in \fI/usr/lib/portage/bin\fR.
.LP
The \fBapp\-portage/gentoolkit\fR package contains useful scripts such as 
\fBequery\fR (a package query tool).
