假设我正在安装 RPM 软件包 A、B 和 C。它们以相同的顺序安装。在安装B的过程中突然停电了。
1)关于开启后的状态:这个事务会发生什么?会恢复吗?或者 RPM 可能会从该事务中删除所有包和文件?
2) 关于用户操作:RPM 是否需要用户操作来执行上述操作,还是在计算机启动时自动检查它?
RPM 事务主要根据依赖错误或计算机仍在运行时的错误来描述...
答案1
从很多方面来说,这是一个过于宽泛的问题,但以下是一些事实:
yum
通过or下载的包dnf
会被缓存,直到yum clean packages
ordnf clean packages
操作将其删除。- 通过下载的软件包
rpm
将一直保留在那里,直到手动删除(除非下载到临时/tmp
文件系统中,在这种情况下,它们将在重新启动后丢失)
然而,答案取决于几个因素:
你是否正处于一个
yum
或dnf
交易?或者是直接的rpm
命令?对于前一种情况,yum-complete-transaction
将尝试完成所有待处理的操作。对于后一种情况,同样,这取决于断电期间安装的确切阶段。rpm --force -Uvh $package
无论软件包的当前状态如何,您始终可以尝试运行以重新安装软件包。在这种情况下,最坏的情况是rpm
软件包损坏。您假设的软件包是以下一项或多项:grub、kernel、initramfs、dracut、lvm 或任何可以让您访问根文件系统的软件包?在这种情况下,最可能的结果是系统无法启动,需要通过其他方式修复,例如 PXE 启动到系统救援图像。根据所涉及的包以及它们之间的依赖关系,可能发生的不同情况的数量使得无法事先知道到底会发生什么。