为我的应用程序的不同配置创建 rpm/deb 包,这些包将相互替换

为我的应用程序的不同配置创建 rpm/deb 包,这些包将相互替换

TL;DR 我想以两种配置发布我的应用程序:基本包和带有附加模块的完整包。我怎么做?

我的 CentOS 应用程序有两个包:app.rpm一个是轻量级配置,app_full.rpm另一个是带有附加模块的完整配置。如果新软件包的版本等于或更新于已安装软件包的版本,我想让它们在安装时相互替换。我试过Obsoletes:如图所示使用这里。问题是我的应用程序驻留/opt/app/在两个包中。所以发生的情况是 Yum 安装新包并覆盖旧文件/opt/app/(这是可以的),然后删除旧包(和/opt/app/)。

我实际上使用一个脚本来安装这个应用程序,它在安装之前做了很多事情(根据系统需要,添加存储库或下载 .rpm/.deb)。因此,我在这里看到的解决方案是使此脚本检查是否安装了另一个软件包,检查已安装软件包和新软件包的版本,然后运行yum uninstall​​和yum install。但这似乎是肮脏的解决方法。

我能想到的另一件事是创建app_additions.rpm其中包含附加模块并制作app_full.rpm其中包含app.rpmapp_additions.rpm。我还没试过。这行得通吗?如果我安装app_full然后卸载软件包app会发生什么?有没有办法让这些软件包通过“app”卸载?app_additionsapp_full

那么这样做的正确方法是什么?
我也想了解有关 .deb 包的信息。

相关内容