您好,并提前感谢任何人可以为此问题提供的任何答案。
我有一个RPM,它本质上是一个爆炸WAR的包装器。在我的服务器上运行
rpm -i myRPM.rpm
这个工作得很好,一切都适合这个世界。然后我想用--relocate触发器再次运行rpm以创建相同的安装。理想情况下,我想让它在rpm数据库中安装一个带有增量实例或类似性质的新条目的应用程序。
我可以通过运行
强制安装rpm -i --force --relocate OLDPATH=NEWPATH myRPM.rpm
然而,这里的问题是旧版本不再由rpm管理。 我有什么办法可以按照我想要的方式进行这项工作吗?
答案 0 :(得分:3)
没有。 RPM维护一个文件数据库,安装RPM等。这个数据库的设计方式,一个文件(通常)只能属于1 RPM,这个RPM只有1个这个文件的副本。即,它无法在多个位置跟踪它的多个副本(--relocate)。
一般来说,重新定位RPM是一个非常糟糕的主意 - 如果您依赖于此应用程序,我会认真重新考虑。
请参阅:http://rpm.org/wiki/PackagerDocs/MultipleVersions,了解如何处理此问题。
答案 1 :(得分:0)
这是一个迟到的答案 - 但也许还为时不晚。
如果您确实需要在同一台机器上使用rpm安装多个版本的独特软件,您只需使用备用rpm数据库。
mkdir $HOME/rpm
rpm --dbpath $HOME/rpm --initdb # older version need the initialization
rpm --dbpath $HOME/rpm -i --relocate OLDPATH=NEWPATH myRPM.rpm
此方法可用于在一台计算机上进行热部署或蓝/绿部署守护进程。