我正在为iPhone开发一个越狱程序。当磁盘空间不足时,安装仍将继续,因此部分文件被复制,而其他文件未被复制,这会使磁盘变脏。
我写了磁盘空间检查代码在preinst和prerm脚本,这是deb包的控制文件。当磁盘空间不足时,控制脚本将以非零代码退出。但问题是,当我们升级一个包时,如果磁盘空间不足,即使prerm脚本以非零状态退出,dpkg仍然会删除旧文件,因此升级变成了删除,这不是我预期的结果。
发布于 2012-05-08 23:58:49
我对Cydia了解不多,但是如果它的工作方式和dpkg完全一样,那么这个问题应该是可以解决的。请参阅http://people.debian.org/~srivasta/MaintainerScripts.html#sec-3.4.3上的包升级活动图。
这显示了在运行prerms和preinsts的过程中可以采取的一些不同的路径,这些路径会将系统带回干净的、旧版本仍然安装的状态。例如,如果new-preinst失败,那么new-postrm将以"abort-upgrade“作为参数运行。如果成功,那么old-postinst也会使用"abort-upgrade“来运行。如果成功,您将返回到干净的已安装状态。
https://stackoverflow.com/questions/10119669
复制相似问题