一句话,就是教你怎么搭建自己的cydia源。

cydia源的文件结构包含:

  • Release
  • Release.gpg
  • Packages
  • Packages.bz2
  • Packages.gz
  • favicon.ico
  • CydiaIcon.png
  • debs (存放deb文件)

Release文件的格式

Origin: Cydia/Telesphoreo
Label: Cydia/Telesphoreo
Suite: stable
Version: 1.0r282
Codename: tangelo-3.7
Architectures: darwin-arm iphoneos-arm
Components: main
Description: Distribution of Unix Software for iOS
Support: https://cydia.saurik.com/api/support/*

必需

Origin: 软件源名称,可以使用中文(Cydia的软件源列表中显示的标题)

Label: 同上,也可以使用中文

Suite: 软件源的类型,比如正式源,测试源等,可以分别用stable, beta, unstable等来表示,一般填stable就可以了

Version: 版本号,这个其实丌重要,随便填,一般都是写1.0

Codename: 代码代号,比如BigBoss的就写BigBoss,威锋的就写WeiPhone,也没什么限制,叧能用英文

Architectures: 结构。iPhone平台统一写iphoneos-arm Components: main

Description: 软件介绍,可以使用中文和html代码,具体能使用哪些代码在下面会介绍。

可选

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

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


Description格式 显示在Cydia中每个软件页面最下方。 不能直接换行,如果要实现显示换行显示,可以使用
代码。 要加粗显示,可以使用代码 可以使用html代码设置字体颜色。 不能使用超链接代码。

MD5Sum格式 MD5Sum是用来记录Packages即相关文件的文件大小,存放路径和MD5值。

MD5Sum: 之后另起一行,开头要空一格(论坛里用quote或code代码之后都不显示开头的空格)

每行格式是: 空格+文件MD5值+空格+文件大小(以字节为单位)+文件路径 (全部没有+)

而文件路径的格式则有文件存放位置来决定。

如果是没有设置Release文件的路径,那么Release和Packages同在根目录,则路径为 Packages,直接就是文件名,没有其它路径。 如果在之前设置了Release文件的路径,如Saurik和BigBoss,那么Packages 的路径为 main/binary-iphoneos-arm/Packages,起始文件夹,即main,要不Release文件同在一个目录下。main和binary-iphoneos-arm要不Releases中的对应信息相匹配。

对亍Packages.gz和Packages.bz2,格式相同,也记得要另起一行。

因此,Packages文件的保存位置就是 软件源地址/dists/main/Codename(不Release文件中一致)/main/binary-iphoneos-arm下。

Release文件的示例可以参看以下几个地址:

http://app.weiphone.com/cydia/Release
http://apt.saurik.com/dists/tangelo-3.7/Release

生成Packages文件

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

环境:任何支持dpkg命令的unix系统

工具:dpkg及相关组件

  • iPhone OS(已越狱):自带dpkg-deb命令,无dpkg-scanpackages命令
  • Debian/Ubuntu:自带dpkg-deb和dpkg-scanpackages命令
  • Fedora: 无dpkg相关命令
  • Mac OS X:无任何dpkg相关命令
  • Windows:非unix系统,无dpkg相关命令

以上系统中,Fedora不支持dpkg,也无法通过安装系统组件来支持dpkg。还是推荐在Debian/Ubuntu系统下生成Packages。

1.将需要发布的deb文件放在目录debs下

2.命令行里进入到debs目录的上级目录

3.执行命令

dpkg-scanpackages debs > Packages
tar zcvf Packages.gz Packages
bzip2 -k Packages Packages.bz2

这样Packages就完成了,另外,上面的三行代码可以保存为脚本,比如pack.sh,以后每次生成的时候在终端里执行 sudo ./pack.sh 然后输入密码。

Release文件签名

为什么要签名Release?

虽然不签名也是可以的,但是签名有几个用途:

  1. 解决Cydia刷新出现的 Wrong language code zh-HansWrong language code zh-Hant文件
  2. 源内的数据均经过验证,确保安全

在Release文件填写之后,先生成一个密钥

在终端运行命令

gpg --gen-key

提示

Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection?

选 1 ,默认即可。

确认后

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)

输入1024~4096之间的一个数值,数据越大,加密强度越高,当然耗费的时间也越多。

默认即可。

Requested keysize is 2048 bits

Please specify how long the key should be valid.
0 = key does not expire
= key expires in n days
w = key expires in n weeks
m = key expires in n months
y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

密钥有效时间,选0,默认即可,在输入‘y’确认后,需要填写身份信息。

Real name:输入密钥所有者的名称,

Email address :邮件地址,

Comment:可以不填,可以填写一些区分信息。

用生成的密钥

在终端里输入

gpg -abs -r "你刚才的密钥名字" -o Release.gpg Release

引号中的字符串为用于签名的密钥的用户名(区别不同的签名密钥)

上传到空间

现有文件如下

将所有文件上传到根目录或者二级目录下,把文件的权限为0755。

资料: