我们的项目有一个 rpm,其中包含安装前和安装后脚本。
当安装后脚本仍在运行时,yum list 会显示其中的软件包名称。
sudo yum list installed project-name
或者
sudo yum list | grep project-name
那么,有没有办法检查软件包是否已完全安装,包括安装后脚本?
答案1
据我所知,在 RPM 世界中,该%post
脚本被视为执行后该软件包已安装。
此时软件包的内容已被复制到磁盘上的位置,并且 RPM 数据库已更新,并且依赖工具如yum
并dnf
认为软件包已“安装”。
这就是为什么按照惯例%post
脚本不能失败(或不应该导致除此以外的退出代码0
)请参阅包装指南
脚本中的非零退出代码可能会破坏安装/升级/删除,使得在事务中不会对该包采取进一步的操作(请参阅排序),例如,这可能会阻止在升级时删除包的旧版本,从而留下重复的 rpmdb 条目以及文件系统上可能过时的、无人拥有的文件。
当你想知道软件包是否安装正确时,一个解决方案是添加一个%verifyscript
部分来确认 %post 脚本是否执行了正确的操作并运行rpm --verify [package]