我们正在用python开发一个应用程序,我们正在使用RPM来安装它。但有时,安装过程中可能会发生错误,我可以检测到它。问题是,如果出现问题,有没有办法取消安装?我尝试执行“rpm -e package_name”命令,但这是不可能的,因为系统不允许并行运行两个RPM,所以RPM等待我的代码完成,我的代码正在等待第一个RPM启动它拥有“rpm -e”
提前多多感谢!!
答案 0 :(得分:1)
首选方法是分离软件包本身的安装和软件包数据/设置的初始化。让RPM处理包文件的安装。 RPM本身将处理文件冲突和类似的事情。只需正确指定要求(需要:)。
然后,您可以在使用应用程序之前要求管理员进行初始设置。这是数据库和类似应用程序的常用方法。
但是,根据你在其他答案中的评论,我猜你的应用程序正在做一个丑陋的事情,那就是:它正在修改由RPM安装的文件。这是不可接受的。你应该总是分开:
代码和共享数据对于应用程序是只读的。它只能由安装程序触及(无论是rpm还是其他包管理器)。运行时文件(通常位于/ var / lib或$ HOME中的某个位置)可以随意更改,应用程序应该尽可能地处理版本之间的更新。应将包设计为:
换句话说: rpm不应该触及运行时文件,应用程序不应该尝试触摸rpm控制的文件。
例如,数据库要求管理员在更新之前转储数据库,然后在安装新数据库之后恢复它们(新数据库可以具有不同的内部格式存储数据)。这是没有自动转换的最后一种方法。
答案 1 :(得分:0)
请勿尝试中止rpm软件包的安装。无法开始安装,或在用户尝试运行软件时通知用户错误。