如何构建安装主机相关文件的 rpm



我必须构建一个rpm 来复制文件A的内容,以/path/to/tartetfile主机名是否为A。在所有其他情况下,应将B的内容复制到/path/to/targetfile。我知道这可能是对rpm的误用,但我仍然必须这样做。您有什么想法如何以优雅的方式完成此操作吗?

我目前的解决方案是在我的BUILD目录中创建一个空/path/to/targetfile以及一个包含文件AB/tmp/contents.tar.gz。在安装后例程中,我将提取/tmp/contents.tar.gz的相关部分进行/path/to/targetfile,然后删除压缩包。在预卸载例程中,我会触摸/tmp/contents.tar.gz以抑制已删除文件的 rpm 报告错误。

对我来说,这似乎是一种非常肮脏的方式来完成这项工作。你有更好的吗?

如果你打算滥用rpm来做一些不该做的事情,你将不得不做一些肮脏的把戏。

我没有看到适合您的其他解决方法。我看不到去除焦油.gz等的用途,除非(很少?)额外的空间对你来说确实是一个问题。我建议:

  • 将所有文件(A 和 B)打包到某个特定的目录(/usr/lib/your-package或其他什么)中,而不是压缩格式。
  • %post部分中,仅创建符号链接,以便/path/to/targetfile指向/usr/lib/your-package/A/usr/lib/your-package/B(符号链接几乎不占用空间)。这具有附加值,ls -l /path/to/targetfile将显示它指向哪个文件,从而为您提供这是文件 A 还是 B 的信息。
  • 在您的%files部分中声明%ghost /path/to/targetfile,以便在删除时进行漂亮的清理。

最新更新