从零开始搭建Cydia软件源+制作deb安装包(转自威锋) cydia离线deb安装包

Cydia中的软件源地址保存在 /etc/apt/sources.list.d/目录下,分为两种:
1.以软件包形式安装的软件源,如Cydia默认的软件源,Modmyi、BigBoss等,该类软件源是以独立的.list文件记录软件源地址。
2. 由用户在Cydia里输入地址添加的软件源,该类软件源全部保存在cydia.list中。

以上两种形式的软件源本质没有差别,但只软件源的文件存放位置上是有不同的。
以Saurik自己的软件源为例。打开 saurik.list文件, 可以看到有以下内容(以#开头的行属于注释,没有实际用途)
引用debhttp://apt.saurik.com/tangelo-3.7main


那么,软件源的 Release 文件的地址是http://apt.saurik.com/dists/tangelo-3.7/Release
Cydia就是通过或许Release文件进而检测软件源的存在,然后再下载记录软件包相关信息的 Packages文件。

而对于在Cydia中输入软件源地址进行添加的这种源,方法有些不同。因为默认情况下,输入地址以后,Cydia会认为Release文件存放于输入的地址所在的目录下。在list文件中的记录信息为:
引用debhttp://www.xxx.com./

并不会继续往子目录里检测Release文件。

因此,搭建Cydia软件源首先需要配置服务器上相关目录和文件的存放位置。

取决于软件源的添加方式,文件/目录的路径设置可以分为以下两种情况:

1.只公布软件源的地址,让用户手动输入地址来添加。这种方式的文件/目录设置最为简单。
以威锋源为例,威锋源的地址为http://app.weiphone.com/cydia
那么在郁闷app.weiphone.com下,存在目录cydia。目录cydia即使软件源所在的目录。
将文件Release放置在cydia目录下即完成了软件源的搭建。
要注意,搭建软件源,必须保证至少有Release和Packages两个文件。

2. 以软件包的形式安装,即直接在 /etc/apt/source.list.d/目录以文件的形式添加,那么这个就没有什么固定的位置了。
基本上仿照Saurik和BigBoss的list文件的格式即可。
list文件格式:
复制代码
  1. # do not edit this file to add your own custom sources
  2. # this file is subject to be upgraded as part of a package
  3. # either add your own .list file to /etc/apt/sources.list.d
  4. # or add your entry to the global /etc/apt/sources.list file
  5. deb 软件源地址 项目名 类型

文件名任意

其中,Release文件应放置于 软件源地址/项目名/这个目录下,Packages文件放置位置由Release文件来决定(详情见后文)。

之前提到过,搭建软件源必须要有Release和Packages两个文件。前者的作用是记录软件源本身的相关信息,而后者的作用则是记录具体软件包的存放位置和安装信息等数据。

以下是Release文件的格式:
引用Origin:BigBoss
Label:BigBoss
Suite:stable
Version:1.0
Codename:BigBoss
Support:http://cydia.saurik.com/support/*
Architectures:darwin-armiphoneos-arm
Components:main
Description:Apps& Themes! We host your apps. Emailme.
MD5Sum:
be8806290d5904cdf45b542706f6a3ad 165020main/binary-darwin-arm/Packages
03026ac993187b0eecae50466f64fb3c35049main/binary-darwin-arm/Packages.gz
93091f5ca485e066d5fc32ca1327830c3031061main/binary-iphoneos-arm/Packages
d7aec18dee5b627339b77a9d91e3f92f368222 main/binary-iphoneos-arm/Packages.bz2

其中红字部分是必填内容,紫色部分是可选内容。

每项的作用:
引用
必须
Origin:软件源名称,可以使用中文(Cydia的软件源列表中显示的标题)
Label:同上,也可以使用中文
Suite:软件源的类型,比如正式源,测试源等,可以分别用stable, beta, unstable等来表示,一般填stable就可以了
Version:版本号,这个其实不重要,随便填,一般都是写1.0
从零开始搭建Cydia软件源+制作deb安装包(转自威锋) cydia离线deb安装包
Codename:代码代号,比如BigBoss的就写BigBoss,威锋的就写WeiPhone,也没什么限制,只能用英文
Architectures:结构。iPhone平台统一写iphoneos-arm
Components:main
Description:软件介绍,可以使用中文和html代码,具体能使用哪些代码在下面会介绍。
可选
Support:支持,没什么作用,除非特别需要,否则可以不要这个。
MD5Sum:不是必须的,但如果Packages文件位置不与Release文件在同一目录下,则必须有此项。另外,如果需要签名Release文件,也必须有这个。关于MD5Sum的格式,在下文也会介绍。


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

代码:Description:WeiPhone-威锋网为您提供iPhone所需软件/补丁。<br><br>联系我们:<strong>weip.com@gmail.com</strong>
实际显示效果如下:

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
http://apt.bigboss.us.com/repofiles/cydia/dists/stable/Release




以下是生成Packages文件的方法:
Packages文件格式
复制代码
  1. Package: 3proxy
  2. Version: 0.5.3k-2
  3. Architecture: iphoneos-arm
  4. Maintainer: Jay Freeman (saurik) <>
  5. Installed-Size: 1208
  6. Filename: debs/3proxy_0.5.3k-2_iphoneos-arm.deb
  7. Size: 416318
  8. MD5sum: f84cb6764a9df30ab326c17f51de15fd
  9. Section: Networking
  10. Priority: optional
  11. Homepage: http://3proxy.ru/download/
  12. Description: tiny free proxy server
  13. Name: 3proxy
  14. Depiction: http://cydia.saurik.com/info/3proxy/
  15. Tag: purpose::daemon, role::hacker


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

多出的deb文件信息为:
要保证Cydia能正确获取deb的相关数据,除了以上3个deb文件信息以为,还必须保证至少有以下两项:


这里重点关注的是Filename。Filename项决定了在服务器上deb文件的存放位置。如果没有上级目录,即deb文件和Packages文件处于同一目录,那么只需要一个单独的文件名就可以了,不需要加上目录名,即xxxx.deb。但这样在软件数量多的时候会导致管理上的混乱。
假设deb文件存放在debs目录下,那么Filename就应该是 debs/xxx.deb这样的格式。


其余项会在二楼deb制作教程中介绍。


一个软件包的全部信息在Packages文件中是以连续的一段存在,每一行是不同的信息。不同软件之间以空行做分隔。

如何生成Packages文件

方法一:
引用
环境:任何支持dpkg命令的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. 将需要发布的deb文件放在一个目录,比如说debs下

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

  3. 执行命令复制代码
    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 Packagesfile.

注意:Debian/Ubuntu系统下的dpkg-scanpackages命令不会输出Name,Author,Sponsor,Depiction等信息不会自动添加进去,所以需要手动加入这些数据。MacOS 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文件,为了简化操作,我自己写了一个脚本,具有以下功能:


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的地址
    另外,因为iPhoneOS本身没有wget这个命令,可以去Cydia安装一个wget。使用此命令需要联网,否则请事先准备好Packages文件。

  2. 第132,136,140这三行,将Packages,Packages.bz2和Packages.gz根据需要自己修改(如果需要指定这几个文件的存放位置)

  3. 第151-158行,引号内的内容根据需要自己来修改(此部分用于生成Release文件)

  4. 第166行,引号内的内容修改为自己的私匙的用户名和密码

  5. Ubuntu 用户请注意:Ubuntu下的 GPG默认开启了use-agent功能,所以在签名Release的时候会弹出一个提示框,而这个提示框根本就没用,所以要禁用。

  6. 禁用方法:打开 ~/.gnupg/gpg.conf(~表示当前用户)或者直接用命令复制代码
    1. gedit ~/.gnupg/gpg.conf
    搜索 use-agent,将其注释掉(即修改为 #use-agent)



使用方法:
  1. 将scandebs文件放置在任意位置

  2. 准备debs文件夹,需在scandebs同级目录下

  3. 将要更新的deb文件放置在debs目录下

  4. 【可选】将Packages文件放置在scandebs同级目录下(如果需要修改Packages文件中的已有数据)

  5. 以命令sh scandebs + 参数 来执行脚本;或 将文件属性设为0755,命令 chmod 0755scandebs,之后可以直接使用命令 ./scandebs + 参数

  6. 【可选】如果提示要你输入签名Release文件的密码,输入之

  7. 得到Packages,Packages.bz2,Packages.gz,Release和Release.gpg【可选】这5或4个文件



显示帮助复制代码
  1. ./scandebs -h
  2. ./scandebs --help


显示版本号复制代码
  1. ./scandebs -v
  2. ./scandebs --version


不签名Release(无参数)复制代码
  1. ./scandebs


使用签名Release功能复制代码
  1. ./scandebs -s
  2. ./scandebs --sign



手动修改Packages注意事项
引用
前面说过,Packages文件可以手动编辑,有时候仅仅需要更改一些字段的内容,如果因为这个要重新打包deb,不一定合算,因此手动编辑Packages可以省下一些工作量。以下是一些注意事项:





签名Release的方法
引用
  1. 获取用于签名的GPG密匙(方法见下文)
  2. 运行命令复制代码
    1. gpg -abs -r "HuangRui" -o Release.gpg Release

    其中引号内的字符串为用于签名的密匙的用户名(用于区分不同的签名密匙)
  3. 输入密码
  4. 完成




为什么要签名Release
虽然不签名Release文件也没什么大的问题,但是签名Release有以下几个用途:



【可选】deb文件规范命名
引用
命令复制代码
  1. dpkg-name abc_1.0.deb


如果想指定文件名格式,可以使用复制代码
  1. dpkg-name --help

来查看命令的使用帮助图形界面的deb制作工具 DebianPackage Maker

网址:http://code.google.com/p/debianpackagemaker/

个人感觉不如直接在命令行里来的直观,有兴趣的朋友可以自己试试。

  

爱华网本文地址 » http://www.413yy.cn/a/25101013/150462.html

更多阅读

打造淘宝平民爆款实验室从零开始 诚信通爆款实验室

你有没有过这样的经历,关注了的微博明明是美食或者旅游专题,却拼命的转发服装的微博,哪个哪个衣服特漂亮啊,质量特好啊,特有明星风范啊……你有没有过这样的经历,刷着刷着微博,逛着逛着论坛,就莫名其妙的买了件衣服,明明没在计划内,当然爆款

从零开始学化妆超详细化妆入门教程 从零开始做运营入门篇

从零开始学化妆超详细化妆入门教程——简介从零开始学化妆超详细化妆入门教程,零基础学化妆,如果你还不会化妆,那你就Out了。化妆并不是取悦别人的工具,而是美化自己的法宝。接下来上海荟艺化妆学校就来为大家分享超详细化妆入门课程

声明:《从零开始搭建Cydia软件源+制作deb安装包(转自威锋) cydia离线deb安装包》为网友心素如简分享!如侵犯到您的合法权益请联系我们删除