在 Debian 上运行 Gentoo distfiles 缓存镜像

Sea*_*ary 3 linux debian http-proxy gentoo

我的办公室 LAN 上有各种 Linux 主机。我在一个盒子上运行 apt-cacher-ng 来缓存网络上所有 Debian 和 Ubuntu 机器的包下载。我们有一些 Gentoo 用户,我也想缓存他们的 distfiles 下载。

我已经在为 Gentoo 运行一个 rsync 镜像,事实证明这是一个简单且可靠的设置。

我想要的是类似http-replicator 的东西,但它实际上得到维护并且有一个 Debian Squeeze 包可用。我看过 Squid ,它太多了,我想要更简单的东西。我也看了Polipo,这似乎是在正确的轨道上,但遭受了这个致命的缺陷。

Gentoo 镜像上的所有 distfiles 都是相同的,但是如果您尝试从不同的源镜像下载相同的文件,Polipo 会认为这是一个不同的文件,从而导致缓存未命中。http-replicator 没有遇到这个问题,而且由于我没有管理所有的 Gentoo 框,我认为我不能保证镜像选择的高度合规性,因为mirrorselect无论如何大多数人只是使用.

所以我正在寻找的东西是:

  1. 非常容易设置,不需要太多的摆弄或复杂的缓存到期设置
  2. 可以充当透明的 HTTP 代理
  3. 将提供相同的本地文件,即使它是从不同的服务器“下载”
  4. 不需要镜像所有 Gentoo distfiles 的整个集合

这要求太多了吗?

小智 5

您可以轻松使用 apt-cacher-ng 。

Remap-gentoo: file:gentoo_mirrors http://distfiles.gentoo.org/ /gentoo ; file:backends_gentoo # Gentoo Archives

  • 在文件gentoo_mirrors 中,放入所有要捕获的镜像。
  • 在文件backends_gentoo 中,放置要用于获取的备份镜像。

这是创建 gentoo_mirrors 的脚本

# This fetches the live Gentoo mirrors list
# robbat2@gentoo.org - 2013/Dec/03
OUTFILE=gentoo_mirrors
URL=http://www.gentoo.org/main/en/mirrors3.xml
wget --save-headers -q $URL -O - \
| sed -n \
-e '/^[A-Z]/{s,^,#,g;p}' \
-e '/<mirrorgroup/{s,^,\n#,g;p}' \
-e '/<name/{s,^,#,g;p}' \
-e '/<uri/{/protocol="http"/{s/.*<uri[^>]\+>//g;s/<\/uri>//g;p}}' \
>$OUTFILE
Run Code Online (Sandbox Code Playgroud)

来源:我是一名高级 Gentoo 开发人员,负责运行 Gentoo 基础设施。我已将上述变体提交给上游 apt-cacher-ng 作者。