.TH "EMERGE" "1" "Oct 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,
and nested sets that may be listed
in \fB/var/lib/portage/world_sets\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.] Other sets can exist depending
on the current configuration. The default set configuration is located
in the \fB/usr/share/portage/config/sets\fR directory. 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 ebuild(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 \-\-check\-news
Scan all repositories for relevant unread GLEP 42 news items, and display
how many are found. See \fIhttp://www.gentoo.org/proj/en/glep/glep-0042.html\fR.
.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. Also note that
depclean may break link level dependencies, especially when the
\fB\-\-depclean\-lib\-check\fR option is disabled. Thus, it is
recommended to use a tool such as \fBrevdep-rebuild\fR(1)
in order to detect such breakage.

\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.

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)
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.
\fBWARNING: This action can remove packages from your world file! Check
the emerge output of the next \-\-depclean run carefully! Use
\-\-depclean to avoid this issue.\fR
.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 and generate package.use
settings as necessary to satisfy dependencies. This
option is enabled by default. 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), or enable the
\fB\-\-autounmask\-write\fR option. The
\fBEMERGE_DEFAULT_OPTS\fR variable may be used to
disable this option by default in \fBmake.conf\fR(5).
.TP
.BR "\-\-autounmask\-unrestricted\-atoms [ y | n ]"
If \-\-autounmask is enabled, keyword and mask changes
using the \'=\' operator will be written. With this
option, \'>=\' operators will be used whenever possible.
USE and license changes always use the latter behavior.
.TP
.BR "\-\-autounmask\-keep\-masks [ y | n ]"
If \-\-autounmask is enabled, no package.unmask or ** keyword changes
will be created. This leads to unsatisfied dependencies if
no other solution exists.
.TP
.BR "\-\-autounmask\-write [ y | n ]"
If \-\-autounmask is enabled, changes are written
to config files, respecting \fBCONFIG_PROTECT\fR and \fB\-\-ask\fR.
If the corresponding package.* is a file, the changes are appended to
it, if it is a directory, changes are written to the lexicographically
last file. This way it is always ensured that the new changes take
precedence over existing changes.
.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 "\-\-buildpkg\-exclude " ATOMS
A space separated list of package atoms for which
no binary packages should be built. This option overrides all
possible ways to enable building of binary packages.
.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.
Using \fB\-\-with\-bdeps=y\fR together with \fB\-\-complete\-graph\fR makes
the graph as complete as possible.
.TP
.BR "\-\-complete\-graph\-if\-new\-ver < y | n >"
Trigger the \fB\-\-complete\-graph\fR behavior if an installed package
version will change (upgrade or downgrade). This option is enabled by default.
.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 "\-\-depclean\-lib\-check [ y | n ]"
Account for library link-level dependencies during
\fB\-\-depclean\fR and \fB\-\-prune\fR actions. This
option is enabled by default. In some cases this can
be somewhat time\-consuming. This option is ignored
when FEATURES="preserve\-libs" is enabled in
\fBmake.conf\fR(5), since any libraries that have
consumers will simply be preserved.
.TP
.BR "\-\-dynamic\-deps < y | n >"
In dependency calculations, substitute the dependencies of installed
packages with the dependencies of corresponding unbuilt ebuilds from
source repositories. This causes the effective dependencies of
installed packages to vary dynamically when source ebuild dependencies
are modified. This option is enabled by default.

\fBWARNING:\fR
If you want to disable \-\-dynamic\-deps, then it may be necessary to
first run \fBfixpackages\fR in order to get the best results. The
\fBfixpackages\fR command performs two different operations that can
also be performed separately by the `emaint \-\-fix moveinst` and
`emaint \-\-fix movebin` commands (see \fBemaint\fR(1)).
.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 "\-\-misspell\-suggestions < y | n >"
Enable or disable misspell suggestions. By default, emerge will show
a list of packages with similar names when a package doesn't exist.
The \fIEMERGE_DEFAULT_OPTS\fR variable may be used to disable this
option by default.
.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.
.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. If a build failure occurs for a single package, the build
log will be automatically displayed on stdout. If there are multiple
build failures (due to options like \-\-keep\-going or \-\-jobs),
then the content of the log files will not be displayed, and instead
the paths of the log files will be displayed together with the
corresponding die messages. This option is enabled by default. In
order to disable \-\-quiet\-build by default, set \-\-quiet\-build=n
in the \fBEMERGE_DEFAULT_OPTS\fR variable in \fBmake.conf\fR(5).
.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 build\-time dependencies are built from source, if the
dependency is not already installed with the same version and revision.
.TP
.BR "\-\-rebuild\-if\-new\-ver [ y | n ]"
Rebuild packages when build\-time dependencies are built from source, 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 build\-time dependencies are built from source.
.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 identical to the \fB\-\-noreplace\fR option.
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.
.TP
.B [ebuild     U *] sys\-apps/portage\-2.2.0_alpha6 [2.1.9.25]
Portage 2.1.9.25 is installed, but if you run the command, then
portage will upgrade to version 2.2.0_alpha6. In this case,
the \fB*\fR symbol is displayed, in order to indicate that version
2.2.0_alpha6 is masked by missing keyword. This type of masking
display is disabled by the \fB\-\-quiet\fR option if the
\fB\-\-verbose\fR option is not enabled simultaneously.
The following symbols are used to indicate various types
of masking:
.TS
l l
__
c l.
Symbol	Mask Type

#	package.mask
*	missing keyword
~	unstable keyword
.TE

\fBNOTE:\fR The unstable keyword symbol (~) will not be shown in cases
in which the corresponding unstable keywords have been accepted
globally via \fBACCEPT_KEYWORDS\fR.
.TP


.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 /usr/share/portage/config/sets/
Contains the default set configuration.
.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).
