找回密碼
 註冊
搜索
查看: 4005|回復: 0

[教學] 什麼是 deb、ipa 和 pxl

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。
' o9 p1 ~) H2 Y5 S  x) b+ M
1 }; t5 G$ W: R& S2 ^, D前言:
$ f! P! @, y# T4 k& d
9 W; j1 Y. J+ L; k  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。 7 b3 ^; d2 B$ Z& f+ O
# F4 _1 S9 u' a/ Q; F0 q# P" I  s
  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。
) }. Q6 I* t! T2 d* c7 B
& I7 O; I# n% C# Z1 x  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。 0 a3 S9 C% [9 b+ c, D+ Q5 V* s

, b2 {; \' s, f. c1 x+ F  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。
: W* g8 G2 e$ U& l2 K3 p1 ]' a/ l: H1 s) t2 |  j
  安裝包格式:
! U: b6 A0 f# s2 O3 e9 m  \- W
! A* U& O7 o5 F  .deb
& h3 y# ]* R/ q, w  e/ g3 X$ k! M+ ~" T" V" [4 Q
  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。 % D2 t2 P6 W1 t) a( {
8 i0 h$ K& C: x: j- F. k
  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。
9 u, X: L3 {' g7 }- @. W, `+ v. U) E* W" B6 r& i
  deb包本身有三部分組成: . Z3 G3 Z6 d) U; w3 K

0 J* a" O( a. \2 O5 ], o  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX; 5 u9 D% \% x2 U* d6 `
/ T' q2 v6 x1 I8 x- Z
  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz;
/ F* v7 D" t  ?# X" M7 ~. V/ K/ o5 ^1 b
  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。
+ Z& g) [9 S) G8 o
0 {1 u; M& {& v8 M  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。 - Z; |. D9 q$ C6 H# ]

) d; X4 n7 d. q9 I- I+ y7 C& x  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。 1 j0 z1 S2 a$ E' O

! V, l# m2 U; D4 t" B  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔:
' }9 I/ @( H, }& @" \+ B* q& `8 C  I1 [6 r2 |# M% m, f
  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料;
0 d, ]2 W) z! p( E" e2 q7 K  O- d9 P9 M  A' q
  preinst,在解包data.tar.gz前運行的腳本;
: n+ e, S9 V0 I  W+ e6 L3 v+ \( R! r( }
  postinst,在解包資料後運行的腳本;
! z( ~, Q: a; c6 \0 C  G* G- P/ Y5 C3 `5 I" y
  prerm,卸載時,在刪除檔之前運行的腳本;
" c9 G& G% E& [! P4 I3 ]3 z5 b% Y. [( m$ h9 w% f
  postrm,在刪除檔之後運行的腳本; 4 _2 u" [+ J% O* Z; y
& S8 [+ k4 [; R
  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。
4 U9 {4 U7 Y5 V+ `. s( l+ N( j! X. w4 C" q0 u4 b
  .ipa
; x; l8 E+ A  t2 \' d1 P4 I6 E4 d7 z
  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。   E! }" d3 y/ \0 o9 z% A, q
* W+ O3 z3 V/ V  J
  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件:
6 J' r5 l1 `: f: a6 R/ m& g
! k! {0 f" g: _, n1 l) p  c" J  payload目錄下的.app目錄,這個是軟體的主程序;
& W7 D: D1 J1 f; e  W; P; {3 G! ?3 z, H
  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示;
0 T* G: O4 u+ m% K3 O1 u1 M4 K
5 e( _2 z( @, W% [& W  iTunesMetadata.plist,記錄購買者資訊、售價等資料。   G" j' l  W+ X: I" e: u

6 w* s0 V5 q, v9 V  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。 6 O( L* y% _1 Z, |" a! Z( v
, D& [2 E+ @8 |! J
  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄: ; @& b) I6 a( r, B* Q

9 U3 c# m3 F4 I  Library,一般是用了儲存設置檔等資料;
5 R1 s3 q, H5 [5 W+ [. D" h1 h# V, U) n) k) B0 r) |
  Documents,存儲資料,多用了保存存檔;
3 `; w9 a( ]3 x0 e5 [/ X5 X  I
# H  R+ x0 S! n% O# y% i5 K/ a. P  tmp,暫存檔案夾。 . Z5 R  w  |- Y/ J- [2 s
0 B- Y. d6 S( N7 ~5 {2 G
  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。
) f" d2 J9 d9 H$ ~
& D9 `, a. A. k( v  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。
# k/ p6 h: x5 r/ S# S6 ]$ g' B5 T" [6 Z+ I% G+ Z  l+ i
  .pxl
9 m# c! X0 Q4 }4 j# p5 a- v  s
+ {; l1 V$ h% p5 ]  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。
2 L) y  u! B  v( i5 C( i
  C% \! q( o3 _3 {0 Z# Y  pxl安裝包通常包含3個組件:
/ S6 W5 k4 a% p$ O- Y6 P0 N2 s
" Z+ g8 p9 w' J2 z: X! ~  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;
2 a7 O& @/ l6 K& A' O& p6 J3 ^3 b5 k( V
  PkgScript文件夾,存放安裝和卸載腳本;
" G# Z  h! Q6 \9 w' w( }8 s
9 _3 f8 q$ }7 r1 o, y) ~1 H, r& b8 x  程式檔。
' y, _1 G, X4 b  U+ @; _; z
3 O! ~% B; t6 X/ D. g  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。 , L8 w0 J# B5 U$ h8 l8 o, G; s

8 O2 R, t- h6 L4 q) m  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。 5 _- O' H( _# j8 Y# V

& B' ]( ^/ s9 Z& h" W$ r6 b% V  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。 1 J/ j: f! e+ _0 M2 d# Y8 `
( g5 `) h+ i( W9 k# M; A' Y1 g
  安裝包的特點:
/ l, q( t- l& _( b6 Z" O- D# {/ c5 l, N' e
  .deb - w( y0 C8 }) k+ G) g2 L( M& D
! g8 N- I. ^4 O8 s9 L3 T6 h2 {
  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。
4 S% }8 m! [3 m) A/ |) g  q
- {2 m. ?% k" Y4 y- T2 `$ s: w  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。
4 ]* u4 N) \7 A* i* y" z/ Z! z3 `2 a0 {) D0 t
  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。 % e% t& q* n2 ], M$ x

3 q; X2 g7 ^2 z) X/ l6 q  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)
+ E0 I* n% r6 B: A5 x
0 g/ \$ |( @6 i9 G: w0 X8 R$ g  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔
: i0 ]0 O( G+ i! g- ~' e+ J# b; D- Q- Z9 C) r$ u4 E
  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。 , ]4 H7 c6 h" W" T
1 v: v! {, j+ k) k* Y
  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。 , h2 v; K9 o( S; |

- J2 o5 B' x4 _$ X, h  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。 6 {' Q0 K, U  |7 @% v( k

; O9 m+ M0 [, x8 h. P0 _0 l8 @  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。 5 d% k' B# C/ r4 }
7 g$ p! M$ I' W, U( |; D
  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。
9 ?; ^5 n. S  m0 L0 V
7 I2 e3 f9 W1 X) i0 A; V$ M  deb的安裝方法大體有5種:
' q* n+ Q+ Z( q3 v' H
& l( E1 c6 O$ }4 v, y9 e  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高; 8 l. [( `' I3 H7 {9 m8 k

' w6 T& v4 q- ^  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示;
. \- @3 N9 @, A- T  j& w. }. D, S' V. L# _
  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況;
7 `( }9 d5 C. m, u
& }: b2 v- Y* `0 {/ w  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb;
, u) B' {6 B: P" V3 ^5 z  A9 R7 \+ a  n: ]! i9 \) ~! E; w
  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。 / G% [  n; {' E4 [
' {# O$ r. s& ^( R
  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題: / I6 n2 t& X+ h3 W5 O/ r; a

, r1 j9 Q0 k; R" S. s8 `  不會自行搜索依賴關係,必須手動提供所依賴的deb;
- b  }" ?8 Q; J5 [+ l  L; b" }" p5 ], D/ O2 S9 b( C7 ?9 g
  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。 ! S# }; z$ D/ Y

0 L" Z/ A$ M" s3 u  當然了,deb軟體的卸載也比較簡單,有兩種方式:
+ n  e2 R7 A7 x5 A' F, `5 b& R/ G0 {' m0 Y
  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項;
0 r7 V8 z* t. a; M4 i' @+ W  t$ Q
% S  A8 ?# Q( ^5 A7 _4 A2 a; Y  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說); 7 D8 e6 E3 o- V9 d' W6 V# w: J
7 o2 g. c, A6 k) v$ @' W
  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。 $ m- |, I9 B! F2 E9 M/ r: L6 c% m7 d

& ]/ Y! d1 P. g( Y8 m* t  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼?
- n, U3 z9 M6 V4 Q& `& u/ |  P0 d* ^7 c* K
  deb的安裝過程如下:
, S& i# Y% n) c, G  l
# t, V; R1 [" ~3 ?3 K# y# W$ p  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行 / x% g6 I2 r7 v$ d0 o' O
# U: X/ l2 ?* L- ^7 X$ Y
  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝;
/ c. k3 H9 C9 o( T$ B9 B
" m. v3 Q: x0 W9 V3 ]! T" g  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之;
5 t+ m9 H1 |  O* n2 c- o- }8 Y; |8 R* m6 |7 X( _) o
  將資料寫入/var/lib/dpkg/status檔中; * L6 n/ s% O+ y5 I( {- j2 p
! C5 o- x) q( ~& w3 p& D, O
  執行preinst腳本(如果有);
" e- o+ s4 F7 p( m1 J; H
' j+ L0 k5 L- m$ a8 B" V7 f5 `- C& T  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list; . f6 ]2 X# x% h+ e% O
7 T" d) `* M3 [6 N
  運行postinst和extrainst_腳本(如果有); & x$ a! O2 Q' }7 i/ c6 c/ l
) p5 W, m# i; \6 e% @9 V5 v3 A
  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等); ! w& y& Y- I, S* w  Z: r

" |) Q9 a) R1 Y: ?) o" e1 v  重新載入資料庫並解除鎖定。 4 k; q, r- e2 ~, ?+ ?' T/ U
9 }" V% \( m. T
  deb的卸載過程如下: . V' U. x5 e- A/ Q5 A
. `- @4 x4 C" ^8 b
  讀取資料庫並鎖定; ; H+ |9 u9 O: ~. J7 }# ~  b% r4 k6 u

* r0 |3 S, w0 \, t9 X8 @9 g9 j  C  根據軟體標識搜尋資料庫; + n; @; c( M* T0 Y7 k
1 I; H! F- e. V6 B7 v* k0 o1 ]
  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載; % [) N, ]& D* O9 o; i

  A0 X( v7 ^/ Q9 V7 b; y  執行prerm腳本(如果有);
. q% C& \/ `9 @6 S9 C8 z/ w' J- [* @1 @' r! w& o& I
  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾;
: m" S  n9 k1 v6 ?' f+ s( ^$ c- R2 X* Y, p( M8 }
  運行postrm腳本; - C/ n% ^2 V7 i. Q; F  k) y
* N- u+ \: ~$ f4 r
  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料; 1 ~0 f5 D+ h3 M

% O! d' q  {$ T" u, Y% M+ h3 L1 L6 j  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。 ) E& C( ]+ _) z5 \0 s: e) Z4 j
; c( Y2 D+ c- V
  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。 5 y/ Y; g. R' p! c, n

: W. V; m! V4 x' K) Z' U+ S  .ipa
" J$ W- F2 [+ t& \
% ]/ a9 p: j- J+ X4 s+ u  v  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。 3 D  s' B: J3 F$ g3 |) _

; S% Z# d; B$ ^8 l8 D. Z4 p7 E0 k  完善的更新、後期服務。
7 g( x. _1 Z! v8 p, g! f& y2 J* n9 A7 M
  只能使用最小許可權,保障安全性。 5 n5 p" p# M7 `% c# H4 P4 A0 d0 r

$ y& ]4 T+ v" ?  m% P9 G! r6 K  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。 " ?+ j7 n: k8 N# K

! m5 Y7 ^; M: b7 q' J4 ^& R  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。
9 H3 t4 u& _; P! w9 w+ m0 E1 I1 d; r* [* h
  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢? ' F: K* }* p% C( E$ u
" X* E. ]( U$ M9 A
  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等) " s( X: }0 E: y/ f
* }8 ~; z* S7 Z+ Q; T1 j% r
  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。 ) \/ E) ~- c" K8 ]' d6 j
% [% |, A( t* R& j2 a) o
  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。
; ^8 H# J" u' |/ a& I$ L& z
6 q+ c3 [' g* E. \7 l6 L/ F  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。
3 X7 i& E6 V, w2 A
  G* j, y0 z6 Y4 f9 a+ A0 T  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。
% I+ J! s3 C( l9 K& i: W/ u$ H/ m: O# G; s! ~3 X1 Q- V
  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。 - x2 ~- G7 w8 b* W5 L
8 L4 a$ O: t* v. R  a2 b8 L
  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。
+ b6 T: w, y7 E. P1 `( q( U) @
1 W! @, x  A3 z; l/ z  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。
  }0 A' q7 V+ i7 t! G* m7 @% [( C" q9 X$ S
  至於卸載,三種方法:
% M1 l& l6 W' B3 G* V- n* ~7 {9 A5 I: x
  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載;
3 Z$ M. z$ ~8 Q  v1 J, ~* o7 d( S) y7 ?( J0 Y5 X) u; S3 m
  於iTunes中取消選中,然後同步
1 z7 a3 @9 t( r2 l8 \
$ A. T% @; l/ `$ D( a9 [% y  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。 , ?9 ~8 f* X% m* E) o8 P

# J* ?1 p! V& B; H. J5 {. \, L  .pxl ; U& @! u+ Q$ H- |8 u. l
5 t% F% T( ~5 z6 ]" _. [" z
  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。 . @6 }- Z+ g, k7 ?* x

% l5 [  H- R8 T# |# v2 W* _2 n& D  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。   M$ ~) D7 ~( o+ {  {& [# D, e
0 W3 l+ v% e0 }- G
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。
$ p& s$ d' c! e+ f; S. B$ d/ b. K& s' x+ ^3 L
  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。
, @0 b% F3 q3 w7 `0 @
7 B9 s; l$ H2 X& ?/ R5 E: b( x+ H  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。 9 T, P% Q9 \# r

0 x+ {, `2 h5 v! E' m) t0 t+ m  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個:
$ r: L: b, Q: O9 D
- c! b7 b* `  j1 n  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體); 7 g: U( N& G, G* x/ l8 Q
( u" O+ |7 h" Q# _
  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來;
- Y0 p7 J1 ~7 s! b: f$ X* k( S' q' ?
  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題;
  J/ X: \5 Y  W9 o. \& ?+ V
, q; V) t" n0 {( f' t+ j  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的; ; L0 n+ Z" k: Y4 `& A, e
7 _( T: ?& I# a1 G3 M# N
  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決;
, p9 G6 x! w+ a2 X$ j9 R' _! d8 p3 {  n" F2 \# n0 B; i. p
  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少;
! j/ V% ^* ^) ^/ F" a+ @6 i& m) q+ ]7 _
  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。
6 Y) K+ e% ]- t8 {) l8 p/ z% V8 [1 g' G4 R: v+ D# y7 i
  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。 ( s! |! c0 \: ?
! ]5 u3 `; s& v( m5 `  K4 {" U
  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。
; w+ }7 k" n: V8 C. `' L/ e+ r( J3 C. I6 k
  總結:
- c" }) ?3 h8 K, ^. A+ m! i$ n" G- U
  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。 / H' G( v4 e; u$ W+ P* |$ C$ X

1 N' i, S! k) ~" j  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。
9 J7 g3 d! O3 u1 M
# c' k3 K) D" p8 E  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。
# h8 ]4 |9 o3 e
% i3 f) S) u! }+ Q: C
" x% {5 b6 G$ o% n" o本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|小黑屋|歡迎光臨 Julybee Club

GMT+8, 18-3-2026 08:04 , Processed in 0.255165 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回復 返回頂部 返回列表