设置 apt 软件包缓存

本地缓存软件包的优势和用途

气隙网络

当交换机没有直接连接到互联网以接收更新或安装软件时,软件包镜像非常方便。 配置为使用本地镜像的交换机可以连接到您已配置的本地信任目标,而不是连接到互联网上的 NVIDIA 存储库。

软件包版本的精细控制

软件包镜像也是锁定交换机更新软件包的一种方法,因为它们无法从镜像上存在的软件包接收更新的软件包版本,因此通过控制镜像上的内容,您可以控制交换机可以安装的软件包。

Standard package workflow

标准软件包工作流程: 每个交换机直接从 NVIDIA 存储库下载软件包。

速度、效率和带宽降低

配置为从本地镜像接收软件包的交换机从本地源获取这些软件包,这通常意味着更快的下载时间。 另一个好处是软件包缓存; 如果一个交换机下载了一个软件包,镜像会缓存该软件包,以便所有后续下载都直接从镜像进行,从而提高速度。 根据您的规模和软件包需求,降低外部带宽要求可能是一个需要考虑的问题。

Cached package workflow

软件包镜像工具

以传统的 Linux 形式,Debian 有许多软件包镜像工具可用。

apt-mirror 程序可以复制整个 NVIDIA 存储库,因此您可以将本地交换机指向存储库的本地副本。 这种方法可行,但比您可能想要的要重一些。 因此,NVIDIA 建议使用 apt-cacher-ng 程序。

apt-cacher-ng 已经存在很长时间了,并且有很多支持者。 它取代了最初的 apt-cacher 程序,因为它更加健壮。

apt-cacher-ng 比其他产品具有多个优势

  • 占用空间小apt-cacher-ng 仅占用完整镜像空间的一小部分,并且缓存会自动清除不再需要的旧软件包。
  • 降低 WAN 带宽消耗apt-cacher-ng 仅下载每个软件包一次,并将其缓存以供来自其他交换机的后续请求使用。
  • 更快的软件包下载apt-cacher-ng 减少了除来自交换机的第一个请求之外的所有请求的下载时间。
  • 轻松的客户端配置:更改单个文件。 无需更改存储库 URL 以指向新存储库,您只需在配置中添加新的代理。
  • 轻松安装:单软件包安装,在大多数情况下无需额外配置。 只需安装即可。 您无需安装额外的 Web 服务器。

安装和配置 apt-cacher

在 Debian/Ubuntu 服务器上安装 apt-cacher-ng

在安装 apt-cacher-ng 之前,您需要引用 Debian Jessie 上游存储库。 在 /etc/apt/sources.list.d/ 目录中创建一个名为 debian.list 的文件,并添加以下行

deb  http://deb.debian.org/debian jessie main
deb-src  http://deb.debian.org/debian jessie main

保存文件后,apt-cacher-ng 应该可用

cumulus@cumulus:mgmt-vrf:~$ sudo apt-cache policy apt-cacher-ng
apt-cacher-ng:
  Installed: (none)
  Candidate: 0.8.0-3
  Version table:
     0.8.0-3 0
        500 http://deb.debian.org/debian/ jessie/main amd64 Packages

现在您可以安装 apt-cacher-ng 软件包了

$ sudo apt-get update -y
$ sudo apt-get install apt-cacher-ng

配置交换机以将 Apt-Cacher 用作代理

创建文件 /etc/apt/apt.conf.d/90apt-proxy 并在文件中添加以下行

Acquire::http::Proxy "http://192.168.252.254:3142";

请记住更新 IP 地址以反映运行 apt-cacher-ng 的服务器的 IP 地址。

其他有用的提示

请勿混合来自不同发行版的软件包

NVIDIA 强烈建议您不要将一个 Linux 发行版中的软件包安装到另一个发行版上。 例如,不要在 Cumulus Linux 交换机上安装任何 Ubuntu 软件包,因为 Cumulus Linux 是 Debian 发行版。

冻结软件包状态

要冻结软件包状态,请关闭服务器上的 apt-cacher-ng 守护程序。 所有交换机都将冻结在其软件版本,直到守护程序再次启动。

如果您在镜像服务器上使用 systemd,请运行

$ sudo systemctl stop apt-cacher-ng

如果您未使用 systemd,请改为运行此命令

$ sudo service apt-cacher-ng stop

在升级时清除软件包缓存

在某些事件后清除软件包缓存可能很有意义,例如升级到新版本的 Cumulus Linux 或在您想要提供现有软件包的新版本时。

要在 Ubuntu 16.04 上清除 Cumulus Linux 3.x 存储库的软件包缓存,请运行以下命令

$ sudo rm -rfv /var/cache/apt-cacher-ng/repo3.cumulusnetworks.com/repo/dists/