我运行的是 Ubuntu 20.04,刚刚运行了sudo apt update
两次,发布了下面的输出。
我的问题:
- 为什么 2 个 apt 运行不同?(1 运行到 16,另一个运行到 4)
(仅供参考:我sudo apt upgrade
在两者之间做了一个但我用 Ctrl+C 取消了它)
blabla@PMQG:~$ sudo apt update
[sudo] password for noob:
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Hit:2 http://de.archive.ubuntu.com/ubuntu focal InRelease
Get:3 http://de.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:4 http://de.archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB]
Get:5 http://de.archive.ubuntu.com/ubuntu focal-updates/main amd64 DEP-11 Metadata [279 kB]
Get:6 http://security.ubuntu.com/ubuntu focal-security/main i386 Packages [356 kB]
Get:7 http://de.archive.ubuntu.com/ubuntu focal-updates/universe amd64 DEP-11 Metadata [363 kB]
Get:8 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [1.135 kB]
Get:9 http://de.archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 DEP-11 Metadata [944 B]
Get:10 http://de.archive.ubuntu.com/ubuntu focal-backports/main amd64 DEP-11 Metadata [8.012 B]
Get:11 http://de.archive.ubuntu.com/ubuntu focal-backports/universe amd64 DEP-11 Metadata [11,3 kB]
Get:12 http://security.ubuntu.com/ubuntu focal-security/main amd64 DEP-11 Metadata [38,2 kB]
Get:13 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [675 kB]
Get:14 http://security.ubuntu.com/ubuntu focal-security/universe i386 Packages [532 kB]
Get:15 http://security.ubuntu.com/ubuntu focal-security/universe amd64 DEP-11 Metadata [66,3 kB]
Get:16 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 DEP-11 Metadata [2.464 B]
Fetched 3.804 kB in 8s (448 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
3 packages can be upgraded. Run 'apt list --upgradable' to see them.
blabla@PMQG:~$ apt list --upgradable
Listing... Done
linux-generic-hwe-20.04/focal-updates 5.13.0.25.26~20.04.12 amd64 [upgradable from: 5.11.0.46.51~20.04.23]
linux-headers-generic-hwe-20.04/focal-updates 5.13.0.25.26~20.04.12 amd64 [upgradable from: 5.11.0.46.51~20.04.23]
linux-image-generic-hwe-20.04/focal-updates 5.13.0.25.26~20.04.12 amd64 [upgradable from: 5.11.0.46.51~20.04.23]
blabla@PMQG:~$ sudo apt update
[sudo] password for noob:
Hit:1 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:2 http://de.archive.ubuntu.com/ubuntu focal InRelease
Hit:3 http://de.archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:4 http://de.archive.ubuntu.com/ubuntu focal-backports InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
3 packages can be upgraded. Run 'apt list --upgradable' to see them.
答案1
您正在从中下载更新的镜像会跟踪用户上次从您的 Ubuntu 连接到更新服务器的时间。它可以通过将您尝试更新的已安装软件列表与从同一镜像下载更新的 Ubuntu 用户保存的已安装软件列表进行比较,智能地猜测哪个 Ubuntu 实例连接到它。如果您最近连接到更新服务器,那么它会为您提供自上次连接到该镜像以来的增量更改,并从其源重新同步软件包索引文件,而不是让您每次都从其源下载所有软件包索引文件(如果您更改为其他更新服务器,则必须这样做)。
答案2
进一步解释这篇文章:运行 apt-get update 时 、Ign
或Get
是什么意思?Hit
(其中我仍然相信这是重复的问答..)
回顾:
Hit
Release
意味着 apt 检查了软件包列表( /InRelease
* 和文件)上的时间戳Index
,它们匹配并且没有变化。Get
Release
意味着 apt 检查了软件包列表( /InRelease
* 和文件)上的时间戳Index
,发现有变化,并且会下载这些变化。
因此,第一次运行时, 4 个存储库中的 3 个文件(前 4 行返回的文件)以及底层组件的文件(最后 12 行)sudo apt update
会发生变化。InRelease
Get
Index
但是,第二次运行时sudo apt update
,只有Hits
文件InRelease
,这意味着底层文件没有任何变化Index
。
因此,apt
不需要Index
再次检查底层文件,因为它知道这次没有变化(因为所有InRelease
文件都返回了Hit
)。
进一步证明这一点的是,第一次运行的最后 12 行都不包含 repo focal
。所有后续的Gets
或Hits
都来自focal-security
,focal-updates
并且- 只有从文件focal-backports
返回的 3 个。Get
InRelease
*Release
:和InRelease
文件之间的区别:InRelease
文件是内联签名的,而Release
文件应该有一个附带的 Release.gpg 文件。