deb、ipa、pxl分别是什么格式?有什么区别?

deb、ipa、pxl分别是什么格式?有什么区别?目前iOS平台上常见的软件安装包有三种,分别是deb、ipa和pxl格式文件,那么它们之间的区别是什么呢?如果你不清楚的话,可以阅读下文进行了解!

deb、ipa、pxl分别是什么格式?有什么区别?

文章插图
deb、ipa、pxl是什么格式?
deb格式是Debian系统(包含Debian和Ubuntu)专属安装包格式,配合APT软件管理系统,成为了当前在Linux下非常流行的一种安装包 。进入2.x时代之后有Cydia作者JayFreeman(saurik)移植到iPhone平台上,一起的还有APT软件管理系统 。
ipa格式则是苹果在iOS平台上推出的专属软件安装包,在2.0固件开始才正式使用,是目前iPhone/iPodTouch/iPad平台上唯一的官方安装包 。
pxl格式则起源于Mac系统上的pkg安装包,被广泛应用于1.x固件时代,曾经是iPhone平台上唯一的软件安装包,现在仍在被91等软件所使用 。
各类安装包概述:
一、关于deb格式
deb是Unix系统(其实主要是Linux)下的安装包,基于tar包,因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组 。由于Unix类系统对权限、所有者、组的严格要求,而deb格式安装包又经常会涉及到系统比较底层的操作,所以权限等的设置尤其重要 。
deb包本身有三部分组成:
数据包,包含实际安装的程序数据,文件名为data.tar.XXX;安装信息及控制脚本包,包含deb的安装说明,标识,脚本等,文件名为control.tar.gz;
最后一个是deb文件的一些二进制数据,包括文件头等信息,一般看不到,在某些软件中打开可以看到 。deb本身可以使用不同的压缩方式 。tar格式并不是一种压缩格式,而是直接把分散的文件和目录集合在一起,并记录其权限等数据信息 。之前提到过的data.tar.XXX,这里XXX就是经过压缩后的后缀名 。deb默认使用的压缩格式为gzip格式,所以最常见的就是data.tar.gz 。常有的压缩格式还有bzip2和lzma,其中lzma压缩率最高,但压缩需要的CPU资源和时间都比较长 。
data.tar.gz包含的是实际安装的程序数据,而在安装过程中,该包里的数据会被直接解压到根目录(即/),因此在打包之前需要根据文件所在位置设置好相应的文件/目录树 。而control.tar.gz则包含了一个deb安装的时候所需要的控制信息 。一般有5个文件:
control,用了记录软件标识,版本号,平台,依赖信息等数据;
preinst,在解包data.tar.gz前运行的脚本;
postinst,在解包数据后运行的脚本;
prerm,卸载时,在删除文件之前运行的脚本;
postrm,在删除文件之后运行的脚本;
在Cydia系统中,Cydia的作者Saurik另外添加了一个脚本,extrainst_,作用与postinst类似 。
二、关于ipa格式
使用过MacOS的人可能都知道,Mac下的软件大部分都只有一个.app目录,里面包含了程序全部资源和可执行文件 。简单来说,Mac下的软件就像是Windows下的绿色软件一样,解压后即可使用,不需要安装,卸载的话也只用删除程序文件即可(这里不涉及pkg格式安装包) 。而ipa格式可以视为这种.app软件的衍生物 。
ipa文件实质是一个zip压缩包(不是rar或7z包),包含3个组件:payload目录下的.app目录,这个是软件的主程序;
iTunesArtwork,实质是一个无后缀名的png图片,用来在iTunes中显示图标;
iTunesMetadata.plist,记录购买者信息、售价等数据 。
由于zip包不能记录权限和所有者等信息,所以苹果规定了ipa的安装方式,即全部ipa都会解包安装在/var/mobile/Applications目录下,全部文件和目录的所有者及用户组均设为mobile(ID为501),主程序(可执行文件)的权限设为0755(所有人都可以执行,但只有所有者可以修改),可执行文件在plist中定义 。全部目录权限设为0755,而其它所有文件都设为0644(仅所有者可以修改,其余人只允许读取,全部人都不允许执行) 。ipa解包后并非直接放置于Applications目录下,而是放在一串由随机码构成的目录下,其作用在于,只允许这个软件运行在一个特定的沙盒(Sandbox)中,不能干扰其他软件 。因此那串随机码目录下,除了ipa本身的三个组件之外,还有三个目录:

推荐阅读