如何使用 apt-cacher-ng 的镜像选项进行 debootstrap?

如何使用 apt-cacher-ng 的镜像选项进行 debootstrap?

我是debootstrap这样跑的:

sudo debootstrap --verbose --arch=amd64 zesty chroot

我已经安装了apt-cacher-ng

我如何使它们协同工作,以便当我多次运行 debootstrap 时我使用缓存而不是重复下载相同的包?

我尝试使用 MIRROR 选项并设置 http_proxy 变量,但离线运行时会出现错误:

$ sudo http_proxy="http://localhost:3142" debootstrap --verbose --arch=amd64 zesty chroot http://localhost:3142/uburep
I: Retrieving InRelease 
I: Failed to retrieve InRelease
I: Retrieving Release 
E: Failed getting release file http://localhost:3142/uburep/dists/zesty/Release

我使用它http://localhost:3142/uburep是因为我在缓存中找到它:

$ find /var/cache/apt-cacher-ng -name Release
/var/cache/apt-cacher-ng/security.ubuntu.com/ubuntu/dists/zesty-security/Release
/var/cache/apt-cacher-ng/uburep/dists/zesty-updates/Release
/var/cache/apt-cacher-ng/uburep/dists/zesty-backports/Release
/var/cache/apt-cacher-ng/uburep/dists/zesty/Release

我尝试添加 Defaults env_keep += "http_proxy https_proxy ftp_proxy"到 /etc/sudoers(通过 sudo visudo),但它也没有帮助。

如果我删除 MIRROR 选项并离线运行 debootstrap,那么它似乎根本不会使用 apt-cacher-ng(请注意它不再寻找 localhost)。

E: Failed getting release file http://archive.ubuntu.com/ubuntu/dists/zesty/Release

答案1

有一个技巧可以让这个功能在没有明确代理设置的情况下工作。你实际上使用你配置的apt-cacher-ng镜像 URL 就像这样:

http://localhost:3142/us.archive.ubuntu.com/ubuntu/

因此,在指定实例的基本 URL 后,apt-cacher-ng您可以按照以下方式提供服务器和路径:这篇维基文章。我已经在自己的引导脚本中使用了这种方法,效果非常好。

注意:您可能需要apt-cacher-ng通过检查lsof -i :3142(需要lsof包)来验证您的实例是否正在运行。

相关内容