【问题标题】:how can I edit RPM spec file before uninstall如何在卸载前编辑 RPM 规范文件
【发布时间】:2014-10-31 05:54:24
【问题描述】:

问题描述:

  1. 我制作了一个 rpm 包,它删除了卸载时的所有文件。
  2. 我想制作一个 rpm 包,它也可以处理升级选项 (-U)
  3. 所以我以这种方式实现 rpm spec 文件(基于 $1 值),

但由于此实现不存在于已安装的版本中。以前的 rpm 删除了我的所有文件夹。 我正在考虑编辑以前的规范文件。但无法找到此规范文件的路径。

我该如何解决这个问题。

感谢和问候,

【问题讨论】:

    标签: rpm rpmbuild rpm-spec


    【解决方案1】:

    这不是它的工作原理。磁盘上不存在以前的规范文件。它包含的 scriptlet 存储在 rpm 数据库中。你不能“编辑”它。

    您可以通过运行 rpm --noscripts -e <package> 来阻止脚本运行,但您不想在 ugprade 期间或删除任何其他软件包时这样做。

    我假设您的软件包正在删除 %post 中的文件。如果它们不是您可以轻松重新创建/等的文件。那么您唯一的选择是复制%pre 中的所有文件,然后在专为此类紧急清理而设计的特殊触发器中将它们全部恢复。

    来自http://rpm.org/api/4.4.2.2/triggers.html

    还有另一种类型的触发器可用——triggerpostun。这些 是在其目标包被删除后运行的触发器; 当包含触发器的包是 删除。

    虽然这种类型的触发器几乎没有用处,但它们允许 包来修复另一个包的 postun 引入的错误(或 由该软件包的早期版本)。

    您也不需要手动删除您的软件包正常安装的任何文件(在您的 rpm 的 %files 部分和 rpm -qf <package> 列表中列出的内容)。当您的软件包被删除时,rpm 会自动为您删除那些文件(并在升级期间自动安装新软件包版本的文件)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-04
      • 2019-06-14
      • 2013-01-10
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多