静看光阴荏苒
不管不顾不问不说也不念

解包/打包Cydia内的deb软件包

其实如果你稍微懂一点Linux就应该知道deb是Debian系下面最常见的一种格式。而Cydia其实就是把Debian的APT包管理器给移植过去了,所以实际上手机越狱之后通过Cydia安装的各种软件都是通过APT完成的。

我这边建议用Ubuntu16.04桌面版去做这些操作,有图形化操作更方便,其次为什么不去用最新的18.04?18.10?这些新版里面附带的dpkg估计是因为版本太新,打包出来的deb不能在Cydia上正常使用。所以说有时候去盲目追新没什么意义,操作系统是拿来完成工作的,不是拿来玩的。

以下操作均在VMware的Ubuntu16.04内完成。不要把这些东西想的很难,别给自己找包袱背。。。

默认情况下,安装好的Ubuntu16.04只允许普通用户登录到桌面内,所以在桌面内打开终端之后需要设置root密码(打包解包或者是制作deb的时候建议使用root权限):

sudo passwd root

第一遍输入当前用户的密码,然后就是设置你的系统root密码了,接着再:

su

输入你刚才设置的root密码就可以切到root用户下了:

现在我们来尝试解包,首先把需要解包的deb拖到VMware内,然后进入到桌面目录。

这里我以这个com.wxhbts.yayuanxiao_1.2_iphoneos-arm.deb包为例。首先创建一个工作目录:

mkdir -p yayuanxiao/DEBIAN

解出实际需要安装的文件:

dpkg -x com.wxhbts.yayuanxiao_1.2_iphoneos-arm.deb yayuanxiao

解出控制文件:

dpkg -e com.wxhbts.yayuanxiao_1.2_iphoneos-arm.deb yayuanxiao/DEBIAN

这个包就是解完了,很简单对不对其实真正需要用到的命令就2条。当我解出这个包后,进入到yayuanxiao目录内,我目录的结构目前是这样的:

在这个软件包内,System这个目录就是实际需要安装到iPhone手机内的文件。而DEBIAN目录下的文件就是deb包的控制文件。

根据Debian的文档:

https://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.zh-cn.html

我得知在这几个控制文件内,对应的作用如下:

control:

描述软件包的信息文件

preinst:

Debian软件包(.deb)解压前执行的脚本,为正在被升级的包停止相关服务,直到升级或安装完成。(成功后执行postinst脚本)。

postinst:

主要完成软件包(.deb)安装完成后所需的配置工作。通常,postinst脚本要求用户输入,和/或警告用户如果接受默认值,应该记得按要求返回重新配置这个软件,一个软件包安装或升级完成后,postinst脚本驱动命令,启动或重起相应的服务。

prerm:

停止一个软件包的相关进程,要卸载软件包的相关文件前执行。

postrm:

修改相关文件或连接,和/或卸载软件包所创建的文件。

一个deb包的构成,control文件是必须要有的,而preinst/prerm/postinst/postrm则是按需求去添加。

我现在解出来的这个包:com.wxhbts.yayuanxiao_1.2_iphoneos-arm.deb,实际上的功能是给iPhone手机替换字体的,替换字体这种操作在越狱之后其实已经是属于比较危险的操作了,所以这个包制作的很标准,它包含了所有需要用到的控制文件。我们现在可以浏览一下这个包对应的控制文件,去试着理解一下上面说的这些控制文件具体的作用。

首先是control,可以看到它里面包含了这个软件包的各项基本(描述)信息:

Package: com.wxhbts.yayuanxiao
Version: 1.2
Priority: standard
Section: 字体美化
Essential: no
Depends: firmware (>= 10),shell-cmds,dpkg
Architecture: iphoneos-arm
Name: 浪漫雅园小字体
Author: 心雨
Icon: https://apt.wxhbts.com/icon/%E5%AD%97%E4%BD%93%E7%BE%8E%E5%8C%96.png

如图所示:

然后是preinst,里面的脚本就是在给安装前做备份工作,将目前手机内的原字体文件全部备份下来:

可以这么理解,这个备份操作是不是只能在安装前去做,如果字体已经安装好了,还能备份吗?显然不能,已经替换掉原有的系统字体文件了,再去备份也只会是安装后的字体文件,所以这里肯定是只能去用preinst完成,而不是postinst。

在preinst跑完之后,postinst才开始真正的去替换系统的字体文件,并在完成之后提示让用户去注销设备使新的字体生效:

而当用户去卸载这个deb包时,prerm脚本内的命令就是在卸载前还原备份并把备份文件删除:

最后postrm收尾,清理缓存然后提示用户去注销设备使系统字体还原成最初的状态:

一条龙服务,这操作看上去很美对不对?但是你要知道这些命令可都是别人一条条敲上去的,万一哪条错了,或者漏备份了哪个文件,那么恭喜你,你的手机字体就炸了。所以说,没事别用这种方法去安装手机字体,最保险的方法应该是自己去手动备份并替换。。。

还有很重要的是,如果你已经使用deb包安装过字体了,再去用deb包安装其他字体之前一定要先卸载掉之前安装的字体。

接下来我们可以尝试打包,打包也很简单,但需要注意权限问题,一般情况下,安装到手机内的目录以及目录下的文件都应该是777权限,而控制文件则是755,当然你也可以按照Debian的标准(必须>=0555且<=0775),但我建议没什么特殊需求755最保险。例如我现在要把之前的工作目录(yayuanxiao)重新打包成deb软件包,就应该先设置好权限:

chmod -R 777 System
chmod -R 755 DEBIAN

接着回到这个目录的上级目录,只需要一条命令即可完成:

dpkg -b yayuanxiao im.lala.yayuanxiao_1.3_iphoneos-arm.deb

不出意外这个包就能够正常在Cydia内安装了。

赞(1)
未经允许不得转载:荒岛 » 解包/打包Cydia内的deb软件包
分享到: 更多 (0)

评论 2

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    我感觉还是centos好用,debian系都用不习惯,,

    千面妖7个月前 (03-06) Google Chrome 72.0.3626.105 Google Chrome 72.0.3626.105 Android 8.1.0 Android 8.1.0回复
    • 根据自己的需求来选择就行,我一般也是CentOS,但是这个deb打包的操作只能用Debian系完成。。。

      LALA7个月前 (03-07) Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98 Windows 10 x64 Edition Windows 10 x64 Edition回复

分享创造快乐

广告合作资源投稿