【问题标题】:How to remove newly created directory not part of rpm package如何删除不属于 rpm 包的新创建目录
【发布时间】:2017-03-27 15:17:30
【问题描述】:

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

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

【问题讨论】:

  • rpm (un) 安装不应删除不属于该软件包的文件。在您的情况下,xyz 文件夹应归该 rpm 所有。
  • 只有它创建的打包在 rpm/ 中的目录和文件才可能在卸载时被删除。休息要么手动删除,要么编写一个卸载脚本来跟踪需要删除的所有其他路径。

标签: shell jenkins jenkins-plugins rpm-spec


【解决方案1】:

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

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

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

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

更多信息在documentation

【讨论】:

    【解决方案2】:

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

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

    我们正在通过rpm -qa | egrep 'b|c' 进行检查 .... 如果什么都没有,那么我们就做rm -rf /opt/xyz

    【讨论】:

      猜你喜欢
      • 2019-10-11
      • 2014-10-21
      • 2011-08-07
      • 1970-01-01
      • 2015-08-26
      • 1970-01-01
      • 2015-04-17
      • 2011-07-30
      • 1970-01-01
      相关资源
      最近更新 更多