搭建越狱软件源

前言

最近一直在折腾越狱,手机移除越狱了几次,发现重新安装插件的过程非常麻烦,所以想搭建一个自己的软件源,里面的插件都是我需要,这样更加省事。

准备

使用 GitHub Pages 来搭建,创建好(用户名).github.io 的项目

环境:

  • iPhone OS(已越狱):自带dpkg-deb命令,无dpkg-scanpackages命令

    威锋的教程,安装好下面的插件就没问题了

    dpkg、dpkg-dev、dpkg-repack、libdpkq-dev、libdpkg-perl

  • Debian/Ubuntu:自带dpkg-deb和dpkg-scanpackages命令

  • Mac OS X:brew install dpkg

  • Windows:非unix系统,无dpkg相关命令,可以安装虚拟机

插件来源:

  1. Telegram、QQ等社交软件

  2. 赵楠的插件Give me deb会把我们在插件商店下载的插件保存deb在

    /var/mobile/Downloads/dpkg_triggered

  3. PostBox 应用内 .deb 下载和提取,需巨魔安装

开始操作

创建 Release 文件,基本格式如下:

1
2
3
4
5
6
7
8
Origin: 软件源名称,可以使用中文(Cydia的软件源列表中显示的标题)
Label: 同上,也可以使用中文
Suite: 软件源的类型,比如正式源,测试源等,可以分别用stable, beta, unstable等来表示,一般填stable就行
Version: 版本号,这个其实不重要,随便填,一般都是写1.0
Codename: 代码代号,这个是随意的,只是一个标识,但它必须是英文
Architectures: 架构,iphoneos-arm iphoneos-arm64 iphoneos-arm64e,根据自己的需求可单个或者多个填写
Components: main
Description: 软件源介绍,可以使用中文和html代码

可选(可直接略过):

Support: 支持,没什么作用,除非特别需要,否则可以不要这个

MD5Sum: 不是必须的,但如果Packages文件位置丌不Release文件在同一目录下,则必须有此项。另外,如果需要签名Release文件,也必须有这个

打包插件

文件的基本目录

1
2
3
4
5
6
- Cydia
|- CydiaIcon.png 源图标
|- Release 描述源信息
|- debs 插件
|- xx.deb
|- xxx.deb

使用 Terminal 打开所在文件夹

将位于debs目录的所有deb包扫描并生成Packages

1
2
3
4
dpkg-scanpackages debs /dev/null > Packages

同一插件多个版本请使用
dpkg-scanpackages -m debs/ > Packages

可选:生成客户端可能需要的gz和bz2压缩的Packages

1
2
gzip -c Packages > Packages.gz
bzip2 -k Packages

为什么需要压缩文件?

Cydia添加源时大致行为如下:

1
2
3
4
5
6
7
8
发送HEAD请求,检测/Packages.xz是否存在
发送HEAD请求,检测/Packages.gz是否存在
发送HEAD请求,检测/Packages.bz2是否存在
发送HEAD请求,检测/Packages.lzma是否存在
发送HEAD请求,检测/Packages是否存在
如果上述请求成功,则GET请求对应Packages(注1),从Pacakges获取软件列表并缓存
如果上述请求均不成功,则显示失败,源内空空如也
安装软件时,从Pacakges中提取软件的下载地址下载

从过程可以看出 Cydia 优先读取压缩格式的 Packages,某些源的软件比较多时,Packages 文件本身会达到十几到几十MB,因此支持压缩文件传输是很必要的

上传到 GitHub 项目中

可以使用 git ,不会的就手动上传吧

后期维护

后面有新插件时,可以在 debs 文件夹里面,只放自己要新添加的插件,然后生成 Packages ,把信息手动添加到 GitHub项目的文件中,这样就不会改掉我们自定义的插件描述了

修改插件版本

用途:想使用老版本的插件,但是不想让 插件管理器的“更新”页面一直显示有更新,Sileo 没有屏蔽更新的选项,Saily 倒是有屏蔽更新的功能,有些垃圾源倒是会通过修改版本号,来让用户安装自己源的插件

Packages 实质上是deb文件的 control 信息集合,另外多了deb文件本身的信息。(control文件是记录软件包的信息,但没有deb文件本身)

所以我们只需要把插件 control 对应的版本信息给修改了,这样就可以实现修改版本号了。

步骤:

使用Filza 解压自己想修改的插件,在 DEBIAN 文件夹里面找到 control 文件,使用文本编辑器打开,修改 Package 后面的值,避免与源作者冲突导致,改了 Package,Version的值改不改都行,记得在 Description(描述)中注明有修改,然后长按解压出来的主文件夹,点击“打包deb”,就成功了

Description 可以在生成的 Packages 中修改,Package、Version,必须解压修改

End

附上我的源

1
tuneu.github.io

参考文章

  1. https://idayer.com/how-to-host-a-cydia-repository/
  2. https://www.bilibili.com/read/cv10439805/
  3. https://www.feng.com/post/13849351
  4. https://blog.bombox.org/2019-10-10/make-cydia-source/
  5. https://www.saurik.com/packaging.html
  6. https://www.0xaa55.com/thread-26544-1-1.html
  7. https://www.youtube.com/watch?v=9eHKvCqBDBQ