| 
 
          [ << ]
        
          [ < ]
        
      [ 主页 ]
      
            [ > ]
          
            [ >> ]
           
 3. Portage特性
内容:3.a. Portage特性 
Portage有几个附加的特性,它们能够令您的Gentoo之旅更加愉快。这些特性中的大多数依赖于某些能够提高性能、可靠性、安全性等的软件工具。
 
为了打开或者关闭某一Portage特性您需要编辑/etc/make.conf中的FEATURES变量,这个变量包含不同的特性关键字,用空格分开。在一些情况下您可能还需要额外的安装被这个特性所依赖的工具。
 
并不是所有Portage所支持的特性都在这里列出。完整的概述,请查阅make.conf手册页。
 
| 代码 1.1: 查阅make.conf手册页 |  | 
$ man make.conf
 |  
查看特性的默认设置,运行emerge --info并且查找FEATURE变量或者用grep显示它:
 
| 代码 1.2: 找出已经被设定的特性 |  | 
$ emerge --info | grep FEATURE
 |  3.b. 分布式编译 使用distcc 
distcc是一个分布式编译程序,可以把编译任务分配给同一网络中的不同机器,这些机器的配置不必完全相同。distcc客户端发送所有必须的信息给所有可利用的distcc服务器(运行distccd的机器)。这样它们每一个都能为客户端编译一部分源码。所导致的效果就是更短的编译时间。
 
您可以在Gentoo Distcc文档里找到更多的关于distcc的信息(包括如何让它在Gentoo上工作)。
 安装distcc 
Distcc使用一个图形化监视器来监视您的机器发送出去的编译工作。如果您使用GNOME,那么将“gnome”放入您的USE设置中。但是,如果您不使用GNOME而仍然希望使用这个监视器,那么就把“gtk”放进您的USE设置中。
 
| 代码 2.1: 安装distcc |  | 
# emerge distcc
 |  激活Portage支持 
添加distcc到/etc/make.conf之中的FEATURES变量。然后,设定您合意的MAKEOPTS变量。一个众所周知的参数是"-jX",其中X为运行distccd主机(包含当前主机)的CPU数目加上一,但是您也可能用其他的数字来得到更好的结果。
 
现在运行distcc-config并输入已有的DistCC服务器。作为一个简单例子,我们假设已有的DistCC服务器是192.168.1.102(当前主机)、192.168.1.103和192.168.1.104(两个远端服务器):
 
| 代码 2.2: 配置Distcc,使用已有的三个DistCC服务器 |  | 
# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"
 |  
当然,也不要忘了运行distccd系统服务:
 
| 代码 2.3: 开始Distcc系统服务 |  | 
# rc-update add distccd default
# /etc/init.d/distccd start
 |  3.c. 缓冲编译结果 关于ccache 
ccache是一个快速的编译器缓存。当您编译一个程序的时候,它会缓存中间的结果。这样,不论什么时候您重新编译同一个程序,编译所需要得时间将被大大缩短。对于普通的编译来说,这可以提高编译速度5到10倍。
 
如果您对ccache的工作机制有兴趣,请访问ccache主页.
 安装ccache 
要安装ccache,只需要运行emerge ccache:
 
| 代码 3.1: 安装ccache |  | 
# emerge ccache
 |  激活Portage支持 
打开/etc/make.conf并添加ccache到FEATURES变量。然后添加一个新的变量CCACHE_SIZE并设置它为"2G":
 
| 代码 3.2: 在/etc/make.conf中设定CCACHE_SIZE |  | 
CCACHE_SIZE="2G"
 |  
要检查ccache是否运行,只需让它提供给您它的统计数据。因为Portage使用一个不同的ccache主目录,您需要设定CCACHE_DIR变量:
 
| 代码 3.3: 查看ccache统计数据 |  | 
# CCACHE_DIR="/var/tmp/ccache" ccache -s
 |  
/var/tmp/ccache是Portage的默认ccache主目录;为了修改这个设置,您可以设定/etc/make.conf中的CCACHE_DIR参数。
 
不过,如果您运行ccache,它使用的默认目录是${HOME}/.ccache。这就是为什么当您查询(Portage)ccache统计数据的时候您需要设定CCACHE_DIR参数的原因。
 非Portage C编译中使用ccache 
如果您需要在非Portage编译中使用ccache,添加/usr/lib/ccache/bin到您PATH参数里靠前的位置(在/usr/bin之前)。这一点可以通过编辑在您用户主目录中的.bash_profile文件来实现。使用.bash_profile是定义PATH参数的一个方式.
 
| 代码 3.4: 编辑.bash_profile |  | 
PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"
 |  3.d. 二进制包支持 创建预编译包 
Portage支持用预编译包安装。尽管Gentoo本身并不提供预编译包(除GRP快照之外),Portage依然能够处理预编译包。
 
如果某个包已经被安装在您的系统上,您可以用quickpkg来创建一个预编译包。也可以用带有--buildpkg或--buildpkgonly选项的emerge命令。
 
如果您希望Portage为您所安装的每一个单独的包创建预编译包,在FEATURES中添加buildpkg参数.
 
预编译包的更多扩展支持可以用catalyst得到。关于catalyst的更多信息请参阅Catalyst FAQ.
 安装预编译包 
尽管Gentoo并不提供,但是您可以自己建立一个“中心仓库”来存放预编译包。如果您希望使用这个仓库,您需要设定PORTAGE_BINHOST参数使Portage能够知道它。例如,如果预编译包在ftp://buildhost/gentoo上:
 
| 代码 4.1: 在/etc/make.conf中设定PORTAGE_BINHOST参数 |  | 
PORTAGE_BINHOST="ftp://buildhost/gentoo"
 |  
当您需要安装预编译包的时候,在emerge命令后的--getbinpkg选项旁加入--usepkg选项。前者让emerge命令从预定的服务器上下载预编译包,后者让emerge首先试图安装预编译包,如果预编译包不存在,那么才下载并编译源码。
 
例如:用预编译包安装gnumeric
 
| 代码 4.2: 安装gnumeric的预编译包 |  | 
# emerge --usepkg --getbinpkg gnumeric
 |  
关于emerge的预编译包的更多信息请参阅emerge手册页:
 
| 代码 4.3: 阅读emerge手册页 |  | 
$ man emerge
 |  3.e. 下载文件 并行下载 
当您在编译一系列软件的时候,Portage能在编译某一个包的同时下载编译列表中后面的包的源码,这样就缩短了安装时间。如果您希望使用这种功能,添加“parallel-fetch”到您的FEATURES变量里。
 Usersfetch 
当您以root身份运行Portage,FEATURES="userfetch"可以让Portage在下载源码包的时候放弃root特权。这是一个小小的安全性的提高。
 
 
          [ << ]
        
          [ < ]
        
      [ 主页 ]
      
            [ > ]
          
            [ >> ]
           
 本文档的内容遵循知识共享-署名-相同方式共享许可协议 |