Gentoo资源服务器[Sources Mirror]的搭建
http://blog.chinaunix.net/u1/34010/showart_266943.html
   当偶第一次通过网络安装Gentoo的时候,漫长的下载源码的过程让偶头发都等白了几根,当时在想:如果公司内部就有一个资源服务器就爽了。后来给老板提了一下,觉得还不错,意见由偶提的,实施自然就落在偶头上了,不过额外奖励是过年回家往返的机票。诱惑还是不小的......
   总体说来有两种方法:
  • 搭建一个RSYNC服务器,在客户端利用RSYNC协议取代emerge时的wget去下载源码
  • 搭建一个http或者FTP服务器,也就是跟官方的服务器完全一样
利用RSYNC协议的搭建镜像服务器
     首先,你需要搭建一个RSYNC服务器,搭建方法请参考这篇文章 Gentoo Portage树服务器(SYNC服务器)的搭建。在RSYNC服务器的基础之上,再次修改其"rsyncd.conf"文件,按照如下方式修改:


uid = nobody
gid = nobody
use chroot =yes
max connections = 10
transfer logging = yes
read only = yes
pid file = /var/run/rsyncd.pid
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
motd file = /etc/rsync/rsyncd.motd
[gentoo-portage]
         path = /usr/portage
         comment = Huster Gentoo Portage tree
         exclude = /distfiles /packages

[gentoo-packages]
#For distributing Portage packages (distfiles) to internal clients
path = /usr/portage/distfiles/
comment = Huster Gentoo Linux Packages mirror


关于相应参数的详细说明可以通过"man rsyncd.conf"查看,
保存完毕,退出,重新启动RSYNC服务。
服务器端的设置就算完成了。接下来是设置客户端。修改局域网内的其他Gentoo中的make.conf文件。加入:

PORTDIR=/usr/portage
DISTDIR=${PORTDIR}/distfiles

#SYNC="rsync://Your_Server_Name_Or_IP/gentoo-portage"
SYNC="rsync://192.168.0.141/gentoo-portage"

#FETCHCOMMAND="rsync rsync://Your_Server_Name_Or_IP/gentoo-packages/${FILE} ${DISTDIR}"
FETCHCOMMAND="rsync rsync://192.168.0.141/gentoo-packages/\${FILE} ${DISTDIR}"


目的是利用RSYNC协议来取代emerge时的wget,并且指定把源码包下载到DSITDIR中。
然后,用“env-update”更新环境变量。这样,客户端的设置也算完成了。接下来你就可以通过从本地服务器上下载源码来emerge了。

  • 优点:不需要在服务器上另外部署http或者ftp服务。
  • 缺点:客户端需要做相应修改,而且当服务器上没有对应的源码包时不会自动跳转到其他镜像服务器,emerge会失败。
利用Http或者FTP服务搭建镜像服务器
 这里就不讨论Http服务器的搭建了,至于FTP服务器的搭建,请参考 Gentoo下的FTP服务器的搭建。只需要把Gentoo的所有资源都放到 DocumentRoot和<Directory>里面就可以了。

PS:为了节省空间,你可以使用"ln"创在ftp服务器的目录下建一个动态连接,指到服务器上的distfiles文件夹。

设置好FTP服务器之后,修改局域网内的其他Gentoo系统中的make.conf中的GENTOO_MIRRORS参数,把本地资源服务器的地址放在最前面。这样以来,保证了最快的下载速度,当本地服务器上没有对应的源码包时,wget也会尝试其他的镜像地址。
   关于如何同步所有的distfiles以及官方资源服务上的其他文件,我会另外写一篇,下班了,闪咯~~~!