iOS 平台上常见的安装包有三种,deb、ipa 和 pxl
前言:
目前 iOS 平臺上常見的安裝包有三種,deb、ipa 和 pxl。
其中 deb 格式是 Debian 系統(tǒng)(包含 Debian 和 Ubuntu )專屬安裝包格式,配合 APT 軟件管理系統(tǒng),成為了當(dāng)前在 Linux 下非常流行的一種安裝包。進(jìn)入 2.x 時代之后有 Cydia 作者 Jay Freeman(saurik) 移植到 iPhone 平臺上,一起的還有 APT 軟件管理系統(tǒng)。
而 ipa 格式則是蘋果在 iOS 平臺上推出的專屬軟件安裝包,在2.0固件開始才正式使用,是目前 iPhone/iPod Touch/iPad 平臺上唯一的官方安裝包。
而pxl格式則起源于 Mac 系統(tǒng)上的 pkg 安裝包,被廣泛應(yīng)用于1.x固件時代,曾經(jīng)是 iPhone 平臺上唯一的軟件安裝包,現(xiàn)在仍在被91等軟件所使用。
?
.debdeb 是 Unix 系統(tǒng)(其實(shí)主要是 Linux )下的安裝包,基于 tar 包,因此本身會記錄文件的權(quán)限(讀/寫/可執(zhí)行)以及所有者/用戶組。
由于 Unix 類系統(tǒng)對權(quán)限、所有者、組的嚴(yán)格要求,而 deb 格式安裝包又經(jīng)常會涉及到系統(tǒng)比較底層的操作,所以權(quán)限等的設(shè)置尤其重要。
deb 包本身有三部分組成:
- 數(shù)據(jù)包,包含實(shí)際安裝的程序數(shù)據(jù),文件名為 data.tar.XXX;
- 安裝信息及控制腳本包,包含 deb 的安裝說明,標(biāo)識,腳本等,文件名為 control.tar.gz;
- 最后一個是 deb 文件的一些二進(jìn)制數(shù)據(jù),包括文件頭等信息,一般看不到,在某些軟件中打開可以看到。
deb 本身可以使用不同的壓縮方式。tar 格式并不是一種壓縮格式,而是直接把分散的文件和目錄集合在一起,并記錄其權(quán)限等數(shù)據(jù)信息。之前提到過的 data.tar.XXX,這里 XXX 就是經(jīng)過壓縮后的后綴名。deb 默認(rèn)使用的壓縮格式為 gzip 格式,所以最常見的就是 data.tar.gz。常有的壓縮格式還有 bzip2 和 lzma,其中 lzma 壓縮率最高,但壓縮需要的 CPU 資源和時間都比較長。
data.tar.gz包含的是實(shí)際安裝的程序數(shù)據(jù),而在安裝過程中,該包里的數(shù)據(jù)會被直接解壓到根目錄(即 / ),因此在打包之前需要根據(jù)文件所在位置設(shè)置好相應(yīng)的文件/目錄樹。
而 control.tar.gz 則包含了一個 deb 安裝的時候所需要的控制信息。一般有 5 個文件:
- control,用了記錄軟件標(biāo)識,版本號,平臺,依賴信息等數(shù)據(jù);
- preinst,在解包 data.tar.gz 前運(yùn)行的腳本;
- postinst,在解包數(shù)據(jù)后運(yùn)行的腳本;
- prerm,卸載時,在刪除文件之前運(yùn)行的腳本;
- postrm,在刪除文件之后運(yùn)行的腳本;
- 在 Cydia 系統(tǒng)中,Cydia 的作者 Saurik 另外添加了一個腳本,extrainst_,作用與 postinst 類似。
關(guān)于 deb 的詳細(xì)介紹和打包說明,請見此貼1樓: http://bbs.weiphone.com/read-htm-tid-669283.html
?
.ipa使用過 Mac OS 的人可能都知道,Mac 下的軟件大部分都只有一個 .app 目錄,里面包含了程序全部資源和可執(zhí)行文件。簡單來說,Mac 下的軟件就像是 Windows 下的綠色軟件一樣,解壓后即可使用,不需要安裝,卸載的話也只用刪除程序文件即可(這里不涉及 pkg 格式安裝包)。而 ipa 格式可以視為這種 .app 軟件的衍生物。
ipa 文件實(shí)質(zhì)是一個 zip 壓縮包(不是 rar 或 7z 包),包含 3 個組件:
- payload 目錄下的 .app 目錄,這個是軟件的主程序;
- iTunesArtwork,實(shí)質(zhì)是一個無后綴名的 png 圖片,用來在 iTunes 中顯示圖標(biāo);
- iTunesMetadata.plist,記錄購買者信息、售價等數(shù)據(jù)。
由于 zip 包不能記錄權(quán)限和所有者等信息,所以蘋果規(guī)定了 ipa 的安裝方式,即全部 ipa 都會解包安裝在 /var/mobile/Applications 目錄下,全部文件和目錄的所有者及用戶組均設(shè)為 mobile(ID 為 501),主程序(可執(zhí)行文件)的權(quán)限設(shè)為 0755 (所有人都可以執(zhí)行,但只有所有者可以修改),可執(zhí)行文件在 plist 中定義。全部目錄權(quán)限設(shè)為 0755,而其它所有文件都設(shè)為 0644(僅所有者可以修改,其余人只允許讀取,全部人都不允許執(zhí)行)。
ipa 解包后并非直接放置于 Applications 目錄下,而是放在一串由隨機(jī)碼構(gòu)成的目錄下,其作用在于,只允許這個軟件運(yùn)行在一個特定的沙盒(Sandbox)中,不能干擾其他軟件。因此那串隨機(jī)碼目錄下,除了 ipa 本身的三個組件之外,還有三個目錄:
- Library,一般是用了儲存設(shè)置文件等數(shù)據(jù);
- Documents,存儲數(shù)據(jù),多用了保存存檔;
- tmp,臨時文件夾。
由于這個軟件只能在這個特定的目錄下運(yùn)行(當(dāng)然了,部分程序會調(diào)用系統(tǒng)的通訊錄、相機(jī)等組件,但仍然是受限制的),從而保證了整個系統(tǒng)的安全性和穩(wěn)定性。
由于 Unix 系統(tǒng)下對權(quán)限的規(guī)定相當(dāng)嚴(yán)格,所以“越權(quán)”的行為是絕對不允許的。舉個例子,mobile 用戶無權(quán)刪除 root 所有的文件,因?yàn)?root 的權(quán)限高于 mobile。所以有些人在修改 ipa 安裝后的文件時,比如進(jìn)行漢化或者修改存檔,發(fā)現(xiàn)不能刪除干凈軟件,或不能保存,這是因?yàn)閯h除時不能刪除 root 所有的文件,程序本身也無法對 root 所有的存檔文件進(jìn)行寫入操作。
.pxl
pxl 格式在1.x時代是 iPhone 平臺上唯一的安裝格式,原因是那時候還沒有 Cydia 這樣的 APT 管理軟件,蘋果官方也沒有推出 App Store。由于在1.x時代積累了大量人氣,在接下來的 App Store 時代中,pxl 格式以其相對簡易的打包和安裝方式,仍然占據(jù)了很大一部分市場。但隨著 Installer 的停止開發(fā),iBrickr 等軟件停止更新,目前唯一還在堅(jiān)持使用 pxl 格式的就只剩下91一家了。
pxl 安裝包通常包含3個組件:
PxlPkg.plist 文件的開頭通常是 CFBundleIdentifier,記錄著軟件的唯一標(biāo)識,以和其他軟件進(jìn)行區(qū)分。RDPxlPackageVersion 則記錄軟件版本。RDPxlPackageFireware 被用來記錄可以運(yùn)行的固件版本。其余還有一些鍵值是用來記錄軟件介紹、網(wǎng)址、作者信息等數(shù)據(jù)。
除了軟件標(biāo)識、軟件版本和可用固件版本以外,PxlPkg.plist 的核心部分就是 RDPxlPackageFiles 和 RDPxlPackagePostflight 兩項(xiàng)。RDPxlPackageFiles 記錄了程序文件應(yīng)該被復(fù)制到的路徑,并提供了是否覆蓋的參數(shù): overwrite。而 RDPxlPackagePostflight 則記錄程序文件應(yīng)該被賦予的所有者和權(quán)限,分別以 chown 和 chmod 命令來實(shí)現(xiàn)。另外,對于含有安裝/卸載腳本的 pxl 來說,還會以 sh 命令執(zhí)行相應(yīng)的腳本 Postflight 和 Preremove。
PkgScript 通常包含兩個文件,安裝后執(zhí)行的腳本 Postflight 和卸載前執(zhí)行的腳本 Preremove,這兩個腳本就是標(biāo)準(zhǔn)的 Linux Shell Script,以 sh 命令執(zhí)行。
安裝包的特點(diǎn)
?
?
.deb
- 豐富的資源:Cydia 上本身就不少,更何況任何格式的安裝包都可以轉(zhuǎn)換為 deb。
- 相對方便的在線購買模式:Cydia Store,不過盡管沒有 App Store 的5臺設(shè)備的限制,但對國內(nèi)用戶來說,付款方式比較困難。
- 破解難度較大,沒有使用 App Store 的驗(yàn)證方式,所以必須將驗(yàn)證和防破解措施加入程序里面,這樣就比較難破解,對軟件開發(fā)者來說是個好事。
- 完善的 Unix 文件系統(tǒng)支持:無需以命令設(shè)置文件的權(quán)限、所有者和用戶組(當(dāng)然也可以以腳本來設(shè)置)
- 完善的腳本支持:5個腳本依照安裝和卸載的先后順序執(zhí)行,可以提供更多選擇。比如備份還原操作,可以在 preinst 中備份文件,而在 postrm 中還原文件
- 嚴(yán)格的依賴關(guān)系:deb 遵循嚴(yán)格的依賴關(guān)系(于 Depends 和 Pre-Depends 指定),可以確保軟件運(yùn)行所必需的組件。在線安裝的時候會自動安裝所依賴的軟件包。卸載時也很重要,比如軟件包 A 依賴于 B,當(dāng)卸載 B 的時候會提示 A 依賴于 B,卸載掉 B 的話會導(dǎo)致 A 不能用,這樣可以確保系統(tǒng)的完整性和穩(wěn)定性。
- Conflicts、Replaces、Provides 等鍵值的存在可以實(shí)現(xiàn)沖突提示或替換其它軟件包。
- 完全權(quán)限:由于 deb 必須以最高權(quán)限 root 的身份運(yùn)行,deb可以對系統(tǒng)任何位置進(jìn)行操作,換句話說,deb 擁有對整個系統(tǒng)的完全控制,因此 deb 安裝包軟件可以實(shí)現(xiàn)很多 ipa 不能實(shí)現(xiàn)的功能。
- 相對簡單的獲取方式(在線或離線)和安裝方式,也不用擔(dān)心在不同機(jī)器上同步會刪掉程序的問題。
- 安裝相對簡單:其實(shí)無論是哪種安裝包,安裝方法都不算很復(fù)雜,只不過 deb 稍微復(fù)雜一些。
deb 的安裝方法大體有 5 種:
總體來說,deb 的安裝都是依賴于 dpkg -i 命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形界面。但除了 Cydia 安裝一種方式之外,其余幾種安裝方式都存在一些共有的問題:
- 不會自行搜索依賴關(guān)系,必須手動提供所依賴的 deb;
- Cydia 會讀取安裝腳本里的一些特殊語句,比如僅在全新安裝時執(zhí)行而不在升級時執(zhí)行,安裝完成后重啟 SpringBoard 或設(shè)備等等。
當(dāng)然了,deb 軟件的卸載也比較簡單,有兩種方式:
- Cydia 里卸載,優(yōu)點(diǎn)是卸載過程和提示信息很詳細(xì),全圖形界面操作,同時也提供了重新安裝的選項(xiàng);
- 以 dpkg -r Package_ID 命令或 dpkg -P Package_ID 命令來卸載(詳情后面會說);
- Cydelete 來卸載,優(yōu)點(diǎn)是可以直接在桌面上卸載有圖標(biāo)的軟件,但對那些沒有圖標(biāo)的無能為力。
其實(shí),不管是安裝還是刪除,都可以才要全手動的方法。即,解包 deb 之后,自己將文件放到相應(yīng)位置,然后設(shè)置權(quán)限等并執(zhí)行腳本。但這樣有必要么?
deb 的安裝過程如下:
deb 的卸載過程如下:
由于 deb 安裝的軟件可能會在運(yùn)行時在 /var/mobile/Documents 下放置存檔文件,或在 /var/mobile/Library/Preferences 下放置設(shè)置文件,而這些文件并沒有記錄在 list 文件里,所以卸載的時候不會被刪除。
?
?
.ipa- 豐富的資源:App Store 上那么多資源,apptrackr 等網(wǎng)站也提供了很多破解版。
- 完善的更新、后期服務(wù)。
- 只能使用最小權(quán)限,保障安全性。
- 不涉及系統(tǒng)級的操作,所以一般不容易造成死機(jī)或白蘋果(有些是因?yàn)橘Y源消耗太大所以卡死)。
- 便捷的安裝方式,無論是直接在設(shè)備上用App Store安裝,還是用 iTunes 來同步,抑或是用 Installous 和 91 這類第三方軟件來安裝,都是很方便快速的安裝方式。
- 超級簡單的卸載方式:還有什么比只需要點(diǎn)一個 X 就能卸載更簡單呢?
- 完全刪除,不會留下任何垃圾文件(如存檔、設(shè)置文件等)
- 總體來說破解還是比較容易的,但現(xiàn)在越來越多軟件加入了防破解措施。
之前提到過,ipa 軟件是被安裝在一個類似于沙盒的環(huán)境中,除了能對 /var/mobile/Media/DCIM 目錄(拍照、截圖存放目錄)進(jìn)行操作,或是調(diào)用壁紙、鈴聲、相機(jī)等組件,不能對系統(tǒng)進(jìn)行任何干涉,這樣在最大程度上保證了系統(tǒng)的穩(wěn)定運(yùn)行,也不會干擾其它軟件的正常使用。但問題是,由于 ipa 軟件的權(quán)限很低,想要對系統(tǒng)進(jìn)行修改,尤其是應(yīng)用補(bǔ)丁時,ipa 就無能為力了。
ipa 軟件官方的安裝方式有兩種,一是在 App Store 這個軟件中下載安裝,二是用 iTunes 同步。
前者的問題主要是網(wǎng)絡(luò)問題,網(wǎng)速不好很容易安裝失敗;GPRS之類的上網(wǎng)安裝又很耗流量。后者的問題主要是不能在不同系統(tǒng)下使用(包含不同電腦和同一部電腦上的不同系統(tǒng)),在其它系統(tǒng)上同步會抹掉原有的軟件。當(dāng)然了,iTunes 每次同步時間比較長也是經(jīng)常被人詬病的。尤其是當(dāng)安裝軟件比較多的時候,每次同步之前的備份需要很長很長時間,這個很惡心(不過可以直接 X 掉備份操作)。
由于以上兩種方式存在一些問題,所以很多人會選擇使用 Installous 或 91 來安裝 ipa,這也確實(shí)是個不錯的選擇。
Installous 一般沒什么問題,但對部分驗(yàn)證比較嚴(yán)格的 ipa 處理不是很好。雖然 Installous 基本能代替 iTunes,但畢竟不完全等同。最典型的就是 Installous 安裝 Microsoft 官方出的 Live Messenger (正版,非破解版)時不能運(yùn)行。實(shí)際上 Installous 對很多未破解的正版軟件支持不是很好。
至于91,經(jīng)常被人批評。91 雖然可以安裝 ipa,但除了 Installous 都有的正版軟件的支持問題外,由于91的安裝機(jī)制有缺陷,軟件不能實(shí)現(xiàn)多語言,只會使用英文界面,而忽略掉 zh_CN.lproj,zh_TW.lproj 這些語言包。這對那些用希望使用漢化版的人來說實(shí)在是一個悲劇。所以通常是要避免使用91來安裝 ipa 的。
至于卸載,三種方法:
- 設(shè)備上按住圖標(biāo)直到開始晃動,點(diǎn)擊圖標(biāo)左上角的 X 即可卸載;
- 于 iTunes 中取消選中,然后同步
- 找到 /var/mobile/Applications 下的相應(yīng)目錄,強(qiáng)行刪除整個文件夾。這個在前面兩種方法無法使用是可以采用(有時候卸載體積太大的軟件,比如超過 1G,因?yàn)閯h除過程太長導(dǎo)致失去響應(yīng)并刪除失敗。),但這種方法會造成系統(tǒng)的不穩(wěn)定。除非是確實(shí)碰到了問題,否則強(qiáng)烈建議不要使用。
?
?
.pxl
- 嚴(yán)格來說,pxl 格式的資源并不算多,但也不少。現(xiàn)在使用 pxl 格式的絕大多數(shù)都是91的用戶。
- 從時效性上來說,很多軟件(主要是 App Store 上的)一被人破解就馬上會被人轉(zhuǎn)成 pxl 格式,這樣來說,pxl 格式的更新還是不錯的。
- 由于91手機(jī)助手沒有 iTunes 同步會抹掉軟件的問題,加上其它一些比較方便的功能,使得很多新手都是從91開始了解并熟悉 iPhone/iPod Touch 的使用。其結(jié)果是,pxl 格式依賴于91而生存。
- pxl 格式的流行也不是歷史的遺物,而是符合市場規(guī)律的需求。91助手的便捷的軟件管理方式(尤其是支持 WiFi 管理),加上免費(fèi)的旗號,使得 pxl 格式在新手中很受歡迎。
實(shí)際上,pxl 格式和 deb 格式具有的功能完全一樣。雖然 pxl 不能記錄文件的權(quán)限等數(shù)據(jù),但完全可以用腳本來彌補(bǔ)。即是說,pxl 格式和 deb 格式其實(shí)是不相伯仲的。而且因?yàn)?pxl 格式的制作并不需要比較少見的 Unix 環(huán)境,尤其是 Debian 環(huán)境,其本身是優(yōu)于 deb 格式的。
但為什么現(xiàn)在很多人都經(jīng)常在說不要使用 pxl 呢?我個人認(rèn)為,原因主要有以下幾個:
- 資源的局限性:除了91公司自己開發(fā)的幾個軟件之外,其余所有軟件都是從 deb 和 ipa 轉(zhuǎn)換而來。如果原版軟件沒破解,pxl 無能為力(比如 Microsoft 官方出的 Live Messenger 和 Cydia 上一眾沒被破解的軟件);
- 資源時效性:跟上面一點(diǎn)相似,pxl 格式大部分是從其它格式轉(zhuǎn)換而來,跟原版相比總是會慢一些,尤其是當(dāng)無法破解時,pxl 根本就出不來;
- 打包人水平有限:現(xiàn)在很多人都是直接用91助手來打包 pxl。對大部分只有一個 XXX.app 目錄的程序來說一般不會有問題,但若遇見那些對文件權(quán)限等數(shù)據(jù)有嚴(yán)格要求的軟件(比如可執(zhí)行文件沒有可執(zhí)行權(quán)限,或是 mobile 用戶不能改寫 root 所有的文件等等),或是需要比較復(fù)雜的腳本才能運(yùn)行的軟件,往往 pxl 制作者并沒有能力去制作一個完善的 pxl 出來,這樣也導(dǎo)致了許多安裝使用上的問題;
- 安全性:絕大部分人在制作 pxl 的時候都習(xí)慣用 chmod -R 命令來將整個 XXX.app 目錄及其中的全部文件和子目錄設(shè)為755/775/777權(quán)限,而這種行為會造成一定的安全隱患。關(guān)于這些數(shù)字的意思請自行搜索相關(guān)資料。這里簡單說明一下。644屬性表示僅有該文件的所有人才可以進(jìn)行改寫操作,其余任何人都只能讀取,任何人都不能執(zhí)行這個文件。755和775是在644的基礎(chǔ)上加入了可執(zhí)行權(quán)限,755是該文件所在的用戶組的所有人都可以改寫。而777權(quán)限則標(biāo)識任何人都可以改寫并執(zhí)行。由于 mobile 本身是受限賬戶,如果使用777權(quán)限的話,有機(jī)會通過這個漏洞來獲取整個系統(tǒng)的控制權(quán)。只不過因?yàn)?iPhone 系統(tǒng)相對封閉,也不太有機(jī)會造成損失。但采用775和777權(quán)限是不應(yīng)該的;
- ipa 轉(zhuǎn) pxl 的存檔問題:不少人都有這樣的經(jīng)歷,在游戲 A 存檔之后再進(jìn)游戲 B,存檔 B 之后再進(jìn) A,發(fā)現(xiàn) A 的存檔已經(jīng)不在了。原因在于,ipa 轉(zhuǎn)換成的 pxl 軟件,存檔全部是放在 /var/mobile/Documents 目錄下,而正好有兩個軟件的存檔文件名相同(最常見的就是 data.sav 或 save.data),互相改寫之后導(dǎo)致不能讀取。這種問題也發(fā)生在 ipa 轉(zhuǎn) deb 上,而且無法解決;
- 無法完整刪除:卸載 pxl 格式時,不會刪除存檔文件、配置文件、臨時文件等數(shù)據(jù),長期使用會導(dǎo)致可用空間減少;
- 在部分機(jī)型上存在兼容問題:有些機(jī)器越獄后并沒有將系統(tǒng)分區(qū)中的 /Applications 目錄轉(zhuǎn)移到 /var/stash 的用戶分區(qū)中。由于系統(tǒng)分區(qū)的可用空間很少(默認(rèn)500MB,通常可用空間不超過50MB),強(qiáng)行往 /Applications 里安裝會導(dǎo)致剩余空間消耗殆盡或安裝失敗。
由此可以看出,pxl 格式的問題更多不是 pxl 本身的問題,而是打包者的問題以及安裝方式的缺陷所致。
另外要指出的是,pxl 最大的提供者,91,經(jīng)常是轉(zhuǎn)載他人發(fā)布的軟件(包括 網(wǎng)友自己購買破解的,或 Cydia 上直接下載的)然后當(dāng)作自己發(fā)布的軟件,對版權(quán)問題完全不在意,這樣也引起了很多人,尤其是原發(fā)布者的反感。這種赤裸裸的剽竊行為實(shí)在是令人不恥。正因?yàn)檫@樣,很多人是因?yàn)椴凰?1而不爽 pxl,這實(shí)在是冤枉 pxl 格式本身了。
安裝和卸載:
- 91手機(jī)助手
- 91百寶箱
pxl 轉(zhuǎn) ipa?http://bbs.weiphone.com/read-htm-tid-569364.html
pxl 轉(zhuǎn) deb?http://bbs.weiphone.com/read-htm-tid-692225.html?
pxl 格式曾經(jīng)是1.x時代唯一的安裝包格式,給我們留下了太多的回憶,對于 pxl 的貢獻(xiàn),我們還是應(yīng)該緬懷和尊敬的。但隨著時代的發(fā)展,pxl 已經(jīng)老態(tài)盡顯,就如同 Installer 的退出一樣,pxl 最終會退出市場而被供奉在殿堂之內(nèi)。
?
總結(jié)
?
?
一般的軟件還是盡量用 ipa 格式,不要使用 ipa 轉(zhuǎn)換成的 deb 或 pxl 格式,這樣可以確保兼容性和安全性。而在系統(tǒng)級的程序(如 SBSettings 和輸入法),ipa 是絕無能力的,那么最好的選擇還是 deb。pxl 作為快被淘汰的格式,還是果斷的放棄比較好。
至于 ipa 和 deb 的安裝方式,ipa 的安裝首選 iTunes 同步和 App Store 在線安裝,次選 Installous,以保證最佳兼容性。deb 的安裝首選 Cydia 在線安裝,次選除91外的其它任何安裝方式。
任何情況下都不推薦用91來安裝 ipa 和 deb,因?yàn)?1的安裝機(jī)制并不完善,很容易出問題。
轉(zhuǎn)載于:https://www.cnblogs.com/yh-qfnu/p/3261633.html
總結(jié)
以上是生活随笔為你收集整理的iOS 平台上常见的安装包有三种,deb、ipa 和 pxl的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于EasyExcel模板填充方式进行二
- 下一篇: 深入GDI图像显示