前言:
目前 iOS 平臺上常見的安裝包有三種,deb、ipa 和 pxl。
其中 deb 格式是 Debian 系統(tǒng)(包含 Debian 和 Ubuntu )專屬安裝包格式,配合 APT 軟件管理系統(tǒng),成為了當(dāng)前在 Linux 下非常流行的一種安裝包。進入 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等軟件所使用。
安裝包格式:
引用
.deb
deb 是 Unix 系統(tǒng)(其實主要是 Linux )下的安裝包,基于 tar 包,因此本身會記錄文件的權(quán)限(讀/寫/可執(zhí)行)以及所有者/用戶組。
由于 Unix 類系統(tǒng)對權(quán)限、所有者、組的嚴(yán)格要求,而 deb 格式安裝包又經(jīng)常會涉及到系統(tǒng)比較底層的操作,所以權(quán)限等的設(shè)置尤其重要。
引用
.ipa
使用過 Mac OS 的人可能都知道,Mac 下的軟件大部分都只有一個 .app 目錄,里面包含了程序全部資源和可執(zhí)行文件。簡單來說,Mac 下的軟件就像是 Windows 下的綠色軟件一樣,解壓后即可使用,不需要安裝,卸載的話也只用刪除程序文件即可(這里不涉及 pkg 格式安裝包)。而 ipa 格式可以視為這種 .app 軟件的衍生物。
ipa 文件實質(zhì)是一個 zip 壓縮包(不是 rar 或 7z 包),包含 3 個組件: payload 目錄下的 .app 目錄,這個是軟件的主程序;
iTunesArtwork,實質(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 目錄下,而是放在一串由隨機碼構(gòu)成的目錄下,其作用在于,只允許這個軟件運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟件。因此那串隨機碼目錄下,除了 ipa 本身的三個組件之外,還有三個目錄: Library,一般是用了儲存設(shè)置文件等數(shù)據(jù);
Documents,存儲數(shù)據(jù),多用了保存存檔;
tmp,臨時文件夾。
由于這個軟件只能在這個特定的目錄下運行(當(dāng)然了,部分程序會調(diào)用系統(tǒng)的通訊錄、相機等組件,但仍然是受限制的),從而保證了整個系統(tǒng)的安全性和穩(wěn)定性。
由于 Unix 系統(tǒng)下對權(quán)限的規(guī)定相當(dāng)嚴(yán)格,所以“越權(quán)”的行為是絕對不允許的。舉個例子,mobile 用戶無權(quán)刪除 root 所有的文件,因為 root 的權(quán)限高于 mobile。所以有些人在修改 ipa 安裝后的文件時,比如進行漢化或者修改存檔,發(fā)現(xiàn)不能刪除干凈軟件,或不能保存,這是因為刪除時不能刪除 root 所有的文件,程序本身也無法對 root 所有的存檔文件進行寫入操作。
引用
.pxl
pxl 格式在1.x時代是 iPhone 平臺上唯一的安裝格式,原因是那時候還沒有 Cydia 這樣的 APT 管理軟件,蘋果官方也沒有推出 App Store。由于在1.x時代積累了大量人氣,在接下來的 App Store 時代中,pxl 格式以其相對簡易的打包和安裝方式,仍然占據(jù)了很大一部分市場。但隨著 Installer 的停止開發(fā),iBrickr 等軟件停止更新,目前唯一還在堅持使用 pxl 格式的就只剩下91一家了。
pxl 安裝包通常包含3個組件: PxlPkg.plist 記錄程序文件的存放位置、所有者、權(quán)限以及軟件標(biāo)識等信息;
PkgScript文 件夾,存放安裝和卸載腳本;
程序文件。
安裝包的特點
引用
.deb
豐富的資源:Cydia 上本身就不少,更何況任何格式的安裝包都可以轉(zhuǎn)換為 deb。
相對方便的在線購買模式:Cydia Store,不過盡管沒有 App Store 的5臺設(shè)備的限制,但對國內(nèi)用戶來說,付款方式比較困難。
破解難度較大,沒有使用 App Store 的驗證方式,所以必須將驗證和防破解措施加入程序里面,這樣就比較難破解,對軟件開發(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 指定),可以確保軟件運行所必需的組件。在線安裝的時候會自動安裝所依賴的軟件包。卸載時也很重要,比如軟件包 A 依賴于 B,當(dāng)卸載 B 的時候會提示 A 依賴于 B,卸載掉 B 的話會導(dǎo)致 A 不能用,這樣可以確保系統(tǒng)的完整性和穩(wěn)定性。
Conflicts、Replaces、Provides 等鍵值的存在可以實現(xiàn)沖突提示或替換其它軟件包。
完全權(quán)限:由于 deb 必須以最高權(quán)限 root 的身份運行,deb可以對系統(tǒng)任何位置進行操作,換句話說,deb 擁有對整個系統(tǒng)的完全控制,因此 deb 安裝包軟件可以實現(xiàn)很多 ipa 不能實現(xiàn)的功能。
相對簡單的獲取方式(在線或離線)和安裝方式,也不用擔(dān)心在不同機器上同步會刪掉程序的問題。
安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很復(fù)雜,只不過 deb 稍微復(fù)雜一些。
deb 的安裝方法大體有 5 種: Cydia 或同類 APT 管理軟件在線安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關(guān)系,但缺點是對網(wǎng)絡(luò)的要求比較高;
命令行中以 dpkg -i XXX.deb 的形式安裝,好處是可以以通配符一次性安裝多個 deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示信息,缺點是需要命令行軟件的支持,如 Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完后會不顯示圖標(biāo);
放置于 AutoInstall 目錄重啟安裝。該方法實際是 Cydia 提供的一個啟動腳本,在每次系統(tǒng)啟動時以 dpkg 命令安裝 AutoInstall 目錄下的 deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現(xiàn)不顯示圖標(biāo)的情況;
利用 iFile 安裝,好處是圖形化操作,桌面會顯示圖標(biāo),缺點是不能一次安裝多個 deb;
用 Cyder II 等軟件來安裝,其原理是模擬一個 APT 軟件管理器來下載相應(yīng)的 deb 文件并傳到設(shè)備,然后以前面幾種方式來安裝。
總體來說,deb 的安裝都是依賴于 dpkg -i 命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形界面。但除了 Cydia 安裝一種方式之外,其余幾種安裝方式都存在一些共有的問題: 不會自行搜索依賴關(guān)系,必須手動提供所依賴的 deb;
Cydia 會讀取安裝腳本里的一些特殊語句,比如僅在全新安裝時執(zhí)行而不在升級時執(zhí)行,安裝完成后重啟 SpringBoard 或設(shè)備等等。
當(dāng)然了,deb 軟件的卸載也比較簡單,有兩種方式: Cydia 里卸載,優(yōu)點是卸載過程和提示信息很詳細,全圖形界面操作,同時也提供了重新安裝的選項;
以 dpkg -r Package_ID 命令或 dpkg -P Package_ID 命令來卸載(詳情后面會說);
Cydelete 來卸載,優(yōu)點是可以直接在桌面上卸載有圖標(biāo)的軟件,但對那些沒有圖標(biāo)的無能為力。
引用
.ipa
豐富的資源:App Store 上那么多資源,apptrackr 等網(wǎng)站也提供了很多破解版。
完善的更新、后期服務(wù)。
只能使用最小權(quán)限,保障安全性。
不涉及系統(tǒng)級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。
便捷的安裝方式,無論是直接在設(shè)備上用App Store安裝,還是用 iTunes 來同步,抑或是用 Installous 和 91 這類第三方軟件來安裝,都是很方便快速的安裝方式。
超級簡單的卸載方式:還有什么比只需要點一個 X 就能卸載更簡單呢?
完全刪除,不會留下任何垃圾文件(如存檔、設(shè)置文件等)
總體來說破解還是比較容易的,但現(xiàn)在越來越多軟件加入了防破解措施。
之前提到過,ipa 軟件是被安裝在一個類似于沙盒的環(huán)境中,除了能對 /var/mobile/Media/DCIM 目錄(拍照、截圖存放目錄)進行操作,或是調(diào)用壁紙、鈴聲、相機等組件,不能對系統(tǒng)進行任何干涉,這樣在最大程度上保證了系統(tǒng)的穩(wěn)定運行,也不會干擾其它軟件的正常使用。但問題是,由于 ipa 軟件的權(quán)限很低,想要對系統(tǒng)進行修改,尤其是應(yīng)用補丁時,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,這也確實是個不錯的選擇。
Installous 一般沒什么問題,但對部分驗證比較嚴(yán)格的 ipa 處理不是很好。雖然 Installous 基本能代替 iTunes,但畢竟不完全等同。最典型的就是 Installous 安裝 Microsoft 官方出的 Live Messenger (正版,非破解版)時不能運行。實際上 Installous 對很多未破解的正版軟件支持不是很好。
至于91,經(jīng)常被人批評。91 雖然可以安裝 ipa,但除了 Installous 都有的正版軟件的支持問題外,由于91的安裝機制有缺陷,軟件不能實現(xiàn)多語言,只會使用英文界面,而忽略掉 zh_CN.lproj,zh_TW.lproj 這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝 ipa 的。
至于卸載,三種方法: 設(shè)備上按住圖標(biāo)直到開始晃動,點擊圖標(biāo)左上角的 X 即可卸載;
于 iTunes 中取消選中,然后同步
找到 /var/mobile/Applications 下的相應(yīng)目錄,強行刪除整個文件夾。這個在前面兩種方法無法使用是可以采用(有時候卸載體積太大的軟件,比如超過 1G,因為刪除過程太長導(dǎo)致失去響應(yīng)并刪除失敗。),但這種方法會造成系統(tǒng)的不穩(wěn)定。除非是確實碰到了問題,否則強烈建議不要使用。
引用
.pxl
嚴(yán)格來說,pxl 格式的資源并不算多,但也不少。現(xiàn)在使用 pxl 格式的絕大多數(shù)都是91的用戶。
從時效性上來說,很多軟件(主要是 App Store 上的)一被人破解就馬上會被人轉(zhuǎn)成 pxl 格式,這樣來說,pxl 格式的更新還是不錯的。
由于91手機助手沒有 iTunes 同步會抹掉軟件的問題,加上其它一些比較方便的功能,使得很多新手都是從91開始了解并熟悉 iPhone/iPod Touch 的使用。其結(jié)果是,pxl 格式依賴于91而生存。
pxl 格式的流行也不是歷史的遺物,而是符合市場規(guī)律的需求。91助手的便捷的軟件管理方式(尤其是支持 WiFi 管理),加上免費的旗號,使得 pxl 格式在新手中很受歡迎。
實際上,pxl 格式和 deb 格式具有的功能完全一樣。雖然 pxl 不能記錄文件的權(quán)限等數(shù)據(jù),但完全可以用腳本來彌補。即是說,pxl 格式和 deb 格式其實是不相伯仲的。而且因為 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 上一眾沒被破解的軟件);
資源時效性:跟上面一點相似,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ù)雜的腳本才能運行的軟件,往往 pxl 制作者并沒有能力去制作一個完善的 pxl 出來,這樣也導(dǎo)致了許多安裝使用上的問題;
安全性:絕大部分人在制作 pxl 的時候都習(xí)慣用 chmod -R 命令來將整個 XXX.app 目錄及其中的全部文件和子目錄設(shè)為755/775/777權(quán)限,而這種行為會造成一定的安全隱患。關(guān)于這些數(shù)字的意思請自行搜索相關(guān)資料。這里簡單說明一下。644屬性表示僅有該文件的所有人才可以進行改寫操作,其余任何人都只能讀取,任何人都不能執(zhí)行這個文件。755和775是在644的基礎(chǔ)上加入了可執(zhí)行權(quán)限,755是該文件所在的用戶組的所有人都可以改寫。而777權(quán)限則標(biāo)識任何人都可以改寫并執(zhí)行。由于 mobile 本身是受限賬戶,如果使用777權(quán)限的話,有機會通過這個漏洞來獲取整個系統(tǒng)的控制權(quán)。只不過因為 iPhone 系統(tǒng)相對封閉,也不太有機會造成損失。但采用775和777權(quán)限是不應(yīng)該的;
ipa 轉(zhuǎn) pxl 的存檔問題:不少人都有這樣的經(jīng)歷,在游戲 A 存檔之后再進游戲 B,存檔 B 之后再進 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)致可用空間減少;
在部分機型上存在兼容問題:有些機器越獄后并沒有將系統(tǒng)分區(qū)中的 /Applications 目錄轉(zhuǎn)移到 /var/stash 的用戶分區(qū)中。由于系統(tǒng)分區(qū)的可用空間很少(默認(rèn)500MB,通??捎每臻g不超過50MB),強行往 /Applications 里安裝會導(dǎo)致剩余空間消耗殆盡或安裝失敗。
由此可以看出,pxl 格式的問題更多不是 pxl 本身的問題,而是打包者的問題以及安裝方式的缺陷所致。
另外要指出的是,pxl 最大的提供者,91,經(jīng)常是轉(zhuǎn)載他人發(fā)布的軟件(包括 網(wǎng)友自己購買破解的,或 Cydia 上直接下載的)然后當(dāng)作自己發(fā)布的軟件,對版權(quán)問題完全不在意,這樣也引起了很多人,尤其是原發(fā)布者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽 pxl,這實在是冤枉 pxl 格式本身了。
安裝和卸載:
91手機助手
91百寶箱
pxl 轉(zhuǎn) ipa
http://bbs.weiphone.com/read-htm-tid-569364.htmlpxl 轉(zhuǎn) deb
http://bbs.weiphone.com/read-htm-tid-692225.htmlpxl 格式曾經(jīng)是1.x時代唯一的安裝包格式,給我們留下了太多的回憶,對于 pxl 的貢獻,我們還是應(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,因為91的安裝機制并不完善,很容易出問題。