Handbook:Parts/Portage/Files/zh-cn

配置指南
Portage附带了一个默认的配置文件. 当你打开它时，你就会发现所有的Portage配置选项都是通过变量来控制的. Portage读取的是什么变量，这些变量分别又是什么意思，下面将详细解释.

因为许多配置命令在不同的架构下是不同的，Portage也有相应的各组默认配置文件，它们是你的profile的一部分. 你的profile是 这个链接文件指向的目录；Portage的配置选项是在你的以及所有被继承的profile中的 文件中设定的. 我们稍后将详细解释profile及目录.

如果打算改变配置变量，不要变更 或者. 而应该修改，它比前面的几个文件有更高的优先级. 你会发现还有一个文件. 顾名思义，它仅仅是一个例子而已——Portage并不读取这个文件.

你也可以将一个Portage的配置变量定义为环境变量，但我们并不推荐这样做.

Profile特定的信息
我们已经见到过 目录了. 不过，这并不是一个真正的目录，而是一个指向 的符号链接，默认情况下是一个位于/usr/portage/profiles里的目录，虽然你也可以在其他地方创建自己的profile并指向他们. 这个符号链接指向的profile就是你的系统所使用的.

一个profile包含了Portage需要的与架构相关的信息，比如该profile对应的system包含的软件包的列表，以及对这个profile来说不能运行的（或者被屏蔽掉）的软件列表，等等.

用户特定的配置
当你需要变更Portage安装软件的行为时，你需要做的就是编辑 中的文件. 我们强烈建议你使用 中的文件而不是通过修改环境变量来变更这些行为！

在 目录中，你可以创建下列文档：
 * 它列出了你永远不希望Portage安装的软件包.
 * 它列出了本来Gentoo的开发者不建议安装的，但是你希望能安装的软件包.
 * 它列出了还未被确认适合你的系统或架构，但是你希望能安装的软件包.
 * 它列出了你希望某些特定软件包使用的而不是整个系统使用的USE标记.

这些并不需要一定是文件；它们也可以是有包含单个软件包信息文件的目录. 更多关于 目录的信息及你能创建的文件的完整列表可以在Portage的手册页中找到：

改变Portage文件和目录的位置
先前提到的配置文件不能保存在其他地方——Portage总是会在这些特定的位置搜索配置文件. 不过Portage还用了许多其他的位置来满足不同的目的：编译、保存源代码、保存portage数据库.

所有的这些目的都有众所周知的默认位置，不过你可以根据你自己的喜好通过来改变它们. 本章中的其他部分将解释Portage使用哪些特定的位置存放它们以及怎样改变它们在你的文件系统中的存放地点.

这篇文档并不是一份全面的参考. 如果你需要100%范围的说明，请参看Portage和make.conf的手册页:

Gentoo 软件仓库
Portage树的默认位置是. 这由缺省的repos.conf文件定义，位于. 要修改默认值，请将此文件复制到 并更改 location 设置. 当将Gentoo存储库存储在别处（通过更改此变量）时，不要忘记相应地更改 符号链接.

如果你改变了里面的 location 变量，你可能也需要改变下面几个变量，因为它们不会知道 location 变量的改变. 这是Portage处理这些变量的方式导致的： PKGDIR, DISTDIR , and RPMDIR.

预编译二进制包
虽然Portage并不默认使用预编译的二进制包，但却对其有多方面的支持. 当你要求Portage使用预编译的二进制包时，它就会在.中寻找它们. 这个位置是通过 PKGDIR 变量定义的.

源代码
程序的源代码默认保存于. 这个位置是通过 DISTDIR 变量定义的.

Portage 数据库
Portage将你系统的状态（装了哪些软件包，什么文件属于哪个软件包……）保存在.

Portage缓存
Portage缓存（包括修改时间、虚拟包、依赖关系树信息……）储存在. 这个位置就是一个缓存：如果你没有正在运行portage相关的程序，你就可以清空它.

Portage的临时文件
Portage的临时文件默认保存在. 这是通过 PORTAGE_TMPDIR 变量定义的.

如果你改变了 PORTAGE_TMPDIR 变量，你也需要改变下列的变量，因为它们不会知道 PORTAGE_TMPDIR 变量的改变. 这是由于PORTAGE处理这些变量的方式导致的： BUILD_PREFIX.

编译目录
Portage为每一个它所安装的软件包在里创建特定的编译目录. 这一位置是通过 BUILD_PREFIX 变量定义的.

Live文件系统位置
By default Portage installs all files on the current filesystem, but this can be changed by setting the ROOT environment variable. This is useful when creating new build images.

Ebuild logging
Portage can create per-ebuild log files, but only when the PORT_LOGDIR variable is set to a location that is writable by Portage (through the Portage user). By default this variable is unset. If PORT_LOGDIR is not set, then there will not be any build logs with the current logging system, though users may receive some logs from the new support.

If PORT_LOGDIR is not defined and is used, then build logs and any other logs saved by elog will be made available, as explained below.

Portage offers fine-grained control over logging through the use of elog:


 * PORTAGE_ELOG_CLASSES : This is where users can define what kinds of messages to be logged. This can be any space-separated combination of info, warn, error, log, and qa.
 * info: Logs "einfo" messages printed by an ebuild
 * warn: Logs "ewarn" messages printed by an ebuild
 * error: Logs "eerror" messages printed by an ebuild
 * log: Logs the "elog" messages found in some ebuilds
 * qa: Logs the "QA Notice" messages printed by an ebuild


 * PORTAGE_ELOG_SYSTEM : This selects the module(s) to process the log messages. If left empty, logging is disabled. Any space-separated combination of save, custom, syslog, mail, save_summary, and mail_summary can be used. At least one module must be used in order to use elog.
 * save: This saves one log per package in, or if $PORT_LOGDIR is not defined.
 * custom: Passes all messages to a user-defined command in $PORTAGE_ELOG_COMMAND; this will be discussed later.
 * syslog: Sends all messages to the installed system logger.
 * mail: Passes all messages to a user-defined mailserver in $PORTAGE_ELOG_MAILURI; this will be discussed later. The mail features of elog require >=portage-2.1.1.
 * save_summary: Similar to save, but it merges all messages in, or if $PORT_LOGDIR is not defined.
 * mail_summary: Similar to mail, but it sends all messages in a single mail when emerge exits.


 * PORTAGE_ELOG_COMMAND : This is only used when the custom module is enabled. Users can specify a command to process log messages. Note that the command can make use of two variables: ${PACKAGE} is the package name and version, while ${LOGFILE} is the absolute path to the logfile. For instance:


 * PORTAGE_ELOG_MAILURI : This contains settings for the mail module such as address, user, password, mail server, and port number. The default setting is "root@localhost localhost". The following is an example for an SMTP server that requires username and password-based authentication on a particular port (the default is port 25):


 * PORTAGE_ELOG_MAILFROM : Allows the user to set the "from" address of log mails; defaults to "Portage" if unset.


 * PORTAGE_ELOG_MAILSUBJECT : Allows the user to create a subject line for log mails. Note that it can make use of two variables: ${PACKAGE} will display the package name and version, while ${HOST} is the fully qualified domain name of the host Portage is running on. For instance: