Control文件编写及相关格式
DEBIAN目录下的control文件编写,格式及注意的地方
必须是UTF-8,Unix编码,Unix/Linux换行符(LF),不符合规范的control会导致Cydia无法打开。文件末尾需有一个空行。 1. Package: 软件包标识符。
类似于身份证,一个软件包必须要有一个唯一的标识符。通常是用com.xxx.abc这样的形式来命名。
-
Architecture: 架构。
用于标识运行的系统,iPhone上为iphoneos-arm。
- Version: 版本号。
不能用下划线和逗号和空格。格式有(以逗号分隔) 1.0,1.0f,0-1,1:1.0,其中1:1.0这种格式比较特殊,在Cydia中,1:1.0仍然会显示为1.0,但版本号实际是高于1.0的。
以上3项是必须的,缺了任何一项deb打包就不能成功。 以下均为可选项:
- Name: 软件包在Cydia中的显示名称。
中英文不限,也可以用空格,但不宜过长(长了显示不完全)。
- Author: 软件作者。
-
Maintainer: 维护者。
一般是软件源的拥有者。
-
Sponsor: 负责人。
可以是个人也可以是网站。
-
Author,Maintainer,Sponsor 的格式相同。均为“名称+空格+<邮件地址或网址>”。
经测试,如果名称为中文的话,即使写了邮件地址和网址,在Cydia中点击也不会跳转。如果没有邮件地址或网址,则不需要“<>”及“<>”中的内容。中文名或未提供邮件/网址,无“>”符号 。
- Icon: 指定软件包的图标显示。
当无Icon设定时,Cydia会显示该软件包所在的分类的图标。
格式:在线地址,如http://www.abc.com/abc.png
本地地址:file://+路径,如file:///Applications/Cydia.app/Sources/app.weiphone.com.png
注:在软件页面(非列表页面),自定义的图标是不会显示的,显示的是分类图标。
- Section: 软件分类。
中英文无限制,排列顺序是 英文->中文。
另外,如果在分类加上“[ ]”,比如 [工具],那么这个是排在最前面的。
-
Installed-Size: 解包后的文件大小。
可以有小数位,以kb为单位,不需要注明kb,这个不需要很精确,而且小数位在Cydia里显示不出来(不是四舍五入,全部舍了)。至于文件大小是否包含DEBIAN目录中的内容就随意了。
- Priority: 优先级。可填
Required,
依次为
Important,
Standard,
Optional,
Extra。必须,
虽然没有什么实际作用,但优先级为Required和Important的软件包在卸载时会有警告,这样可以避免删除一些系统必须的软件。但Required和Important不要滥用,一般用Standard,Optional或Extra即可。优先级在Cydia中是不会显示的
重要,
一般,
可选,
次要。
- Essential: 是否必须软件包,可填 yes 和 no, 填yes则为必须软件包,卸载时Cydia会有警告。卸载Essential标记为yes的软件包可能会导致系统问题。当然此功能需慎用,不要因为不希望用户删除自己的软件而加入Essential: yes。如果没有Essential这项的话默认就是非必须的,相当于Essential: no。
- Depends: Depends 字段应该包含您的软件包正常工作绝对必需的任何软件包的名称。
- Pre-Depends: "Pre-Depends"是为特例而保留的。当某个软件包被作为"Pre-Depends"列出时,它强制系统在试图安装您的软件包之前完全安装所指定的软件包。
- Conflicts: 冲突软件包。比如软件包A和B有冲突,不能同时安装。比如说A和B冲突,当系统已经安装了A的时候尝试安装B,则不能继续。
- Provides: 提供的软件包,比如说软件包A包含B的全部功能,那么则是A provides B,因此可以在安装了A的前提下不安装B。但此功能在非Cydia的软件管理工具中可能会无法识别(实际是这些软件不合deb标准)
- Replaces: 替换软件包,安装A会替换B。
以上5项的格式相同,直接填软件包的Package标识即可,如果需要加入版本号,则为 软件表标识+空格+(判断符号 版本号)。 比如 Depends: apt-key, firmware (>=3.0), 这表示依赖于apt-key,不限版本,firmware,且版本大于或等于3.0。
判断符号:
远远低于(<<)、
低于(<)、
低于或等于(<=)、
仅等于(=)、
等于或高于(>=)、
大于(>)、
以及远远高于(>>)。
表示多个软件包,以英文逗号分隔。表示“或”关系,用 | 分隔。比如软件包C依赖于A或B,可写Depends: A | B。 但“或”关系要慎用。原因是,当不存在“或”关系的时候,假设B依赖于A,且系统并未安装A,那么在Cydia中安装B的时候会自动下载安装A。而假如说C依赖于A或B,且A与B都未安装,那么在安装C的时候就会失败,因为系统无法判断是应该下载A还是B。除非系统已经安装了A或B,否则C不能安装。一个特殊的依赖:firmware。这个Package记录了固件版本,在对固件版本有要求的软件包上特别重要。假设B依赖于A,那么在卸载A的时候也会一起卸载B.
- Description: 软件描述,不能在control里直接换行,如果需要实现换行显示,可以使用
代码。当指定了Depiction时,在软件查看页面不会显示Description。
- Depiction: 功能类似于软件描述,链接到一个网页,以网页的内容代替软件描述。只在软件查看页面显示,在软件包列表页面不显示。 可以使用本地网页,格式同Icon。 注意:此功能可能会消耗大量网络流量。
- Homepage: 链接到页面,Cydia中显示为More Information。 页面不会主动加载。
- Tag: 标签,用于分类软件包信息。 purpose:: 软件包类型,比如软件源,命令行,库等等。purpose::console表示该软件为命令行界面。可选项有
commercial,
对应图标文件在 /Applications/Cydia.app/Purposes 目录下。也可以自行添加 purpose 分类,并加入同名图标即可。
console,
daemon,
extension,
library,
uikit,
x,
- role:: 软件包使用者归类。
developer开发者,
该标签用于Cydia中软件包显示过滤。 cydia::commercial Cydia Store软件。
hacker骇客,
enduser普通用户。