…
Get:33 http://deb.debian.org/debian sid/main DEP-11 48x48 Icons [3,683 kB]
Get:34 http://deb.debian.org/debian sid/main DEP-11 64x64 Icons [7,474 kB]
Fetched 16.1 MB in 4s (4,496 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
64 packages can be upgraded. Run 'apt list --upgradable' to see them.
如您所见,apt确实获取了 16.1 MiB 的数据。
第二次运行:
Hit:1 http://security.debian.org/debian-security buster/updates InRelease
Hit:2 http://deb.debian.org/debian buster InRelease
Hit:3 http://deb.debian.org/debian buster-updates InRelease
Hit:4 http://deb.debian.org/debian sid InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
64 packages can be upgraded. Run 'apt list --upgradable' to see them.
您的说法不正确:
apt update
不获取已下载的最新版本的目录文件;让我们来看看:第一次运行
apt update
:如您所见,
apt
确实获取了 16.1 MiB 的数据。第二次运行:
如您所见,没有获取任何数据。
这里的“诀窍”是,当
apt
向存档服务器发出 HTTP[S] 请求时,它会在其中包含已缓存的每个资源的“最后修改”时间;服务器查看该时间戳,如果它没有该资源的更新版本,它会以特殊的 HTTP 状态代码(“未修改”)进行响应,并且没有正文。apt
注意到这一点并立即使用已经可用的东西。如您所见,仍然有一些流量(传出请求和传入响应),但是:
您可以从所有来源中提取 URL,
/etc/apt/sources.list
并将/etc/apt/sources.list.d/*
相应远程存储库中文件的时间戳与ctimes
您的文件的时间戳进行比较......但是恕我直言,这比再次下载这些文件/var/lib/apt/lists
需要更长的时间(至少在我的连接上处理了 50MB很快)。