【发布时间】:2019-06-27 21:54:33
【问题描述】:
我创建了一个 rpm 构建,它将作为 rpm 安装的一部分提取文件,然后运行自定义脚本来安装包。但是当我执行 rpm -e 选项时,它只会删除 rpm 提取的文件,这还不够好。如何编写 rpm -e 选项来运行我的自定义卸载脚本?
【问题讨论】:
我创建了一个 rpm 构建,它将作为 rpm 安装的一部分提取文件,然后运行自定义脚本来安装包。但是当我执行 rpm -e 选项时,它只会删除 rpm 提取的文件,这还不够好。如何编写 rpm -e 选项来运行我的自定义卸载脚本?
【问题讨论】:
您可以编写自定义的%preun 或%postun scriptlet。
话虽如此,您所做的是错误,并且没有遵循 RPM 应该做什么的理念。你让管理员几乎不可能验证系统上文件的完整性 (rpm -V),找出系统上安装文件的原因 (rpm -q --whatprovides) 等等。请重新考虑。
【讨论】:
在正常情况下,文件是作为包生命周期的副产品创建的(即日志文件、临时文件),您可以在卸载期间使用 %ghost 指令删除这些文件。见Directives For the %files list。
在您的%files 部分中,您将%ghost 拥有这些附加文件。打包不会尝试将这些文件包含在 rpm 中,但在卸载您的包时,它会识别所有权并相应地删除它们。
%files
%ghost /var/log/mylogfile.log
【讨论】: