要保证Cydia能正确获取deb的相关数据,除了以上3个deb文件信息以为,还必须保证至少有以下两项:
? ?
Package(软件标识符,相当于身份证号码,用于识别唯一的软件) Version(软件版本号)
这里重点关注的是Filename。Filename项决定了在服务器上deb文件的存放位置。如果没有上级目录,即deb文件和Packages文件处于同一目录,那么只需要一个单独的文件名就可以了,不需要加上目录名,即xxxx.deb。但这样在软件数量多的时候会导致管理上的混乱。
假设deb文件存放在debs目录下,那么Filename就应该是 debs/xxx.deb 这样的格式。
其余项会在二楼deb制作教程中介绍。
一个软件包的全部信息在Packages文件中是以连续的一段存在,每一行是不同的信息。不同软件之间以空行做分隔。
如何生成Packages文件
方法一: 引用
环境:任何支持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,因此Fedora系统不能用于生成Packages文件。
而对于Mac OS X系统,本身虽然不支持dpkg,但可以通过安装一个叫 Fink 的软件来获得dpkg命令。
Fink 下载页面:http://www.finkproject.org/download/ 如何安装请见官网说明。
对于Windows系统,可以通过安装 Cygwin + dpkg 来获取dpkg命令。 Cygwin下载地址: http://www.cygwin.com/setup.exe dpkg命令可以直接在Cygwin中获取。
但个人不推荐在Windows下使用dpkg,因为Cygwin体积很大,与其安装这个,还不如直接安装个Ubuntu来的简单。
各个系统下生成Packages的方法基本一样。
最简单的方法是利用dpkg-scanpackages命令来制作Packages文件。
iPhone OS 不适用(因为没有这个命令)
1. 2. 3.
将需要发布的deb文件放在一个目录,比如说debs下 命令行里进入到debs目录的上级目录 执行命令 复制代码
1. dpkg-scanpackages debs > Packages
,其中debs为deb存放目录。运行该命令可能需要root权限,可以使用root帐户登录,login root 或 su root 或使用sudo 4. 如图所示
Packages存放于当前目录
如果指定的文件夹不存在,则提示 dpkg-scanpackages: error: Binary dir ebs not found 如果在指定的文件夹内没有deb文件,则提示 Wrote 0 entries to output Packages file.
注意:Debian/Ubuntu系统下的dpkg-scanpackages命令不会输出Name,Author,Sponsor,Depiction
等信息不会自动添加进去,所以需要手动加入这些数据。Mac OS X下无此问题。
以dpkg-scanpackages命令来生成Packages文件有一个很大的限制,就是必须保留全部要发布的和已经发布的deb文件,在deb数量多的情况下会浪费大量磁盘空间。
因此可以使用改进命令: 复制代码
1. dpkg-scanpackages debs >> Packages ,这样不会每次都重新生成Packages文件,而是将debs目录下的deb信息添加到已有的Packages文件末尾。在新增软件的时候没什么问题,但如果是软件更新,那么就会出现重复条目的问题,这时候需要手动删除旧的软件包信息。 方法二 引用
上面的方法里也提到过,可以直接编辑Packages文件,因此用文本编辑器将相关数据写入Packages也是可以的,只是这样工作量会比较大,但这种方法没有系统的限制,任何系统下,不管有没有dpkg相关命令都可以使用。格式也是一样的,每项之间只要把Packages放在第一个就可以了,其余项没有顺序要求。
由于绝大部分数据可以从control里直接复制,需要自己获取的就只有Filename,Size和MD5sum。
在Unix系统下,包括Mac OS X和Linux,以及iPhone OS,获取文件大小可以使用命令 ls -l ;获取MD5值可以使用命令 md5sum
另外,在Windows下要解包deb文件可以使用7-zip,control 文件位于 control.tar.gz 下
方法三 (2010/03/23更新scandebs脚本) 引用
生成Packages和Release文件只是最基础的步骤,实际还需要压缩Packages文件,有时候还需要签名Release文件,为了简化操作,我自己写了一个脚本,具有以下功能:
? ? ? ? ? ? ?
自动从服务器上获取 Packages 文件,不需要每次都事先准备 自动生成Release文件
自动生成Packages,Packages.bz2和Packages.gz 在生成Packages文件之后无需保留deb文件 保留control里的全部信息 不会出现重复条目 自动签名Release文件
http://app.weiphone.com/files/scandebs.tar.gz
更新记录 (8/11 v1.3):
1. 修正grep命令精确匹配问题
2. 若不存在debs目录或debs目录下无deb文件,退出 3. 现在可以在Linux和BSD(iPhone和Mac)系统下使用了 4. 其它优化
更新记录 (5/13 v1.2):
1. 针对mac系统下无md5sum命令的问题,用openssl md5 FILE来获取文件MD5值 2. 规范control文件格式(强制将Package项放在第一行)
3. 完全自动模式,无需用户在签名Release时输入密码(需自行修改一下脚本,方法见下文)
更新记录 (3/23 v1.1):
1. 修正了Release中Packages.gz项的拼写错误
2. 增加参数功能,可以显示帮助,版本号,自选是否签名Release 3. 每次生成Packages时会按Package标识排序
使用之前需要先修改下脚本(只需修改一次即可)【因为更新过,所以图片所示的行数已不匹配了,但是
内容基本还是一样的。】 1.
第46行,将wget后的地址改为自己源的Packages的地址
另外,因为iPhone OS本身没有wget这个命令,可以去Cydia安装一个wget。使用此命令需要联网,否则请事先准备好Packages文件。 2.
第132,136,140这三行,将Packages,Packages.bz2和Packages.gz根据需要自己修改(如果需要指定这几个文件的存放位置)
3.
第151-158行,引号内的内容根据需要自己来修改(此部分用于生成Release文件)
4.
第166行,引号内的内容修改为自己的私匙的用户名和密
码 5. 6.
Ubuntu 用户请注意:Ubuntu下的 GPG 默认开启了use-agent功能,所以在签名Release的时候会弹出一个提示框,而这个提示框根本就没用,所以要禁用。
禁用方法:打开 ~/.gnupg/gpg.conf (~表示当前用户)或者直接用命令
复制代码
1. gedit ~/.gnupg/gpg.conf
搜索 use-agent,将其注释掉(即修改为 #use-agent)
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库超详细制作deb(2)在线全文阅读。
相关推荐: