When Portage has merged a newer version of a certain software title, it will
remove the obsoleted files of the older version from your system. Portage gives
the user a 5 second delay before unmerging the older version. These 5 seconds
are defined by the CLEAN_DELAY variable.

Portage overwrites files provided by newer versions of a software title if the
files aren't stored in a protected location. These protected locations
are defined by the CONFIG_PROTECT variable and are generally configuration file
locations. The directory listing is space-delimited.

A file that would be written in such a protected location is renamed and the
user is warned about the presence of a newer version of the (presumable)
configuration file.

You can find out about the current CONFIG_PROTECT setting from the emerge
info output:

Code Listing 3.1: Getting the CONFIG_PROTECT setting

$ emerge info | grep 'CONFIG_PROTECT='

More information about Portage's Configuration File Protection is available
through emerge:

When the requested information or data is not available on your system, Portage
will retrieve it from the Internet. The server locations for the various
information and data channels are defined by the following variables:

A third setting involves the location of the rsync server which you use when you
update your Portage tree:

SYNC defines a particular server which Portage uses to fetch the
Portage tree from

The GENTOO_MIRRORS and SYNC variables can be set automatically through the
mirrorselect application. You need to emerge mirrorselect first
before you can use it. For more information, see mirrorselect's online
help:

Code Listing 4.1: More information about mirrorselect

# mirrorselect --help

If your environment requires you to use a proxy server, you can use the
HTTP_PROXY, FTP_PROXY and RSYNC_PROXY variables to declare a proxy server.

When Portage needs to fetch source code, it uses wget by default. You
can change this through the FETCHCOMMAND variable.

Portage is able to resume partially downloaded source code. It uses wget
by default, but this can be altered through the RESUMECOMMAND variable.

Make sure that your FETCHCOMMAND and RESUMECOMMAND stores the source code in the
correct location. Inside the variables you should use \${URI} and \${DISTDIR} to
point to the source code location and distfiles location respectively.

You can also define protocol-specific handlers with FETCHCOMMAND_HTTP,
FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP, and so on.

You cannot alter the rsync command used by Portage to update the Portage tree,
but you can set some variables related to the rsync command:

RSYNC_EXCLUDEFROM points to a file listing the packages and/or categories
rsync should ignore during the update process

RSYNC_RETRIES defines how many times rsync should try connecting to the
mirror pointed to by the SYNC variable before bailing out. This variable
defaults to 3.

RSYNC_TIMEOUT defines the amount of seconds an rsync connection can idle
before rsync sees the connection as timed-out. This variable defaults to 180
but dialup users probably want to set this to 300 or higher.