问题描述:
但由于安装版本中不存在此实现。之前的rpm删除了我的所有文件夹。 我正在考虑编辑以前的spec文件。但无法找到此规范文件的路径。
我怎样才能解决这个问题。
谢谢&的问候,
答案 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会自动删除这些软件包(并在升级过程中自动安装新软件包版本的文件)。