如何在卸载前编辑RPM spec文件

时间:2014-10-31 05:54:25

标签: rpm rpmbuild rpm-spec

问题描述:

  1. 我制作了一个rpm包,删除了卸载中的所有文件。
  2. 我想创建一个可以处理升级选项的rpm包(-U)
  3. 所以我以这种方式实现rpm spec文件(基于$ 1值),
  4. 但由于安装版本中不存在此实现。之前的rpm删除了我的所有文件夹。 我正在考虑编辑以前的spec文件。但无法找到此规范文件的路径。

    我怎样才能解决这个问题。

    谢谢&的问候,

1 个答案:

答案 0 :(得分:1)

这不是如何运作的。先前的spec文件不存在于磁盘上。它包含的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会自动删除这些软件包(并在升级过程中自动安装新软件包版本的文件)。