热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

当前位置 :| 主页>Linux发行版>Gentoo>

Gentoo Portage Manual

来源: 作者: 时间:2007-02-02 Tag: 点击:



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. 使用下面的命令:
最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册