Conf(配置)
如果在 /etc/make.conf 文件中定义了一个 USE 设置,就会加上它。如果在 make.conf 里没有定义 USE 变量,就会在 /etc/make.globals 文件里查找。这个条目类似于下面这样:
Code listing 2.1
USE="slang readline gpm berkdb gdbm tcpd pam libwww ssl gb tk
lm_sensors lvm ldap tex bonobo sdl gtk xfs evo pda ldap
mmx mitshm perl python guile ruby postgres dvd 3dnow tcl
lcms gif sdl vorbis ogg oss libg++ directfb decss snmp
gnome X opengl mozilla pdflib gpg -nls gd xface jpilot
-kde -qt -esd -motif -alsa oggvorbis"
打开 USE 设置只要列出它的名字,禁止时要在名字前加上一个"-"符号。比如, gnome 打开 GNOME 关键字而-motif 禁止了 motif 关键字。
建议在 /etc/make.conf 里设置 USE 来打开或禁止某个关键字,这个文件不会被 Portage 自动覆盖。如果你在前面两个位置有不想要的 USE 设置,或是想打开某个 USE 关键字,就在这里设置好。
Env(环境变量)
USE 关键字可以用 shell 环境变量来覆盖。
Code listing 2.2
export USE="-gnome"
emerge net-im/gaim
这就更加灵活了,允许你用某个 USE 的组合来编译某一个或几个软件包。只要 emerge 是在这个 shell 里运行,并且 USE 环境变量还设置着,就会对 emerge 的软件包发生作用。
注意: 尽管 Portage 现在记录了 USE 的组合,并用这个组合来 merge 软件包,但这个 USE 组合并不是持久的。如果重新 merge 一个软件包,或者升级某个软件包,那么使用的是当时的 USE 设置,而不是它第一次 merge 时用的。
编译器参数
Portage 用来编译软件包的编译器参数可以在 /etc/make.conf 文件中的 CHOST, CFLAGS, 和 CXXFLAGS 里设置。CHOST 指明你为之而编译的平台,CFLAGS 和 CXXFLAGS 分别指明编译器编译 C 和C++ 代码时使用的参数。
在这个文件里给出了几组加了注释了使用平台的优化参数,它们是很稳定的,经过了很多测试。改变它们可能会引起编译错误和编译器与所编译软件的 bug. 如果你决定要改变缺省的设置,要小心一点,因为你可能会得到一个不稳定的系统。
使用多处理器(CPU)系统的用户,可以修改 /etc/make.glocals 中的 MAKEOPTS 参数,能得到很大的好处。这个参数在编译软件包时传递给 make 命令,打开多个 gcc 进程。
目录位置
Portage 允许你改变它用来编译软件包和存放各种文件的目录位置。多数用户没必要改。可以设置下列参数:
PORTDIR - Portage 树位置
DISTDIR - 下载压缩包的本地缓存
PKGDIR - 本地产生的 tbz2 包位置
RPMDIR - 本地产生的 RPM 包位置
CURRENTFILE - ???
PORTAGE_TMPDIR - 软件包编译时使用的临时空间
BUILD_PREFIX - 与 PORTAGE_TMPDIR 有关
PKG_TMPDIR - 与 PKG_TMPDIR 有关
配置文件保护
Portage 允许保护指定目录中的所有配置文件。Portage 将不覆盖保护目录中的文件。如果某个包试图安装一个已经有了的文件,新的文件将被改名成 ._cfg0000_name. 这样做,用户就能以后再看一下新的文件,并根据两个文件的差异把它们合并。
/etc/make.conf 或 /etc/make.globals 文件中的 CONFIG_PROTECT 是用来设置保护目录的。保护目录下的文件和子目录可以用 CONFIG_PROTECT_MASK 参数来使之失去保护。
下面是一个例子,不能盲目地拷贝:
Code listing 2.3
CONFIG_PROTECT="/etc /usr/share/config /usr/kde/2/share/config"
CONFIG_PROTECT_MASK="/etc/gconf /etc/init.d /etc/pam.d"
用户可能还想知道更多的信息,用下列命令:
Code listing 2.4
emerge --help config
特性
Portage 提供了一些参数,供开发者控制 Portage 的行为并在 merge 一个软件包的不同阶段来清空。这些参数只适合于开发者,对用户可能会引起麻烦。
/etc/make.conf 或 /etc/make.globals 文件中的 FEATURES 可以控制下列参数:
digest : 为新的 ebuild 文件自动创建摘要.
cvs : 自动把摘要提交到 cvs.
sandbox : 打开 "sandbox" 来进行路径前缀保护。
noclean : Portage 永远不自动清空.
noauto : 不要自动运行 ebuild 前面的步骤。
Portage SYNC 设置
Portage 通过 rsync 来更新 Portage 树。如果你找到了其他更新方法,可以在 /etc/make.conf 文件中的 SYNC 那里定义。
RSYNC
rsync 是最常见的更新 Portage 树的方法。rsync 方法在 /etc/make.conf 中设置:
Code listing 2.5
SYNC="rsync://cvs.gentoo.org/gentoo-x86-portage"
注意:rsync 方法会盲目的覆盖掉你对本地 Portage 树作的任何改动。如果你需要保留本地的改动,使用PORTDIR_OVERLAY="/some/dir/where/you/keep-your-tree" 来保皇派你自己的劳动成果。
开发者 CVS
对 CVS 树有完全访问权限的开发者可以 emerge sync 本地的树和 CVS 仓库,不过要用 RSH 或 SSH 连接。
用你的帐号 check out(CVS 术语,意为检出) 一个 CVS tree,并把它移到 /usr/portage,用下列 SYNC 参数:
Code listing 2.6
SYNC="cvs://youraccount@cvs.gentoo.org:/home/cvsroot"
镜像
Gentoo 项目在本地保留了一个 Portage 树中 ebuild 文件引用到的压缩包的完整镜像。upstream(经常上传)的源码包等,放在可能已经关了的老服务器上。upstream 的源码包,一般更新很快,开发者可能会在出新版本的时候把老版本从服务器上删除。为了方便 Gentoo 的用户(并且减少 upstream 源码站点的带宽占用),我们也镜像这些文件。你可以用离你近的服务器上下载,这样更快,也更可靠。
你 mereg 一个软件包的时候,Portage会首先搜索我们的镜像站点,如果镜像站点没有,那么 Portage 会按照 ebuild 文件中给出的 HTTP 或 FTP 服务器去下载。
Portage 使用的镜像站点在 /etc/make.conf 中的 GENTOO_MIRRORS i设置,下面是缺省的设置:
Code listing 2.7
GENTOO_MIRRORS="http://www.ibiblio.org/gentoo"
要找一个离你近的 Gentoo 镜像,到 Gentoo 的网站上查一下,或者在你本地的邮件列表里问。
下载程序
Porgate 用来下载压缩包的程序可以用 FETCHCOMMAND 和 RESUMECOMMAND 来设置。在 /etc/make.conf 和 /etc/make.globals 中给出了几个例子。Portage 缺省使用 wget 应该能满足多数用户的需要。
注意:Portage 用 HTTP_PROXY 和 FTP_PROXY 这两个环境变量来把 HTTP 和 FTP 代理的信息传递给下载程序。
代理
Portage 在下载文件的时候,既能用 HTTP 代理也能用 FTP 代理。把 HTTP_PROXY 和 FTP_PROXY 在 /etc/make.conf 或 /etc/make.globals 文件中设置好就行了。如果一个代理服务器既提供 HTTP 也提供 FTP 代理,你可以用 PROXY 变量来替换前面的两个变量。
例如:
Code listing 2.8
HTTP_PROXY="http://192.168.1.1:8080"
FTP_PROXY="http://192.168.1.1:8080"
或
PROXY="http://192.168.1.1:8080"
Portage 也可以通过 HTTP 代理来使用 RSYNC。 RSYNC 代理可以在 /etc/make.conf 中设置 RSYNC_PROXY 参数或者把它设置成环境变量。
例如:
Code listing 2.9
RSYNC_PROXY="192.168.1.1:8080"
注意:如果你所在的网络有防火墙,rsync 就好像不能使用 HTTP 代理了。你可以用快照 (译注:更新很快,一般是从 cvs 里抓出来的) 的压缩包来更新你的 Portage 树。比如下面这里就有一个: http://www.ibiblio.org/gentoo/snapshots/.
杂项
下面是一些用户可能有用的次要参数:
NOCOLOR : 禁止 emerge 工具输出中的彩色。
CLEAN_DELAY : Portage 在删除一个包前,给用户一定的时间(以秒计算)来取消这个行为。如果设置成"0",就不等待,直接 unmerge.
3.软件包管理
升级 Portage 树
Portage tree 存放在 /usr/portage,包含各种软件包的编译指导文件(称为 ebuilds). 这个树还包含 profile 和 package.mask 信息,对保持你的系统最新很重要。所以需要经常更新这个树,与官方的 Portage 树保持一致,以便安装最新版本的软件包,修正 bug. 使用下面的命令:
