为什么rpm reinstall操作执行时%postun会在%post段之后运行?
问题原因
rpm --reinstall 底层逻辑是先执行新包的完整安装流程,再执行旧版本同包的卸载流程,和常规升级场景的脚本执行顺序不同:
- 首次执行
rpm -i安装时,仅会触发新包安装流程,因此只有新包的%post(安装后脚本)会被执行,你只会看到post command...输出 - 执行
rpm --reinstall重装时,rpm会先将当前系统中已安装的同版本helloworld包标记为待卸载,先完成新包的全量安装步骤(执行新包的%post脚本),安装完成后才执行旧包的卸载流程,此时才会触发旧包的%postun(卸载后脚本),因此你会先看到post command...输出,之后才是postun command...输出
规则查询方式
你可以直接查看本地rpm手册获取所有场景下的脚本段(scriplet)执行规则:执行man rpm命令后,找到SCRIPTS章节,即可查询包括安装、卸载、升级、重装在内的所有操作对应的脚本触发顺序、参数传递规则等内容。
内容的提问来源于stack exchange,提问作者Sam Daniel
相关产品推荐
相关产品推荐

