我是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
包)来验证您的实例是否正在运行。