`
shappy1978
  • 浏览: 679007 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

DEB的安装及制作

阅读更多

DEB的安装及制作

图文详解DEB的安装及制作
iphone 2009-09-14 14:31:30 阅读463 评论1
字号:大中小
为什么要用deb?原因主要有以下几点: 
安装和卸载都还算方便; 
可以获得最大权限(相比IPA而言),能进行系统层面的操作; 
一些破解软件,尤其是涉及系统层面的,需要手动传文件改属性等,而deb安装可以一次搞定; 
deb安装的程序图标上不会出现叉叉。本帖包含以下内容: 
一、deb的安装: 
1. Cydia上下载安装 
2. 利用Cydia的AutoInstall安装 
3. 在iPhone/iPod Touch上用MobileTerminal安装 
4. 在电脑上以控制台(WinSCP自带)安装 

二、 deb的制作 
1. deb文件的下载 
2. 解包deb文件并提取安装控制信息 
3. 编辑、修改、集成、自定义安装信息(破解、汉化、美化等) 
4. 打包deb 
5. 将某些复杂的pxl(不是只有一个主程序)转换成deb 

三、问题及解答 
说明:本帖里的引用(quote)只是为了区别而设,并无实际引用。而代码(code)倒是真的可以直接复制 


以下是安装部分 
方法一: 在Cydia中直接下载安装 
引用
此条纯属废话


方法二: 利用Cydia自带的自动安装功能安装 
引用
随便用什么软件(WinSCP,iBrickr,91,TotalCommander等)将要安装的deb文件上传到/private/var/root/Media/Cydia/AutoInstall/目录下。默认情况下是没有Media目录的,因此要手动建立Media、Cydia和AutoInstall三个目录(大小写要匹配)。(都不需要设置属性。除WinSCP外,其余都不需要装有OpenSSH) 

上传完之后重启(不是Respring)iPhone,进Cydia就可以看到程序已经安装上去了。 

AutoInstall的好处是,不需要手动清理deb安装文件,也不需要输入命令代码。 
因为iBrickr,91,TotalCommander等软件连接iPhone不需要SSH协议,故可以用此方法来安装OpenSSH。 

问题:1.有时候这种方法安装不了,可能是因为要安装的程序需要先安装有另外一个程序,在没有安装的情况下,该安装就会失败。当然还有一个不能安装的问题,具体我也不清楚是怎么回事,目前也没解决办法。 
2.安装之后没图标怎么办?尝试用CacheDel清理缓存,或者用91修复图标,或者删除/private/var/mobile/Library/Caches目录下的com.apple.mobile.installation.plist,然后respring。 


方法三: 利用iPhone/iPod Touch上的软件MobileTerminal安装 
引用
先把要安装的deb传到iPhone任意一个目录下 

然后运行MobileTerminal 

输入 su 回车 

提示Password,接着输入alpine,回车 

用cd命令定位到deb所在文件夹,比如deb文件夹在var/mobile/Documents目录下,则输入cd var/mobile/Documents 

可以先用ls命令查看deb文件是否存在,命令就是ls加回车(此步非必须) 

输入dpkg -i XXX.deb 比如说要安装的是Openssh.deb,那么就输入dpkg -i Openssh.deb,大小写要完全匹配 

如果要安装的比较多,或是嫌输入文件名太麻烦,可以直接输入dpkg -i *.deb以安装该目录下的全部deb文件 

安装完成之后一般是出现Setting up XXXXX字样,出现该字样即表示安装结束,可以退出了 

Respring或者重启就OK了 

卸载deb, Cydia上直接卸载就不说了。命令行卸载的话,输入dpkg -r XXXX (具体操作见后面的图文教程) 

好处:命令行安装的deb不会出现AutoInstall那样安装失败的情况,除非deb包本身有问题。安装完后一般也不会出现没有图标的问题。
另外就是,在命令行里可以建立某些特殊的快捷方式,也可以直接在手机上更改文件属性等系统级操作。 

缺点:输入比较麻烦,需要安装有MobileTerminal软件。 
有WiFi的话直接在Cydia上就可以装,没有的话可以按第二种方法先安装MobileTerminal,再进行其它操作 


方法四: 用控制台安装 
引用
首先确保iPhone/iPod Touch上已安装有OpenSSH,且处于开启状态。 

打开WinSCP,连接上设备。(用WiFi或者数据线版都行) 

将要安装的deb文件传送到iPhone/Ipod Touch上,目录随意,传完之后不要更改目录。 

退出Cydia,MobileTerminal等程序(不是删除),否则无法用控制台安装 

打开命令行(控制台),输入dpkg -i XXXX.deb以安装单个程序,或者输入dpkg -i *.deb以安装当前目录下的全部deb文件。 

卸载deb, Cydia上直接卸载就不说了。命令行卸载的话,输入dpkg -r XXXX (具体操作见后面的图文教程) 

优点:操作方便,只要拖过去然后一个dpkg -i *.deb就可以搞定大量deb的安装。 
缺点:必须要用WinSCP,手机上也必须安装有OpenSSH 

总体上来说,个人认为这种方法是最简单,最高效的,因为全部要输入的命令也就只有dpkg -i一句。 


下面是如何在刚破解完的手机上离线安装OpenSSH和MobileTerminal,以及如何使用MobileTerminal和控制台以命令行安装deb。 
引用

1. 先下载iBrickr,解压缩之后运行ibrickr.exe (记得先插上数据线) 
下载 iBrickr 0.91 ibrickr_v0.91.rar (4709 K) 下载次数:338 


2.点击Files以上传文件 


3.在右边的逐次点击文件夹以进入/private/var/root/ 
注意,不能直接点var。因为根目录的var实际上是一个快捷方式,在ibrickr中会被当作文件 


4. 进入到root目录,应该只有Library一个目录(截图里的.bash_history我不知道哪来的) 


5. 创建需要的文件夹。点Create folder以创建,可以依次创建Media、Cydia和AutoInstall三个文件夹,也可以一次性输入Media/Cydia/AutoInstall以创建3个目录 


6. 选中要上传的deb文件,可以只选一个,也可以拖到选择或者用Shift或Ctrl进行多选 
MobileTerminal.deb (279 K) 下载次数:112  ssl.deb (2786 K) 下载次数:80  ssh.deb (778 K) 下载次数:91 


7. 文件上传中,不要关闭程序,也不要断开连接 


8. 上传成功 


9. 重启设备,重启之后就可以看到程序已经安装完毕了。没有图标的请参照上面说的来修正 

下面是在手机上用MobileTerminal来安装deb 
引用

1. 将要安装的deb传到手机里,此处以var/mobile/Documents为例 
2. 打开MobileTerminal,输入su,会提示你密码,继续输入alpine(密码不会显示的) 
成功以后会显示localhost: /var/mobile root# (MobileTerminal默认的打开目录就是mobile) 




3. (非必要)可以输入ls命令以查看文件夹下有什么内容。在DOS中相同的命令就是dir 


4. 进入Documents。 输入cd Documents,可以看到路径已经是Documents了。图省事的话可以直接将文件传到mobile目录下,则此步可跳过 


5. (非必要)继续用ls命令查看deb是否已正确传输 


6. 单独安装一个deb。以安装clippy为例(安装直接最好把文件名改短一点,免得输入起来麻烦) 
输入 dpkg -i clippy.deb 


7. 批量安装。输入 dpkg -i *.deb 

8. 安装结束,出现Setting up XXX字样 


9. 重启或Respring iPhone,桌面即可看到程序图标(没有图标的除外,像SBSettings等,安装成功没有可以进Cydia里查看) 

10. 卸载安装过的deb。 命令行中输入dpkg -r 程序名。安装的时候Setting up XXXX这个就是程序名。 
例如mobilelog安装的时候是Setting up com.xsellize.mobilelog (2.2)...,那么卸载的时候就应该输入 dpkg -r com.xsellize.mobilelog 


11. 记得清理deb安装文件。命令行安装不会自动删除已安装的deb,AutoInstall才会自动删除。 

最后是用控制台安装
引用

1. 连接上设备之后,将要安装的deb用WinSCP传到设备上 
下载:WinSCP无WiFi绿色版  WinSCP.rar (2645 K) 下载次数:200 


2. 打开命令行(控制台),也可以按Ctrl + T 快捷键 


3. 命令行已连接(控制台) 


4. 输入dpkg -i XXXX.deb 或dpkg -i *.deb以安装,出现Setting up XXXX字样即表示安装结束(Setting up后的文字还有用,可以记下来) 


5. 控制台会自动记录每一次输入的命令以方便下次调用 


6. 输入dpkg -r XXXX以卸载,这里XXXX就是之前安装时Setting up后出现的mobileterminal 


安装部分完 

以下是制作deb部分 

提示:deb下载部分和程序文件修改可以在Windows下或者Linux下完成,但deb的解包和打包则必须在Linux系统下完成。 
不是所有的Linux系统都支持对deb的编辑,只有安装了dpkg的系统才可以编辑修改deb文件。DEBIAN和Ubuntu是可以的,Fedora因为默认没有dpkg,所以无法修改(应该可以安装dpkg)。 
理论上来说在iPhone上可以用MobileTerminal制作deb,但我一直没成功过,在打包的时候就会出错。用控制台都不行,会直接导致连接断开。 

制作deb我是在Ubuntu下完成的。 

首先是要获取制作deb的素材,如果是修改已有的deb,那么需要先下载到deb文件。 
Cydia上的deb下载有人发过,这里我再赘述一下,如果是直接从文件新建立deb,如CacheDel,可以略过下载部分和解包部分。 

获取deb的url地址: Cydia上的软件可以去http://www.modmyi.com/cydia/搜索,软件简介里的的File Name 即使deb的文件名。前面加上源的地址就OK了。 

此处以制作iBluetooth汉化破解版为例。 

搜索iBluetooth的文件名,发现是.//deb/com.medevil.ibluetooth_1.0_iphoneos-arm.deb 


而iBluetooth是在iSpazio这个源里面,源地址在Cydia中可以直接看到,是http://www.ispaziorepo.com/cydia/apt/ 
那么iBluetooth的绝对下载路径就是http://www.ispaziorepo.com/cydia ... .0_iphoneos-arm.deb 

对于Modmyi上查不到的源,可以打开/var/lib/apt/lists/下打开._Packages来查看文件名,下载方式仍是源地址+文件名。 

得到需要的deb之后,下一步就是解包了。 

引用

1. 准备好要制作的deb的文件,这里我在桌面上建立了个文件夹deb,子文件夹temp,将原始deb文件放在deb文件夹下(一次只能放一个,否则解包或者之后的打包过程会出问题)。 


2. 启动Terminal(命令行/终端) 


3. 进入原始deb所在的文件夹,命令 cd。此处是 cd Desktop/deb/(注意大小写) 


4. 输入 dpkg-deb -x ./*.deb ./temp 以解包主程序文件 


temp下出现文件夹Applications 


5. 输入 dpkg-deb -e ./*.deb ./temp/DEBIAN 以解包安装控制脚本 

解包完后多出个DEBIAN目录,里面至少有一个control文件,有的还会有postinst,都没有后缀名 


6. 以上两步解包要是没问题的话Terminal里是没有显示的,否则会报错。 

下面是编辑修改(集成破解补丁,汉化包等) 
引用

1. 解包完后,或者是新创建的app,在文件夹中放好之后,将要替换或增加的文件复制到对应目录下。 
一般汉化文件XXX.strings,有的是连带文件夹zh_CN.lproj,一起复制进temp/Applications/XXXX.app/目录下 
其他需要替换的XXXX.app目录下的文件也是一样操作 
如果有些文件不是在XXXX.app目录下,比如说,有的文件是要放在/Library/MobileSubstrate/DynamicLibraries/下,那么就在temp目录下依次新建以上文件夹,并把要用的文件复制进去。(注意大小写要完全一致) 
放在其它文件夹下也是类似,但要注意,像WinterBoard的主题文件是放在/var/stash/Themes.XXXXXX/文件夹下的,在制作的时候就只用建/var/stash/Themes/,不要后面那一串乱码 

2. 单独编辑文件(主要是语言包)。我测试的结果是,plist文件在Ubuntu下可以直接用gedit文本编辑器打开修改,而strings文件则无法打开,只能在Windows下用Pedit打开。图片文件有的(有预览的)可以直接修改,有的(无预览的)需要在Windows下用 windowsfixpng转换之后才能修改。 
要注意的是,在Ubuntu(其它Linux下是否一样我不知道)下编辑文件,会自动将旧文件保存为XXXX.XXX~文件,且是隐藏属性。按Ctrl + H 以显示隐藏文件,如图 

记得删掉多余的文件 

3. 修改属性。 有些文件或文件夹要求有664,775等属性,而DEBIAN文件夹(安装控制脚本)则必须要755属性,有两种修改方式。 
一是在Terminal里用chmod命令修改,另一个则是以图形界面设置属性。 

iBluetooth的破解补丁替换原文件以后要设属性为7777,那么可以在Terminal里输入 chmod -R 7777 ./temp/Applications/iBluetooth.app/iBluetooth_ 成功的话没有提示,否则会报错 


或直接在该文件/文件夹上右键-属性-权限,将三个访问全部设为读写(7),并勾选 执行(第一个7,不勾选就是0),这样就等于将属性设为7777了。 
每一位上的数字具体对应什么我还没弄清楚,希望有人能告诉我,谢谢! 


chmod -R 755 ./temp/* 是将temp目录下的所有文件夹和文件属性设为755,当然也可以写0755,完全等效。 如果仅仅只是修改一个文件夹属性,则输入 chmod -R 755 ./temp/Applications诸如此类。 
当然也可以单独设定某个文件的属性,写明绝对地址就可以了。 

最重要的是,要将DEBIAN文件夹设为755属性,命令是chmod -R 755 ./temp/DEBIAN/* 和 chmod -R 755 ./temp/DEBIAN,否则最后生成的deb会不能安装 


4. 定义安装脚本。 
可以手动修改control文件,显示的是Cydia里的软件信息。但修改过就无法在Cydia中更新了。没有修改的话,当Cydia中出了新的版本就会提示更新。 
而有些deb自带preinst或postinst文件,分别是控制在安装deb之前和之后执行一些命令 

在preinst中,有的会有remove信息,即指在安装之前先写在旧版本。这里提供iBluetooth的postinst文件以作参考#!/bin/bash 

if [[ $1 == configure ]] 
then 
chown -R 0:0 /Applications/iBluetooth.app/ 
chmod -R 644 /Applications/iBluetooth.app/ 
chmod 755 /Applications/iBluetooth.app 
chmod 755 /Applications/iBluetooth.app/iBluetooth 
chmod 7777 /Applications/iBluetooth.app/iBluetooth_ 
fi简单来说就是在安装完之后更改某些文件和文件夹的属性。 

安装脚本具体怎么配置我也不清楚,盼高人指教。 

修改完之后,最后就是打包了 
引用

打包其实很简单,一句命令就搞定。dpkg-deb -b ./temp iBluetooth_1.0_CN_Cracked.deb./temp是要打包的文件所存放的位置,iBluetooth_1.0_CN_Cracked.deb是生成的deb的文件名,以上两个根据自己的情况修改。 
出现警告很正常,忽略之。 


生成的deb 



将pxl转换成deb 
引用
通常91上的软件大多都有ipa版或deb版,转换的必要性不是很大,就算要转,一般也只是将.app文件重新打包然后自己写个安装信息文件control 就可以了,但对于像熊猫空间和熊猫阅读器这些包含安装控制信息的pxl软件要转又该如何?下面以PandaReader熊猫阅读器为例。 

1. 先解包pxl文件,WinRAR,7-zip什么的随便,Linux下也可以用zip命令解压。 

2. 解包得到的至少会有XXXX.app的主程序文件,以及一个PxlPkg.plist的配置文件。有的还会多一些用处不明的文件,例如熊猫空间解包之后就是这些(截图是在Windows下,打包还是得到Linux下): 

可以看到多了个images文件夹,还有一个readme.htm,一个version.ini。 

我自己并不知道这些文件有什么用,也不需要知道有什么具体用处(要修改软件除外),但需要知道这些软件在安装后有什么用,也就是该安到哪里,设为什么属性等等。 

而以上这些信息在PxlPkg.plist里可以查到。 

3. 在Linux下,将主程序XXX.app,此处是PandaReader.app传到temp/Applications/目录下(没有就新建),然后在 temp目录下创建DEBIAN文件夹,在文件夹里面创建一个空的文本文档control(也可以直接修改其它deb的control文件,这样更省事) 

4. control里的信息的写法可以根据PxlPkg.plist里的来写,比如control里的name就是PxlPkg.plist中 CFBundleIdentifier下string的内容,例如此处是NetDragon.Mobile.iPhone.PandaReader;程序安装目录就自己改了;版本号在PxlPkg.plist中是RDPxlPackageVersion下的string,注意control里的版本号不能有空格;图标路径也是根据需要来改。其它的Description之类的自己随便填。 

5. 配置安装控制脚本,此处介绍如何将PkgScript文件夹下的Postflight转换为postinst. 
打开Postfight文件,可以看到命令如下 
chown -R mobile /var/mobile/Library/Preferences/PandaReader 
chown -R mobile /var/mobile/Media/EBooks 
chmod -R 777 /var/mobile/Media/EBooks 
其余的是注释语句,无实际用途,可忽略。 
那么在postinst文件里就应该写#!/bin/bash 

if [[ $1 == configure ]] 
then 
chown -R mobile /var/mobile/Library/Preferences/PandaReader 
chown -R mobile /var/mobile/Media/EBooks 
chmod -R 777 /var/mobile/Media/EBooks 
fi这样就写完了postinst文件(此文件用途是在安装完之后创建目录、更改属性等) 

6. 最后是怎么知道images,readme.htm,version.ini应该放到哪里。 
查看PxlPkg.plist,发现如下语句<dict> 
<key>destination</key> 
<string>/var/mobile/Media/EBooks/images</string> 
<key>overwrite</key> 
<true /> 
<key>permanent</key> 
<false /> 
<key>source</key> 
<string>images</string> 
</dict> 
<dict> 
<key>destination</key> 
<string>/var/mobile/Media/EBooks/readme.htm</string> 
<key>overwrite</key> 
<true /> 
<key>permanent</key> 
<false /> 
<key>source</key> 
<string>readme.htm</string> 
</dict> 
<dict> 
<key>destination</key> 
<string>/var/mobile/Library/Preferences/PandaReader/version.ini</string> 
<key>overwrite</key> 
<true /> 
<key>permanent</key> 
<false /> 
<key>source</key> 
<string>version.ini</string> 
</dict>这就表示,images文件夹和readme.htm放到/var/mobile/Media/EBooks/下,version.ini放到/var/mobile/Library/Preferences/PandaReader/下。 
依次建立以上文件夹并将文件放到合适位置即可。 

然后又发现了如下语句 <array> 
<string>chmod</string> 
<string>-R</string> 
<string>755</string> 
<string>/var/mobile/Media/EBooks/images</string> 
</array>可知images文件夹应设属性755,设属性操作则不再赘述。 

7. 完成以上各步之后即可以打包了。 


一些问题及解答 
引用

1. 为什么解包的文件要解包到temp文件夹下,为什么不能跟原始deb放在同一目录? 
答:因为这样在打包的时候会把原始deb一起打包进去。就算是在打包之前删除掉了原始的deb,在打包过程中,由于新的deb已经生成,且在程序目录下,最后打包结束的时候也会包括这个新的deb,显然这不是我们需要的。 

2. DEBIAN文件夹一定是要这个名字么?换个名字或者改大小写会有影响么? 
答:我对Linux系统也不是特别了解,根据我之前试验的结果,DEBIAN大小写是无所谓的,但一定要这个名字。 

3. deb包可以用7-zip打开,那能否用7-zip打包? 
答:可以用7-zip解包程序文件,但不能提取出安装脚本,因此无法用7-zip打包。但若是只替换文件,也许可以,我没尝试过。 

4. Windows下能否制作deb? 
答:Windows下用虚拟机装Linux是肯定可以的,似乎也有在Windows下虚拟Linux的软件,不过我不知道是什么软件。制作deb的关键还是要有dpkg这个程序,否则无法制作deb。 

5. iPhone/iPod Touch上该如何制作deb? 
答:安装MobileTerminal后即可制作,操作过程同Linux下的,唯一要注意的是先通过电脑把要制作deb的源文件传到设备上,因为iPhone/iPod Touch不能下载,也没解压缩软件。 
我在iPhone上试过,不过因为CPU占用率过高而卡死。也许做些小型的deb还可以,大了的就会出问题。 

6. Linux下如何制作PXL? 
答:制作pxl主要的问题还是属性,其本质只是一个zip包。配置文件修改好之后在Linux下把属性改了再打包就可以了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics