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

问题描述 投票:1回答:1

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

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

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

rpmbuild rpm-spec
1个回答
0
投票

如果您打算滥用rpm来进行其不想要的操作,则必须做一些恶作剧。

我看不到其他解决方法。我看不到删除tar.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以便在删除时进行很好的清理。
© www.soinside.com 2019 - 2024. All rights reserved.