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.rpm
和app_additions.rpm
。我还没试过。这行得通吗?如果我安装app_full
然后卸载软件包app
会发生什么?有没有办法让这些软件包通过“app”卸载?app_additions
app_full
那么这样做的正确方法是什么?
我也想了解有关 .deb 包的信息。