.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 | \fIclass\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, CLASSES 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 \fIclass\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 class
Package classes are a convenient shorthand for large groups of
packages.  Two classes 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, \fIclasses\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,
\fIclasses\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 \-\-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 "\-\-inject " (\fB\-i\fR)
Injecting a package inserts a 'stub' for that package so that Portage
thinks that it is installed.  It is handy if you need, say, a binary
version of XFree86 for esoteric hardware, or you just like to roll
your own packages.  You \fBmust\fR specify a category and particular
version of a package for injecting.  For example,
\fBemerge \-\-inject sys\-kernel/gentoo\-sources\-2.4.19\fR.
.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, 
\fIclasses\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 "\-\-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 option.
.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, \fIclasses\fR, or
\fIdependencies\fR \-\- see \fB\-\-clean\fR above for examples.
.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 "\-\-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 action.  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 "\-\-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 "\-\-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 "\-\-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 "\-\-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 "\-\-skipfirst"
This action 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 "\-\-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 "\-\-upgradeonly " (\fB\-U\fR)
Updates packages, but excludes updates that would result in a lower version of 
the package being installed.  \fBSLOT\fRs are considered at a basic level.
.br 
This option is deprecated and should not be used anymore.  Please use the 
/etc/portage/package.* files from now on.
.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.
.TP
.BR "\-\-version " (\fB\-V\fR)
Displays the version number of \fBemerge\fR.  It cannot be used in
conjunction with other options.
.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 classes, 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
class 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 classes 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).
