2

我们正在用 python 开发一个应用程序,我们正在使用 RPM 来安装它。但有时,安装过程中可能会发生错误,我可以检测到它。问题是,如果出现问题,有没有办法取消安装?我尝试执行“rpm -e package_name”命令,但这是不可能的,因为系统不允许并行运行两个 RPM,所以 RPM 正在等待我的代码完成,而我的代码正在等待第一个 RPM 启动它自己的“rpm -e”

非常感谢提前!!

4

2 回答 2

1

首选方法是将包本身的安装和包数据/设置的初始化分开。让 RPM 处理软件包文件的安装。RPM 本身会处理文件冲突和类似的事情。只需正确指定要求(要求:)。

然后,您可以要求管理员进行初始设置,然后才能使用该应用程序。这是数据库和类似应用程序非常常见的方法。

但是,根据您在其他答案中的评论,我猜您的应用程序正在做一件丑陋的事情,那就是:它正在修改 RPM 安装的文件。这是不可接受的。您应该始终分开:

  • 代码和共享数据(图标等)
  • 运行时文件(临时文件、缓存、用户生成的数据)

代码和共享数据对于应用程序是只读的。它只能由安装程序(无论是 rpm 还是其他包管理器)触及。运行时文件(通常位于 /var/lib 或 $HOME 中的某个位置)可以随意更改,应用程序当然应该尽可能地处理版本之间的更新。包装应设计成:

  • rpm 处理代码和共享数据的安装/卸载
  • 应用程序处理运行时文件更新和清理

换句话说:rpm 不应接触运行时文件,应用程序不应尝试接触 rpm 控制的文件

例如数据库要求管理员在更新前转储数据库,然后在安装新数据库后恢复它们(新数据库可以有不同的内部存储数据格式)。这是无法进行自动转换时的最后一种方法。

于 2012-07-10T11:32:45.947 回答
0

不要尝试中止 rpm 软件包的安装。要么无法开始安装,要么在用户尝试运行软件时通知错误。

于 2010-01-19T11:51:43.537 回答