Intro to apt-cacher-ng

http://www.unix-ag.uni-kl.de/~bloch/acng/

acng 是个用于Linux包更新缓存的反向代理(类似approx), 主要作用是为公司/家的小水管节约流量, 可以避免多台机器反复浪费时间/流量去下载相同的文件. 最初是为了debian用(基于apt的都可以), 但也可以同时支持 opensuse, archlinux, cygwin, 甚至 sf.net 等. 主要区别在删除过期包能力不同. 不过大不了直接清掉, 影响不大.

debian可以直接装, arch在aur里有. 装好之后修改 /etc/apt-cacher-ng/acng.conf , 中间一段map repo的地方我是像下面这样改的 (我比较懒, mirror就直接写在里面了, 默认是写在其他文件里的)

Remap-cygwin: /cygwin ; http://mirrors.us.kernel.org/sourceware/cygwin/
Remap-debsec: /debian-security ; http://security.debian.org/
Remap-debrep: /debian ; http://ftp.us.debian.org/debian/
Remap-debbps: /debian-backports ; http://backports.debian.org/debian-backports/
Remap-alxrep: /archlinux ; http://mirrors.us.kernel.org/archlinux/

如果要用arch还要改下匹配规则匹配, 多匹配 *.db 文件(如果是其他发行版的也注意, 被注释掉的配置不是默认配置, 可以找源码看下如果需要.....)

VfilePattern = (^|.*?/)(Index|Packages\.bz2|Packages\.gz|Packages|Release|Release\.gpg|Sources\.bz2|Sources\.gz|Sources|release|index\.db-.*\.gz|Contents-    [^/]*\.gz|pkglist[^/]*\.bz2|rclist[^/]*\.bz2|/meta-release[^/]*|Translation[^/]*\.bz2|.*\.db)$

然后把所有机器的mirror地址指定成这台机器的9999端口(默认是3142, 按个人习惯改)就行了. 下面是debian和archlinux配置示例(注意更改IP和端口)

# /etc/apt/sources.list
deb http://172.0.130.9:9999/debian/ squeeze main contrib non-free
deb-src http://172.0.130.9:9999/debian/ squeeze main contrib non-free

deb http://172.0.130.9:9999/debian-security/ squeeze/updates main contrib non-free
deb-src http://172.0.130.9:9999/debian-security/ squeeze/updates main contrib non-free

deb http://172.0.130.9:9999/debian/ squeeze-updates main contrib non-free
deb-src http://172.0.130.9:9999/debian/ squeeze-updates main contrib non-free

deb http://172.0.130.9:9999/debian-backports/ squeeze-backports main contrib non-free

archlinux

# /etc/pacman.d/mirrorlist
Server = http://172.0.130.9:9999/archlinux/$repo/os/$arch

最后, web界面可以直接访问 http://ip:port/ , 有一些命中统计, 还可以直接清理缓存.