【图解】如何解决 /var/lib/dpkg/status 错误

错误及成因

9.3.3 的越狱机制改变解决了一些此前的越狱禁区,比如在此前抹掉所有内容和设置是不可点的,会导致设备永久性卡在启动动画,而现在即便点了也不会出现这样的问题。有的人可能会觉得这是个平级恢复的好办法,但实际上如果你点了抹掉所有内容和设置再重新越狱,会发现 Cydia 会持续报错:

Could not open file /var/lib/dpkg/status - open (2: No such file or directory)
The package lists or status file could not be parsed or opened

出现这样的错误是因为抹掉所有内容和设置也会清除 Cydia 的文件路径,但盘古越狱工具在重新越狱时很明显没有将这些路径安装回来,导致出现了这一情况。

这个情况非常棘手,因为当你在 Cydia 看到这个错误,就代表着你不能搜索插件,而且当你想手动添加路径,你也会发现因为没装 Apple File Conduit 2 所以无法在 PC 端用文件管理软件打开 Root 路径。好像除了升级别无他法,但现在升级却又会丧失越狱,陷入很尴尬的情况。

好在,Reddit 有篇帖子详述了整个问题的解决办法。

问题解决

这个解决办法的原理是:通过 Cydia Impactor 在设备中安装(sideload)终端(MobileTerminal),然后在 iOS 端通过终端执行命令,将应有的目录添加到设备中。

准备工作:

在 PC 上下载这几样东西:

第一步:将 lib 文件夹拖到 /var/mobile/Media/Books 这个文件夹中

第二步:用 iOS App Signer 将 MobileTerminal 的 deb 文件转化为 ipa 文件

第三步:用 Cydia Impactor 把 ipa 文件装到设备里(需要输入 Apple ID 账户密码,建议临时注册一个)

第四步:在 iOS 上打开终端输入命令:

  • 输入:su
  • 然后会要你输入密码,如果你之前没改过,默认的是:alpine
  • 安全起见这个密码事后是需要改的,教程见视频
  • 输入:cp -R /var/mobile/Media/Books/lib /var

这样就解决了 Cydia 刷新时出现 /var/lib/dpkg/status 的问题,如果你还出现了 missing var/log/apt 错误,还需要在终端里操作:

  • 输入:su
  • 输入:mkdir /var/log/apt

至此 Cydia 就能够正常运作了,如果不行你可以装 Cydia Eraser 这款插件来移除 Cydia 然后重新使用盘古工具来越狱。

能够解决这个问题以后,其实我倒觉得结果还不坏,这相当是一种平级恢复的过程,先清理所有内容,然后再把出错的部分剔掉,然后回归越狱状态。只不过过程麻烦了点。