.TH "EMERGE" "1" "Dec 2005" "Portage 2.1" "Portage"
.SH "NAME"
emerge \- Command\-line interface to the Portage system
.SH "SYNOPSIS"
.TP
.BR emerge
[\fIoptions\fR] [\fIaction\fR] [\fIebuild\fR | \fItbz2file\fR | \fIset\fR | \fIdependency\fR] ...
.TP
.BR emerge
\fB\-\-sync\fR | \fB\-\-info\fR | \fB\-\-version\fR
.TP
.BR emerge
\fB\-\-search\fR \fIsomestring\fR
.TP
.BR emerge
\fB\-\-help\fR [\fBsystem\fR | \fBconfig\fR | \fBsync\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 DEPENDENCIES"
\fBemerge\fR primarily installs packages.  You can specify
packages to install in one of four main ways: an \fIebuild\fR,
a \fItbz2file\fR, a \fIset\fR, or a \fIdependency\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.
WARNING: 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 set
Package sets are a convenient shorthand for large groups of
packages.  Two sets are currently supported: \fBsystem\fR
and \fBworld\fR.  \fBsystem\fR refers to a set of packages
deemed necessary for your system to run properly.  \fBworld\fR
contains all of the packages in \fBsystem\fR, along with any
other packages listed in \fB/var/lib/portage/world\fR.  [See
\fBFILES\fR below for more information.]  Note that these
commands are generally used in conjunction with \fB\-\-update\fR.
.TP
.BR dependency
A \fIdependency\fR describes bounds on a package that you wish to install.  
\fISee portage(5) for the details on these 'atoms'.\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 \fIdependency\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 \fIebuilds\fR, \fItbz2s\fR, \fIsets\fR, or
\fIdependencies\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 " (\fB\-c\fR)
Cleans the system by removing packages that will not affect the
functionality of the system.  The arguments can be \fIebuilds\fR,
\fIsets\fR, or \fIdependencies\fR.  For example, \fBemerge
clean binutils\fR cleans out old versions of binutils;
\fBemerge \-\-clean net\-www/mozilla\-0.9.9\-r2\fR cleans out that
specific version of Mozilla.  This is generally safe to use.
\fBNote that\fR \-\-clean \fBdoes not remove unslotted packages.\fR
.TP
.BR \-\-depclean
Determines all packages installed on the system that have no 
explicit reason for being there.  \fBemerge\fR generates a list 
of packages which it expects to be installed by checking the 
\fBsystem\fR package list and the \fBworld\fR file.  It then 
compares that list to the list of packages which are actually 
installed; the differences are listed as unnecessary packages 
and then unmerged after a short timeout.  \fBWARNING: Removing some 
packages may cause packages which link to the removed package 
to stop working and complain about missing libraries.\fR 
Re\-emerge the complaining package to fix this issue.
\fBNote that changes in USE flags can drastically affect the 
output of \-\-depclean.\fR
.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
This is a list of information to include in bug reports which aids the 
developers with fixing any problems you may report.  \fBPlease include this 
information when submitting a bug report.\fR  Expanded output can be obtained 
with the \fI\-\-verbose\fR option.
.TP
.BR \-\-metadata
Causes portage to process all the metacache files as is normally done on the 
tail end of an rsync update using \fBemerge \-\-sync\fR.  The processing 
creates the cache database that portage uses for pre\-parsed lookups of 
package data.
.TP
.BR "\-\-prune " (\fB\-P\fR)
\fBWARNING: This action can remove important packages!\fR  Tries to remove 
all but the last version installed.  Since the command currently does not 
handle multiple versions of the same package properly, beware!  This does not 
check dependencies, so it may also remove packages necessary for the proper 
operation of your system.  \fBUse\fR \-\-clean \fBinstead unless you really 
know what you're doing\fR.  Its arguments can be \fIebuilds\fR, 
\fIsets\fR, or \fIdependencies\fR \-\- see \fB\-\-clean\fR above for 
examples.  You have been warned!
.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.
.TP
.BR "\-\-resume"
Resumes the last merge operation.  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.
.TP
.BR "\-\-search " (\fB\-s\fR)
Searches for matches of the supplied string in the portage tree.
The \-\-search string is a regular expression.  For example, \fBemerge
\-\-search "^kde"\fR searches for any package that 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 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
Initiates a portage tree update with one of the rsync.gentoo.org
mirrors.  \fBNote that any changes you have made to the portage
tree will be erased\fR.  Except for special circumstances, 
this uses \fBrsync\fR to do the update.  See \fBmake.conf\fR(5)'s 
description of PORTDIR_OVERLAY for a method to avoid deletions.
.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 \fIebuilds\fR, \fIsets\fR, or
\fIdependencies\fR \-\- see \fB\-\-clean\fR above for examples.
.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.  This will 
also update direct dependencies which may not be what you want.  In general, 
use this option only in combination with the world or system target.
.TP
.BR "\-\-version " (\fB\-V\fR)
Displays the version number of \fBemerge\fR.
.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.
.SH "OPTIONS"
.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 " (\fB\-a\fR)
Before performing the merge, display what ebuilds and tbz2s will be installed, 
in the same format as when using \fB\-\-pretend\fR; then ask whether to 
continue with the merge 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.
.TP
.BR "\-\-buildpkg " (\fB\-b\fR)
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).  The package will be created in the
\fI${PKGDIR}/All\fR directory.  An alternative for already\-merged
packages is to use \fBquickpkg\fR 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 "\-\-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 "\-\-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 "\-\-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.
\fB\-\-debug\fR is great for finding bash syntax errors.
.TP
.BR "\-\-deep " (\fB\-D\fR)
When used in conjunction with \fB\-\-update\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.
.TP
.BR "\-\-emptytree " (\fB\-e\fR)
Reinstalls all world packages and their dependencies to the current USE 
specifications while differing from the installed set of packages as 
little as possible.  You should run with \fB\-\-pretend\fR first to make 
sure the result is what you expect.
.TP
.BR "\-\-fetchonly " (\fB\-f\fR)
Instead of doing any package building, just perform fetches for all
packages (the main package as well as all dependencies).
.TP
.BR "\-\-fetch\-all\-uri " (\fB\-F\fR)
Instead of doing any package building, just perform fetches for all
packages (the main package as well as all dependencies), grabbing all potential
files.
.TP
.BR "\-\-getbinpkg " (\fB\-g\fR)
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 " (\fB\-G\fR)
This option is identical to \fB\-g\fR, as above, except it will not use ANY 
information from the local machine.  All binaries will be downloaded from the 
remote server without consulting packages existing in the local packages 
directory.
.TP
.BR "\-\-ignore-default-opts"
Causes \fIEMERGE_DEFAULT_OPTS\fR (see \fBmake.conf\fR(5)) to be ignored.
.TP
.BR "\-\-newuse " (\fB\-N\fR)
Tells emerge to include installed packages where USE flags have changed since 
compilation.  An asterisk marks when a USE flag has changed since the package 
was compiled.
.TP
.BR "\-\-nocolor "
Make sure none of the output from portage contains color.
.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 *will* 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 "\-\-oneshot " (\fB\-1\fR)
Emerge as normal, but do not add the packages to the world profile
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 "\-\-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, 
.br 
 
