我有几个应用程序想使用rpm进行部署。其中一些文件会覆盖其他已部署软件包中的文件。简单地将新文件包含在部署软件包中将导致rpm冲突。
我正在寻找正确的方法来使用rpm更新/替换已安装的文件。
我已经想出了一些解决方案,但似乎都不太对。
- 维护包含原始文件的自定义软件包版本。
即使这听起来比其他可能的解决方案更像一个专业技巧,但为了相对较小的回报而言,这似乎需要大量工作。
- 使用另一个名称在rpm中包含文件,并在post节中复制它们。
这样做可以行得通,但意味着在系统上散布多个副本的文件。此外,这意味着每个文件在rpm构建规范中需要额外进行维护。
- 在post节中使用wget替换某些已知服务器中的原始文件。
这与复制技术类似,但是文件甚至不会存在于rpm中。这可能表现得像一个不错的集中配置管理机构。
- 将文件部署为新文件,然后使用符号链接覆盖原始文件。
这也类似于复制技术,但是更少的杂乱。问题在于某些文件作为符号链接时不会表现良好。
%post
中,黑客可以更改属于另一个RPM的文件,但当其他软件包更新并整理其内容时,它还需要在%triggerin -- otherpackage
中具有相同的条款。再次强调,您列出的所有其他内容都是正确的答案。 - Rich