如何删除新创建的目录而不是rpm包的一部分

时间:2017-03-27 15:17:31

标签: shell jenkins jenkins-plugins rpm-spec

我是rpm创建的新手。我需要找到一种使用rpm在jenkins中安装/卸载/升级插件的方法。我可以使用rpm安装插件,但是在卸载时如何删除不属于该软件包的新文件/目录。 / p>

假设我的软件包仅在服务器上部署xyz.jpi文件,在服务器重启时创建xyz.jpi和xyz文件夹。在卸载时,我想删除两个创建的文件夹。

2 个答案:

答案 0 :(得分:1)

您可以使用%ghost部分中的%files指令;这意味着"这个文件/文件夹还不存在,但是当它出现时它将是我的。"

%files
%ghost %dir /path/to/unexisting/xyz

如果该目录中存在文件;我不确定rpm会删除它们。在这种情况下,可能需要添加另一行(待测试!)

%ghost /path/to/unexisting/xyz/*

documentation

中的更多信息

答案 1 :(得分:0)

%postun部分中检查这是否是拥有此文件夹的软件包的最后一个实例。

例如: 在我们的案例中,所有产品(a,b,c)共同拥有/opt/xy z,然后在卸载时最后一个a,b,c删除/opt/xyz文件夹(如果不是rpm安装的) 。

我们正在通过rpm -qa | egrep 'b|c' ...进行检查。 如果没有任何内容,那么我们会rm -rf /opt/xyz