发布包含独立版本模块的 RPM 的最佳方式

发布包含独立版本模块的 RPM 的最佳方式

我正在开发一款针对 RHEL/CentOS 的服务器软件,目前通过标准 RPM 文件进行分发。让我想到这里的是,它包含一个可下载的客户端引擎,用户可以通过主 Web UI 访问该引擎。

这就是我所拥有的:

  1. 可下载代理仍然是我公司维护的东西,但它有一个单独的发布周期。
  2. 每个新的 RPM 版本通常与特定的代理版本相关联(通常也较新,但也可能相同)
  3. 当用户升级服务器时,他们可能希望继续使用相同的代理
  4. 代理安装当前与 RPM 打包在一起,因此当服务器升级时,旧版本的代理将从系统中删除。

显然(4)是不可取的,所以我们想要的是保留所有已安装的代理版本,即使服务器组件正在升级。

一种可行的解决方案是将代理放入其自己的 RPM 中,该 RPM 的名称中包含代理版本号,并且主 RPM 需要将其作为其依赖项。因此,当产品安装时,rpm -qa 将显示:

<product>-1.0.0
<product>-agent-install-1.0.5-1.0  (might be a better way to format the name)

当服务器更新时,您会看到:

<product>-2.0.0
<product>-agent-install-1.0.5-1.0
<product>-agent-install-1.2.0-1.0

由于我绝对不是 Linux 专家,我想知道我上面概述的策略是否......

  1. 一个可能的解决方案(即我没有错过一些明显的会扼杀整个想法的东西)
  2. 可接受的做法或黑客行为

有没有更干净的方法可以替代?例如,我可以安装每台服务器,只需将代理安装程序复制到一个单独的目录中,并且由于另一个目录不受 RPM 管理,因此它将保留下来并且不会被删除。但这样会更好吗?

相关内容