设置 apt 软件包缓存
本地缓存软件包的优势和用途
气隙网络
当交换机没有直接连接到互联网以接收更新或安装软件时,软件包镜像非常方便。 配置为使用本地镜像的交换机可以连接到您已配置的本地信任目标,而不是连接到互联网上的 NVIDIA 存储库。
软件包版本的精细控制
软件包镜像也是锁定交换机更新软件包的一种方法,因为它们无法从镜像上存在的软件包接收更新的软件包版本,因此通过控制镜像上的内容,您可以控制交换机可以安装的软件包。

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

软件包镜像工具
以传统的 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/