我注意到,对于当前的 Groovy,如果我仅依赖图形更新管理器,某些软件包将无法保持最新状态。目前涉及 18 个软件包:gnome-shell-common
gnome-shell-extension-prefs
gnome-shell
libpulse-dev
libpulse-mainloop-glib0
libpulse0
(amd64 和 i386)libpulsedsp
lshw
pulseaudio-module-bluetooth
pulseaudio-utils
pulseaudio
qemu-block-extra
qemu-system-common
qemu-system-data
qemu-system-gui
qemu-system-x86
qemu-utils
。
任何apt
或apt-get
full-upgrade
、dist-upgrade
或upgrade
命令都会升级软件包,但更新管理器不会,它会一直告诉我我的系统是最新的。即使我打开 tty(纯文本)会话,我也会收到没有可用更新的消息(我想这意味着更新管理器在这里也起作用了)。
这是一个错误,还是有意为之?但如果这是有意为之,那么逻辑是什么?
编辑 :执行后apt update
,更新管理器检测到一些更新,其中包括可能在此期间添加的安全更新,但出于某种神秘的原因,它随后决定也升级与 Pulse Audio 相关的软件包。
然后我按顺序运行以下命令(包括输出):
$ apt list --upgradable
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Listing...
gnome-shell-common/groovy-updates,groovy-updates 3.38.2-1ubuntu1~20.10.1 all [upgradable from: 3.38.1-1ubuntu1.1]
gnome-shell-extension-prefs/groovy-updates 3.38.2-1ubuntu1~20.10.1 amd64 [upgradable from: 3.38.1-1ubuntu1.1]
gnome-shell/groovy-updates 3.38.2-1ubuntu1~20.10.1 amd64 [upgradable from: 3.38.1-1ubuntu1.1]
lshw/groovy-updates 02.18.85-0.3ubuntu2.20.10.1 amd64 [upgradable from: 02.18.85-0.3ubuntu2]
qemu-block-extra/groovy-updates 1:5.0-5ubuntu9.3 amd64 [upgradable from: 1:5.0-5ubuntu9.2]
qemu-system-common/groovy-updates 1:5.0-5ubuntu9.3 amd64 [upgradable from: 1:5.0-5ubuntu9.2]
qemu-system-data/groovy-updates,groovy-updates 1:5.0-5ubuntu9.3 all [upgradable from: 1:5.0-5ubuntu9.2]
qemu-system-gui/groovy-updates 1:5.0-5ubuntu9.3 amd64 [upgradable from: 1:5.0-5ubuntu9.2]
qemu-system-x86/groovy-updates 1:5.0-5ubuntu9.3 amd64 [upgradable from: 1:5.0-5ubuntu9.2]
qemu-utils/groovy-updates 1:5.0-5ubuntu9.3 amd64 [upgradable from: 1:5.0-5ubuntu9.2]
$ apt-cache policy gnome-shell
gnome-shell:
Installed: 3.38.1-1ubuntu1.1
Candidate: 3.38.2-1ubuntu1~20.10.1
Version table:
3.38.2-1ubuntu1~20.10.1 500
500 http://fr.archive.ubuntu.com/ubuntu groovy-updates/main amd64 Packages
*** 3.38.1-1ubuntu1.1 100
100 /var/lib/dpkg/status
3.38.1-1ubuntu1 500
500 http://fr.archive.ubuntu.com/ubuntu groovy/main amd64 Packages
# apt update
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Hit:1 http://fr.archive.ubuntu.com/ubuntu groovy InRelease
Hit:2 http://security.ubuntu.com/ubuntu groovy-security InRelease
Hit:3 http://fr.archive.ubuntu.com/ubuntu groovy-updates InRelease
Hit:4 http://fr.archive.ubuntu.com/ubuntu groovy-backports InRelease
Reading package lists...
Building dependency tree...
Reading state information...
10 packages can be upgraded. Run 'apt list --upgradable' to see them.
然后我再次运行apt list --upgradable
并apt-cache policy gnome-shell
得到与之前完全相同的输出apt update
(我将重定向的输出与进行了比较cmp
)。update-manager
仍然说我的系统是最新的。
答案1
这不是一个错误。你已经发现了分阶段更新。
分阶段更新是 Ubuntu 使用的一种巧妙的风险管理(双重保险)技术。
这个想法是,如果一个灾难性的软件包升级漏过了 QA 评审和提议的测试,我们不要在同一天将该升级发送给所有人。相反,将该升级分散到一周内。灾难发生几个小时后,社区警报将导致新软件包被识别和撤下……从而保护 90-95% 的社区。
这是个好主意,但如果从内部来看,它肯定会令人困惑。
这就是为什么 apt 和 Update Manager 之间存在差异的原因:
- 20.10 中的 Apt 不使用分阶段升级。(将于 21.04 发布)
- 更新管理器确实使用分阶段升级。
因此,在 20.10 中,两者的输出无法直接比较。
无论您选择如何升级,您仍将获得所有升级。您可能只是在不同的日子获得部分套餐,仅此而已。