.br 
\fIN\fR = new, (not yet installed)
.br 
\fIS\fR = new, SLOT installation (side-by-side versions) 
.br 
\fIU\fR = updating, (changing versions)
.br 
\fID\fR = downgrade, (Best version seems lower) 
.br 
\fIR\fR = replacing, (Remerging same version))
.br 
\fIF\fR = fetch restricted, (Manual download)
.br 
\fIf\fR = fetch restricted, (Already downloaded)
.br 
\fIB\fR = blocked by an already installed package
.TP
.BR "\-\-quiet " (\fB\-q\fR)
Results may vary, but the general outcome is a reduced or condensed
output from portage's displays.
.TP
.BR "\-\-skipfirst"
This option is only valid when used with \fB\-\-resume\fR.  It removes the 
first package in the resume list so that a merge may continue in the presence 
of an uncorrectable or inconsequential error.  This should only be used in 
cases where skipping the package will not result in failed dependencies.
.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 "\-\-usepkg " (\fB\-k\fR) 
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 " (\fB\-K\fR)
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.
.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.
.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 (from pkg 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 packages was installed.  The percent sign
following qt indicates that the qt option has been added to the package since
it was last installed.
.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 upgrades 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, \fBUSE="\-X \-gnome" emerge mc\fR will emerge mc with
those USE settings.  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 provide three primary functions: 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.  Masking can be
done by two methods: \fBpackage.mask\fR and \fBKEYWORDS\fR.  Read below
to find out how to unmask in either case.  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 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 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.keywords\fR file 
to list the packages you want the 'testing' version.  See \fBportage\fR(5) for 
more information.
.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>
.fi
.SH "FILES"
.TP
\fB/var/lib/portage/world\fR 
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
\fB/etc/make.conf\fR 
Contains variables for the build process, overriding those in
\fBmake.globals\fR.  \fBYou should edit this file instead of the ones
listed below\fR.
.TP
.B /etc/dispatch\-conf.conf
Contains settings to handle automatic updates/backups of configuration 
files.
.TP
\fB/etc/make.profile/make.defaults\fR
Contains profile\-specific variables for the build process.  \fBDo not
edit this file\fR.
.TP
\fB/etc/make.profile/use.defaults\fR
Contains a list of packages which, if installed, cause the respective USE 
flag to be enabled by default.  \fBDo not edit this file\fR.
.TP
\fB/usr/portage/profiles/use.desc\fR 
Contains the master list of USE flags with descriptions of their
functions.  \fBDo not edit this file\fR.
.TP
\fB/etc/make.profile/virtuals\fR 
Contains a list of default packages used to resolve virtual dependencies.
\fBDo not edit this file\fR.
.TP
\fB/etc/make.profile/packages\fR
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
\fB/etc/make.globals\fR 
Contains the default variables for the build process.  \fBDo not edit
this file\fR.
.SH "SEE ALSO"
.BR "emerge \-\-help",
.BR ebuild (1),
.BR ebuild (5),
.BR make.conf (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).
