在 yum 更新期间列出当前安装的软件包版本

在 yum 更新期间列出当前安装的软件包版本

yum list installed kernel将返回软件包列表及其当前版本:

Installed Packages
[...]
kernel.x86_64    3.10.0-693.5.2.el7    updates

yum update kernel给出正在更新的软件包及其新版本的列表:

=============================================================
 Package     Arch    Version              Repository  Size
=============================================================
Installing:
 kernel      x86_64  3.10.0-957.21.3.el7  updates     48 M

是否有可以使用 yum 的组合来列出与此类似的正在更新的软件包的当前版本差异?

Package         Old version          Update version
kernel.x86_64   3.10.0-693.5.2.el7   3.10.0-957.21.3.el7

“解决依赖关系”输出可以做到这一点,但可读性不是很好,并且很难与其余文本区分开。另外,如果您指定单个包,它只会列出依赖项的现有版本:

yum update kernel
Resolving Dependencies
--> Running transaction check
---> Package kernel.x86_64 0:3.10.0-957.21.3.el7 will be installed
--> Processing Dependency: linux-firmware >= 20180911-68 for package: kernel-3.10.0-957.21.3.el7.x86_64
--> Running transaction check
---> Package linux-firmware.noarch 0:20170606-56.gitc990aae.el7 will be updated
---> Package linux-firmware.noarch 0:20180911-69.git85c5d90.el7 will be an update
[...]

答案1

yum 没有完全相同的输出。历史记录显示所有事务并可以撤消它们,列出已安装的软件包显示当前版本,更新显示依赖关系解决后要安装的新软件包。

编写一个 yum 插件,打印您想要的输出(如果您愿意)。但是,提示符下的人很乏味,而且不可扩展。

考虑按计划启用自动更新。然后验证将变成查看存储库中的更新,并验证正在更新的主机合规性。也许在发布有趣的安全更新后抽查一些主机。

如果您关心一段时间内许多主机​​的先前版本,那么用于更新管理的中央数据库无论如何都会更加强大。

答案2

检查这个脚本;-)

我没有创建它,是我之前从互联网上获得的。

#/bin/bash

update=$(yum check-update)
installed=$(yum list installed)

awk 'BEGIN {FS=OFS=" "} NR==FNR {v[$1]=$2; next} {print (v[$1] ? $1 " " v[$1] " " $2 : "")}' <(echo "$update") <(echo "$installed") | awk NF | column -t

相关内容