[ << ] [ < ] [ 手册主页 ] [ > ] [ >> ]


3. Portage的特性

内容列表:

3.a. DistCC

什么是DistCC?

       distcc是一个分布式编译的工具,可以在同一网络上几个不一定完全相同的机器来进行工作。distcc客户端向DistCC服务器(运行distccd)发送所有必须的信息,这样他们可以给客户端编译源代码的部分。网络编译的结果就是编译时间更短。

       你可以在我们的Gentoo Distcc文档找到更多有关distcc的详细信息(以及怎样在Gentoo中使用的资料)。

安装DistCC

       Distcc使用一个图形化监视器来监视你的机器用于编译的工作。如果你使用GNOME,那么将“gnome”放入你的USE设置中。但是,如果你不使用GNOME而仍让希望使用这个监视器,那么就把“gtk”放进你的USE设置。

       因为distcc就像其他很多软件一样都在Gentoo的Portage中存在,安装非容容易:

注释: 从现在开始,因为你知道在你愿意的时候安装二进制包,我们在Gentoo安装手册的后面就都去掉选项--usepkg

代码 1: 安装Distcc

# emerge distcc

激活Portage的支持

       如果安装很简单,余下的部分也应该很容易了:-) 所以,让我们尽快激活Portage对distcc的支持。

       首先,打开/etc/make.conf,编辑变量FEATURES使其包含distcc关键词。然后,编辑变量MAKEOPTS-jX,其中X为运行distccd(包含当前主机)的CPU数目加上一:

代码 2: /etc/make.conf中MAKEOPTS的可能设置

# 假设除开这台主机,你还有两个单CPU distccd主机
MAKEOPTS="-j4"

       现在,去掉/etc/make.conf里的PORTAGE_TMPDIR行,并在文件的最后添加下面一行:

代码 3: 添加额外的与distcc相关的变量到/etc/make.conf

# 不要忘了反注释掉变量PORTAGE_TMPDIR
DISTCC_DIR=${PORTAGE_TMPDIR}/portage/.distcc

       现在运行distcc-config,并输入已有的DistCC服务器。作为一个简单例子,我们假设已有的DistCC服务器是192.168.1.102(当前主机)、192.168.1.103192.168.1.104(两个远端服务器):

代码 4: 配置Distcc,使用已有的三个DistCC服务器

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

       当然,也不要忘了运行distccd伺服器:

代码 5: 开始Distcc伺服器

# /etc/init.d/distccd start

       恭喜恭喜,你的系统将可以使用分布式编译了!有关DistCC和Gentoo更多更深的信息,请阅读我们的Gentoo DistCC文档.

3.b. ccache

什么是ccache?

       ccache是一种快速编译缓冲。当你编译一个软件时,它会缓冲即时的结果,因此当你重新编译相同的程序时,编译的时间将会大大减少。对于普通的编译来说,这个可以提高编译速度5到10倍。

       如果你对ccache的内幕有兴趣,请访问ccache主页

安装ccache

       在Gentoo中安装ccache很轻松,只需要emerge一下就搞定了:-)

代码 6: 安装ccache

# emerge ccache

激活Portage的支持

       首先编辑/etc/make.conf,并修改变量FEATURES使其包含ccache关键词:

代码 7: 在/etc/make.conf中编辑变量FEATURES

FEATURES="ccache"

       然后,编辑(或者创建)变量CCACHE_SIZE(也在/etc/make.conf中),使其包含你要给ccache的磁盘空间的大小:

代码 8: 在/etc/make.conf中编辑变量CCACHE_SIZE

CCACHE_SIZE="2G"

       现在,Portage将会在可以使用ccache的地方使用它来加快编译。如果你不确定ccache是否工作,你可以运行ccache -s来查看ccache统计数据:

代码 9: 查看ccache统计数据

# ccache -s

3.c. 二进制包

创建二进制软件包

       我们已经讨论了怎样使用预编译软件包,那么我们怎样创建自己的预编译软件包呢?

       如果一个软件已经安装,你可以使用quickpkg命令,它会将已安装的文件打成一个包。这对于备份来说是很有意思的!

代码 10: 使用quickpkg

# quickpkg gnumeric

       如果这个软件包还没有安装,你也可以使用emerge要求创建一个二进制包。emerge使用选项--buildpkg(简称-b)来做这个:

代码 11: 安装gnumeric并且创建二进制包

# emerge --buildpkg gnumeric

       如果你要Portage默认做这个,你应该在/etc/make.conf中将buildpkg关键词包含在变量FEATURES中。

代码 12: 自动创建二进制包

FEATURES="buildpkg"

       如果你不要安装软件,只是创建二进制软件包,你可以使用选项--buildpkgonly(简称-B):

代码 13: 给gnumeric创建二进制包

# emerge --buildpkgonly gnumeric

3.d. 安全相关的特性

沙箱

       编译和安装软件时,Portage使用沙箱(sandbox)来保护你目前的系统。这意味着,只要软件还没有安装到你的系统上,这个软件包不会接触到任何沙箱以外的文件。这可以确保让Portage知道一个软件包修改和创建了什么文件。

       当软件编译完成时,Portage会将软件在沙箱里进行“预安装”,以说明要放置什么文件,文件要放到哪。然后它将会将这些文件从沙箱复制到你的当前系统里。

用户权限

       Portage也支持非超级用户(准确来说,是以组“portage”和用户“portage”编译软件包)。这在编译过程中提高了安全性。你也可以在使用用户权限时使用或者不使用沙箱。当然,并不是说用户权限和沙箱是最常见的方法。

激活沙箱(sandbox)和/或用户权限(userpriv)

       Portage默认情况下会使用sandbox。如果你要使用usepriv,你应该将其添加到变量FEATURES中。注意到激活userpriv会失去sandbox支持,除非你也激活usersandbox

代码 14: 激活userpriv和usersandbox

FEATURES="userpriv usersandbox"

警告: 千万不要sandbox从变量FEATURES中去掉!

严格检查

       Portage可以对危险的情况作出强烈的反应(如遗失或错误的Manifest文件)。添加关键词strict到变量FEATURES可以激活这个严格检查:

代码 15: 激活严格检查

FEATURES="strict"

智能文件系统许可

       Portage可以去自动处理可能产生安全威胁的潜在的危险文件许可。它通过在前面的安装过程中去掉setuid文件的“group”和“other”对文件的可读以及去掉setgid文件的“other”对文件的可读。添加sfperms关键词到变量FEATURES可以激活这个智能文件许可:

代码 16: 激活智能文件许可

FEATURES="sfperms"

3.e. 其他的特性

Portage的帮助文件

       还有几个关键词你可以放入变量FEATURES中。它们中的大部分是面对开发者而对普通用户没什么多大作用。如果你想学习更多有关这些特性(一般说来就是Portage),不要忘了你还可以阅读我们提供的make.conf的手册。

代码 17: 更多Portage相关信息

# man make.conf

[ << ] [ < ] [ 手册主页 ] [ > ] [ >> ]


本文档内容按照Creative Commons - Attribution / Share Alike协议发布。 Copyright 2004 Gentoo.LinuxSir.ORG 如果有什么问题、建议、意见、评论,请Email联系管理员