apt-cacher-ng 不缓存服务器上安装的软件包

apt-cacher-ng 不缓存服务器上安装的软件包

我有三个 Ubuntu 系统,我希望通过设置下载包的缓存来最大限度地减少下载带宽。(只有三个系统,设置完整镜像是不值得的)。

apt-cacher-ng听起来很完美,但在使用 1 个服务器和 1 个客户端进行试用后,它并没有像我预期的那样工作。

当我在客户,它可以按预期工作 - 包被下载到服务器并存储在服务器的缓存中。

但是当我在服务器,这些包不会被缓存。

对我来说,这有点破坏了apt-cacher-ng它的实用性——只有两个系统,我最终还是会下载两次软件包(例如内核更新等)。我希望它缓存下载的要安装在服务器上的软件包;对我来说,这些软件包和客户端请求的软件包之间存在很大的重叠。

有没有办法apt-cacher-ng缓存下载并安装在服务器上的包?

答案1

要让服务器计算机浏览缓存,还需要将其设置为缓存 ( apt) 客户端。当您按照apt-cacher-ng指示对于服务器计算机,您需要执行将其设置为缓存 ( apt-cacher-ng) 服务器和缓存 ( apt) 客户端的步骤。您的意外情况如下所示:

服务器 apt 未缓存的意外情况

对于服务器,将其设置Acquire::http::Proxyhttp://localhost:3142,而不是客户端计算机将代理设置为服务器的主机名。这有效且更可靠。此后,情况如预期:

所有 apt 现已缓存

不要混淆服务器计算机(同时运行apt和的计算机apt-cacher-ng)、客户端计算机(仅运行 的计算机apt)、缓存服务器(apt-cacher-ng)和缓存客户端( )这 4 个概念。在客户端计算机上很简单。但在服务器计算机上,其自身的缓存客户端( )不会因 的安装而发生修改。是您运行的单独程序,将代理设置为不会导致循环。事实上,必须设置代理,以便服务器计算机的缓存客户端()经过缓存服务器()(恰好在同一台计算机上运行)才能按预期工作。aptaptapt-cacher-ngapt-cacher-nglocalhostaptapt-cacher-ng

答案2

对于想要这样做的人,补充回答了一些建议:

  • 我使用了 https://www.atlantic.net/vps-hosting/how-to-set-up-apt-caching-server-using-apt-cacher-ng-on-ubuntu/ (我发现它们比官方的更简洁、更集中)。
  • 确保您添加的/etc/apt/apt.conf.d用于设置代理的文件是全世界可读的,否则您将不得不sudo在每次执行时使用apt policy
  • 如果希望缓存位于非默认位置,则所有者和组必须是apt-cacher-ng
  • 如果您在服务器上使用防火墙,则必须向相应的客户端计算机开放端口 3142。
  • 缓存过程似乎不会以任何方式干扰或与我使用同一台机器上设置的单独的 Debian 12 镜像交互apt-mirror,但我仍需要对此进行一些测试。

相关内容