很长一段时间以来,我一直在寻找这个问题的答案,虽然我已经看到了建议的解决方案,但没有一个有效。
我可以使用此命令看到所有准备好更新的包:
apt list --upgradable
其中一些由于分阶段更新而被阻止。我想知道哪些会升级,哪些会被阻止。
到目前为止,我所要做的就是发出这个命令(每个包一次):
apt-cache policy [packagename]
如果输出包含字符串(phased …%)
(百分号前的一位、两位或三位数字),则表示该包是分阶段更新的一部分。但它并没有说明它现在是否会安装在我的机器上。
我如何判断哪些待处理的软件包将立即安装,哪些将由于分阶段更新而被阻止?
我正在运行 Ubuntu 22.04,以防万一。
谢谢
这是一种方法:
phasing packages 列表当然是列表之间的区别。
我还拼凑了一些命令。我主要
apt
使用解析输出awk
,但如果其他人知道更多本机命令,那就太好了。如果您想查找所有进行分阶段更新的包及其相关的阶段百分比。
但是,根据这个问题,您可能只关心正在经历分阶段更新的已安装软件包。
您还可以找到将被阻止的包裹。在这种情况下,在
full-upgrade
.但是你想“告诉哪些挂起的包现在会被安装,哪些会因为分阶段更新而被阻止”。把它们放在一起。
这是打过补丁的 22.04 服务器上的示例输出(通过管道传输到
column
)。结果匹配
full-upgrade
输出笔记
2.4.8
。apt-cache policy
确定包裹是否被阻止。这似乎不再可靠。我找到了一个有用的 apt 配置选项APT::Get::Phase-Policy=True
,但结果与实际的 apt 行为不一致。这是我在解析 的输出时生成的输出apt-cache policy
,但它与 apt 的操作不匹配。的输出
apt upgrade
将准确告诉您哪些包将被升级,哪些包将被保留。您也可以使用
apt -s upgrade
它来运行模拟,这将为您提供相同的所需信息。