假设我家里有 3 台运行 Debian 测试版的计算机。它们的配置大多相同,安装的软件包也大多相同。
每次我更新/升级 Debian 软件包时,都是从互联网上下载的。
有没有办法从互联网上预先获取 Debian 软件包,并在本地拥有一个包含以下内容的、最新的 Debian 存储库仅有的我所安装的软件包中是否有可用的更新?
因此,通常情况下,如果我安装了 vim 并且发布了更新,我的服务器将去本地获取 .deb,然后我可以从 LAN 升级我的所有机器。如果我想安装 emacs,那么本地存储库将没有它,它将从互联网上下载。
我们也可以称它为本地 apt 缓存系统,就像 Squid 的 http 缓存一样。
谢谢!
答案1
您似乎正在寻找apt-cacher
。要安装它,只需输入:
$ sudo apt-get install apt-cacher
然后,您可以apt-get
通过创建具有以下内容的文件来配置它作为代理/etc/apt/apt.conf.d/01proxy
:
Acquire::http::Proxy "http://cacher_ip:3142/";
老实说,我在 ubuntu 上使用此配置,但在 debian 上应该类似。这样,所有软件包下载都将从apt-cacher
服务器“cacher_ip”请求。如果存在,它将在本地获取。否则,它将通过缓存器下载。
答案2
squid 代理实际上在“开箱即用”缓存 apt-get 下载以及许多其他功能方面做得相当不错。只需进行一些调整,它就能做得更好。
看:http://itkia.com/using-squid-to-cache-apt-updates-for-debian-and-ubuntu/
答案3
Apt-cacher-ng 无法准确知道每个用户有哪些更新可用,因为客户端可以在不告知服务器的情况下卸载软件包(显然如此),或者有时软件包会被重命名或拆分成多个软件包。有太多因素。如果您可以忽略其中的大部分因素,并希望通过名称(之前下载的软件包的名称)预先缓存每个软件包,请查看https://www.unix-ag.uni-kl.de/~bloch/acng/html/howtos.html#mirroring