0x01 目标
托管自己的 Cydia 源发布到 Github Pages
0x02 具体步骤
1. 打包
Theos 打 Release 包很简单,一条命令:
make package FINALPACKAGE=1
不过要注意里面 control
文件的填写,下面的步骤会用到这个文件的信息。
2. 安装测试
安装到越狱手机可以通过下面一些方式:
- 使用 Theos 的命令
make install
- 把 deb 包传到手机,用 Filza 安装
- 把 deb 包传到手机,用 dpkg 命令安装
测试没问题后可以继续下面的步骤了
3. 创建存储库
接下来就是把你本地多个 deb 包制作成一个仓库,可以让别人查看和安装。具体步骤如下:
3.1 apt-ftparchive 生成索引文件
apt-ftparchive packages ./debfiles/ > ./Packages;
命令的意思是把 debfiles 目录下的 deb 包文件的信息全部整合到一个叫做 Packages 的文件中。
要注意的是: apt-ftparchive
本来只有 Linux 版本的,后来网上有人共享了 macOS 的版本,所以后面说到的一键脚本也可以在 mac 上面直接运行。
dpkg-scanpackages 这个命令应该也没问题,具体我没有测试。
3.2 bzip2 压缩成 Packages.bz2 文件
bzip2 -c9k ./Packages > ./Packages.bz2;
命令的意思是把 Packages 文件压缩变成 Packages.bz2
3.3 制作 Release 文件 (Metadata, 可选)
printf "Origin: codwam's Repo\n ... > Release;
命令的意思是输出内容到 Release 文件中,具体可以看 update.sh
3.4 制作 all.packages 文件 (网页数据文件, 可选)
ls -t ./debfiles/ | ... > all.packages;
命令的意思是输出所有的 deb 包文件信息到到 all.packages 文件中,由首页 (index.html)
文件使用,具体可以看 update.sh
3.6 其他一些文件
其他的文件,比如:gpg … ,都是可选的,这里就不再说明了。
4. 发布到 Github Pages
这个基本上属于 Github Pages 的专属内容了,可以看看 GitHub Pages 搭建教程 或者网上其他的教程。
制作好了之后就可以打开自己的仓库看看了,比如我的:https://codwam.github.io/iosre/ 我用一个子目录来制作的,首页用来做博客。
可以添加的 Cydia 里面看看,是否有自己的 deb 包。如果有那就成功了。
0x04 一键脚本
4.1 脚本
脚本 在可以一键生成 Cydia 仓库所需要的文件,另外还生成了仓库介绍的网页需要的数据,可以直接打开链接看看。
在 mac 和 Linux 上面测试都没有问题,Windows 不支持。使用方法:
# clone 仓库
git clone git@github.com:codwam/codwam.github.io.git
# 然后执行脚本
cd codwam.github.io.git/iosre
chmod +x ./update.sh
./update.sh
4.2 脚本不能帮你做的
在执行脚本之前,需要做下面一些事情:
- 把 *.deb 包文件放到 debfiles 目录里面
- packageInfo 目录下面要对应有相关 bundleID 的文件描述,这里是用来显示详情的,iosre 网页上和 Cydia 的详情也是在这里取数据。每个 deb 包文件都必须包含 数据链接,相关的网页显示 网页链接。
(这个跟脚本无关的了,但是要记得更新,不然详情显示不出来)
4.3 最终的文件目录结构
执行 tree 命令
~/Development/GitHub/codwam.github.io/iosre git:(master) ±4 >> tree
.
├── CydiaIcon.png
├── Packages
├── Packages.bz2
├── README.md
├── Release
├── all.packages
├── apt-ftparchive
├── debfiles
│ ├── com.codwam.surgetweak_0.1_iphoneos-arm.deb
│ └── com.codwam.surgetweak_0.2_iphoneos-arm.deb
├── debimages
│ ├── surge-5.5.3-cracked.PNG
│ └── surge-5.5.3-hijacking.PNG
├── description.html
├── donate
│ ├── css
│ │ ├── asProgress.min.css
│ │ └── normalize.css
│ ├── index_.html
│ ├── index_progress.html
│ ├── js
│ │ └── jquery-asProgress.min.js
│ └── progress.now
├── files
│ ├── Addons (Flipswitch).png
│ ├── Addons.png
│ ├── DarkMode-Dark.png
│ ├── DarkMode-Light.png
│ ├── Development.png
│ ├── Multimedia.png
│ ├── Networking.png
│ ├── Themes.png
│ ├── Tweaks.png
│ ├── Utilities.png
│ ├── alipay.png
│ ├── back.png
│ ├── btc.png
│ ├── cydia7.png
│ ├── description.js
│ ├── github.png
│ ├── ios7.min.css
│ ├── ios7dark.css
│ ├── ipawind.png
│ ├── ltc.png
│ ├── main.css
│ ├── package.png
│ ├── patreon.png
│ ├── pp.png
│ ├── reddit.png
│ ├── saily.png
│ ├── sileo.png
│ ├── twitter.png
│ ├── wechatpay.png
│ └── zebra.png
├── index.html
├── packageInfo
│ └── com.codwam.surgetweak
├── update.bat
└── update.sh
8 directories, 52 files
文件按照使用类型,可以分为以下这些部分:
- 网页内容:index.html
(首页)
, description.html(详情页面)
… - Cydia App 使用:CydiaIcon.png
(Cydia App的软件源图标)
… - 脚本自动生成:Packages, Packages.bz2 …
- 软件:apt-ftparchive
- 脚本命令:update.bat
(windows)
, update.sh(macOS & Linux)
如果有兴趣,可以 fork 我的仓库 codwam.github.io,进去 iosre 的文件夹里面看看。
0x05 FAQ
5.1 同时安装多个相同包名的 deb 包
本地安装了调试的 surgetweak.deb 包,然后添加自己的 Cydia 源加进去之后发现没有找到 surgetweak 包。我一直在想是发布的哪个步骤出错了,一直检查都觉得没问题。
直到后面在 Cydia 里面搜索出来后,才发现安装相同包名的就不会重复出现在仓库列表了。
这个问题困扰了我一天。
5.2 repo.me
这也是个很不错的模板,可以直接使用
0x04 Thanks
How to Host a Cydia™ Repository