如何让pbuilder使用我的apt-cacher-ng实例?

我在我的局域网中有一个 apt-cacher-ng 服务器,我想知道如何“强制” pbuilder 使用它(加速软件包构建)。

缓存的客户端典型设置如下:

/etc/apt/apt.conf 中:

Acquire::http { Proxy "http://servername:3142"; };


pbuilder有一个--mirror选项,我猜它是用来设置镜像的。试试将其设置为apt-cache-ng服务器地址。 - Salem
@Salem 我觉得这样做不行,因为apt-cacher-ng只是一个代理而不是镜像。 - jrg
@jrg apt-cacher-ng可以作为一个镜像服务器运行。只需将http://servername:3142/ubuntu作为您的镜像URL即可。 - T0xicCode
3个回答

如果您在~/.pbuilderrc中设置export http_proxy=http://your-proxy:8080/,它将使用该代理进行软件包下载。
我刚刚在我的设置上尝试了一下,它有效。根据互联网流量的情况,我在运行pbuilder create时没有下载任何内容。
好处是,这种方式不仅适用于创建tarball之后对其进行修改,而且在创建tarball时也可以使用。

就像这样:

$ sudo pbuilder --login --save-after-login
# echo 'Acquire::http { Proxy "http://servername:3142"; };' > /etc/apt/apt.conf.d/02proxy
# exit
$

另外,你可以使用--execute选项:
$ sudo pbuilder --execute --save-after-exec -- /tmp/setup-apt-proxy.sh

...其中,/tmp/setup-apt-proxy.sh包含创建/etc/apt/apt.conf.d/02proxy的命令。

servername在构建环境中能找到吗?既然代理肯定是本地的,为什么不使用IP地址呢? - Alexis Wilke

我使用了--mirror参数,例如:
sudo pbuilder create --debootstrapopts --variant=buildd --configfile ~/.pbuilderrc --mirror http://localhost:3142/us.archive.ubuntu.com/ubuntu/ main restricted universe multiverse

验证代理服务器上的缓存命中情况。
$ tail -f  /var/log/apt-cacher/access.log 
Thu Dec 19 19:16:33 2013|26140|::ffff:127.0.0.1|HIT|1272844|us.archive.ubuntu.com_ubuntu_dists_precise_main_binary-amd64_Packages.bz2
Thu Dec 19 19:18:45 2013|26647|::ffff:127.0.0.1|HIT|49563|us.archive.ubuntu.com_ubuntu_dists_precise_Release
Thu Dec 19 19:18:45 2013|26663|::ffff:127.0.0.1|HIT|198|us.archive.ubuntu.com_ubuntu_dists_precise_Release.gpg
Thu Dec 19 19:18:46 2013|26707|::ffff:127.0.0.1|HIT|1272844|us.archive.ubuntu.com_ubuntu_dists_precise_main_binary-amd64_Packages.bz2