有些果迷不小心删除了cydia要如何解决呢,Cydia并不像一般的软件一样可以随意安装哦,下面潇潇就来教你如何恢复删除的Cydia吧。
如何恢复Cydia的关键点:是否有afc2服务,能否看到root根目录!
删除Cydia后往往会出现两类情况,如下:
【情况一:删除Cydia之后,它所在的环境还在】
解决方案:将丢失的依赖包和语言包(依赖包和语言包在本帖最下面可下载)放至路径:/var/root/Media/Cydia/AutoInstall,然后重启手机。
【情况二:卸载Cydia的同时也卸载了Cydia所在的环境】
解决方案:修复Cydia环境,简单的说就是root目录有无dkpg。没有afc2服务,则看不到越狱系统。看不到越狱系统,那只能选择刷机了。
以下为原理:
设备没有安装OPENSSH导致无法修改文件权限导致deb文件放入后无法运行和安装,使用Cydia的Autoinstall的方式=Cydia内直接安装deb,因为apt的环境问题导致无法安装的情况,想通过iFile来修改文件的权限却也没有安装iFile,所以几条路都被堵死,只能选择别的方法!
Cydia安装后,在 /Library/LaunchDaemons 内放置了一个开机调用脚本的plist文件:com.saurik.Cydia.Startup.plist,控制了系统在启动时会运行/bin下的 bash 执行程序和 /usr/libexec/cydia 下的 startup (这个startup实际上是一个赋予了可执行权限的 shell 脚本文件)
如下:
#!/bin/bash
export PATH=$PATH:/usr/sbin:/usr/bin:/sbin:/bin
if [[ ! -e /var/lib/cydia/firmware.ver ]]; then
cache=
fi
/usr/libexec/cydia/firmware.sh
debs=(/var/root/Media/Cydia/AutoInstall/*.deb)
if [[ ${#debs[@]} -ne 0 && -f ${debs[0]} ]]; then
dpkg -i "${debs[@]}" 2>/tmp/dpkg.log 1>&2
rm -f "${debs[@]}"
cache=
killall -9 Lowtide AppleTV
fi
if [[ ${cache+@} ]]; then
sbdidlaunch
su -c uicache mobile
fi
其中:
debs=(/var/root/Media/Cydia/AutoInstall/*.deb)
if [[ ${#debs[@]} -ne 0 && -f ${debs[0]} ]]; then
dpkg -i "${debs[@]}" 2>/tmp/dpkg.log 1>&2
rm -f "${debs[@]}"
这段就是指定了在开机时检查 /var/root/Media/Cydia/AutoInstall (就是cydia自动安装包)目录下是否有的包文件,如果有救执行 dpkg -i 的安装命令,而deb的安装则依赖于dpkg的环境。
这个问题主要是修复越狱预置的apt环境,那么就需要越狱程序在越狱时上传使用的 Cydia.tar 文件,需要用它将完整的文件解压恢复到iOS系统里面。
tar的文件需要解压的环境支持不要紧,因为基本的tar执行程序还在,那么我们就需要使用 shell 脚本来调用命令,但是这个shell脚本怎么去调用呢?其实可以利用/Library/LaunchDaemons 等开机启动文件夹的plist文件去调用。
但是如果是自己直接写的调用shell脚本在传入设备后会因为权限问题根本无法运行,怎么办?上面说过关于afc2add服务的权限继承特性!我们可以利用它!
怎么利用呢?其实很简单,上面我就提到过Cydia就会在启动时利用 /Library/LaunchDaemons 里面的 com.saurik.Cydia.Startup.plist 文件去调用 /usr/libexec/cydia 目录下的 startup 这个shell 脚本,我们可以直接将 startup 文件导出放到本地然后修改这个脚本,将需要的命令添加进去后重新导入覆盖原来的文件即可保持继承的权限从而达到可以执行的目的了!
1、Cydia.tar 压缩包(在源里面的 Cydia安装包仅是Cydia,不含完整的越狱环境目录结构),因为此压缩包为整个系统目录结构,那么在解压时一般就是接触的根目录,所以我将 Cydia.tar 使用助手工具将其导入放置到root根目录备用。
2、将 /usr/libexec/cydia 目录下的 startup 文件导出,在备份一个原始的文件后(不管干什么最好备份一个以防万一)使用适合的编辑器修改文件,在
#!/bin/bash
export PATH=$PATH:/usr/sbin:/usr/bin:/sbin:/bin
下面添加一行命令代码:
tar -xvf ./Cydia.tar
(这个就是最常用最简单的一个解压的终端命令)
原文件第一行是shell文件的类型注释,第二行代码是环境定义,所以必须添加到它们下面。
(关于修改使用的编辑器需要特别注意就是必须要保证编辑和保存后的文件格式编码不能变,否则乱码不能执行,建议使用UE或者winhex 等)
3、将修改好的 startup 文件导入原始位置,提示覆盖时选择“是”去覆盖来保持继承权限
4、重启设备
5、系统重启后会自动解压刚上传的 Cydia.tar 来重建结构,完成后apt环境即可修复,可以在Cydia里面直接安装插件了!
6、将备份的原始 startup 文件导入覆盖还原。
7、cydia就会再次出现了。
如果你们不知道自己是否卸载和删除 ,你们可以先进入 /var/root/Media/Cydia/AutoInstall 这个路径把语言包和依赖包丢进去,重启看是否有cydia出现,如果不会出现,肯定是你把cydia卸载了而不是删除。
累计评论0条
展开其余评论