我试图了解包(rpm、deb、dpkg)的创建如何工作以及该架构支持和不支持什么。
现在,我很难弄清楚当软件包的安装或升级在过程的不同点失败时会发生什么 - 即,脚本错误,没有足够的磁盘空间(在开始之前检查过吗?) -。
根据我目前的理解,如果有的话,不会自动回滚到以前的工作版本。所以我的问题是,包如何处理这种情况?如果发生某些错误,脚本是否根本不用于备份文件并在事务后恢复它们?(到目前为止我找不到例子)
谢谢。
我试图了解包(rpm、deb、dpkg)的创建如何工作以及该架构支持和不支持什么。
现在,我很难弄清楚当软件包的安装或升级在过程的不同点失败时会发生什么 - 即,脚本错误,没有足够的磁盘空间(在开始之前检查过吗?) -。
根据我目前的理解,如果有的话,不会自动回滚到以前的工作版本。所以我的问题是,包如何处理这种情况?如果发生某些错误,脚本是否根本不用于备份文件并在事务后恢复它们?(到目前为止我找不到例子)
谢谢。
对于 Debian(通常是衍生版本),有关维护者脚本和相应流程图的Debian 政策章节对此进行了描述。错误由(处理包提取等的工具)和维护者脚本结合处理。
dpkg
升级包时:
在任何时候,都会处理错误,并使用“撤消”参数调用各种维护者脚本来恢复之前步骤中所做的更改。最终,包可能会处于以下状态之一:
对于许多包来说,默认处理就足够了,不需要维护者脚本的帮助。其他包要复杂得多,例如那些在版本之间具有数据库和模式更改的包(例如,请参阅维护者
slapd
脚本);在某些情况下,他们实际上不会自己处理中止的升级,而是会留下现有状态的备份并要求管理员解决问题。