如何检查 rpm 是否在 centos 上完全安装?

如何检查 rpm 是否在 centos 上完全安装?

我们的项目有一个 rpm,其中包含安装前和安装后脚本。

当安装后脚本仍在运行时,yum list 会显示其中的软件包名称。

sudo yum list installed project-name

或者

sudo yum list | grep project-name

那么,有没有办法检查软件包是否已完全安装,包括安装后脚本?

答案1

据我所知,在 RPM 世界中,该%post脚本被视为执行该软件包已安装。

此时软件包的内容已被复制到磁盘上的位置,并且 RPM 数据库已更新,并且依赖工具如yumdnf认为软件包已“安装”。

这就是为什么按照惯例%post脚本不能失败(或不应该导致除此以外的退出代码0)请参阅包装指南

脚本中的非零退出代码可能会破坏安装/升级/删除,使得在事务中不会对该包采取进一步的操作(请参阅排序),例如,这可能会阻止在升级时删除包的旧版本,从而留下重复的 rpmdb 条目以及文件系统上可能过时的、无人拥有的文件。

当你想知道软件包是否安装正确时,一个解决方案是添加一个%verifyscript部分来确认 %post 脚本是否执行了正确的操作并运行rpm --verify [package]

相关内容