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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。
$ r( E( r' _# p3 I8 N/ t0 g) X5 I; G5 M( m% J6 F3 i
前言: 8 _' C( E' l" R! g$ F" Z/ E
- n1 C/ w  d) T* b
  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。
$ s4 j: b' e1 P, @( o, R
' T* s- W( s6 u3 }; ^7 k$ G7 O+ H5 W- ~8 M4 U  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。
/ I! ^& G  b% K/ |2 q. U2 y3 a, T" l" Q3 |" w" x
  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。 * T; ]8 g9 O2 U- z1 T

9 X) b; g9 N- [* |1 S  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。 3 z$ `( f2 H- h/ z
) e- K7 ]# q' G) k& g  s
  安裝包格式: " n4 m0 y/ o$ L4 Q

' f, ?) H3 I, L! p3 r0 u; W3 H- L! @  .deb
1 P; @5 h7 V$ r( H9 |/ h- o% c( s- g; {; Z% ^: w7 x, f1 a
  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。 0 a3 W& R8 `0 Y

$ ?, D) Y( ?$ Y& O8 L" `2 f  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。
/ C+ I; w# Z6 d" ]( j- \! k  x; F
9 ~) m3 o% K" \  deb包本身有三部分組成:
) f; n" S2 y8 F& }; K
" C( J4 N7 B$ J( h  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX; 8 \+ S6 _' T* P. y4 @0 k; f, j6 r" W

3 y0 h8 i  I: z) J! D) {; o  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz;
* v8 [% w: r: W2 q7 N6 M! S9 k2 [4 k. n/ T( m
  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。
# P6 Q/ P  W' Z8 Z* W) I1 x7 Y; N! ]# ^, W
  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。 7 N" b$ |$ o& }7 @! X, R$ r

% R3 V% J) `! I2 V" ?  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。
# u9 E# N) c4 ?7 M0 h0 n4 N
  S' ]6 @5 b0 g  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔:   Q% O6 m& p  V5 }. W1 n, r/ P

: ?0 g8 P4 ~3 l  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料; # _% M) g. D% l" O
5 _1 R% x) t" a& o0 D# p
  preinst,在解包data.tar.gz前運行的腳本; , i8 O+ [7 g* s+ H9 _& o

: h  V; e: X; ~) B; i, l3 D" _  postinst,在解包資料後運行的腳本;
2 A2 n/ x- K+ p4 v, l$ [! N% X1 [* P+ V5 O+ ~/ \
  prerm,卸載時,在刪除檔之前運行的腳本; ' T4 i$ I; v2 |! G1 Z9 U6 i

& U& i* F2 n9 Q+ w  postrm,在刪除檔之後運行的腳本; , p) R; y' f5 ^; ^" i, |2 D
. y' u# g& B) ~  P
  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。 " [  ?2 ~% \+ d0 @) |8 x
# ?/ j1 V5 K8 f: T! F3 N+ ^
  .ipa
# J% v& `* @( q9 M# D: N) c' _0 u8 l! R# l& A
  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。 2 {& T6 J% V/ F3 I
; O- w+ E7 c' ~9 X3 q: U
  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件:
& P% {9 P) J/ a0 @8 p1 j
) V, r7 X' s2 o2 d, Q2 A* h  payload目錄下的.app目錄,這個是軟體的主程序; 3 h. O$ s" L+ `) {- i: L  [1 B. ^
7 u3 I4 r" X( s3 O/ m2 ~! e
  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示; + s$ f& z9 v* q8 m* O

. M# e  f* p) X. e  t' s+ |  iTunesMetadata.plist,記錄購買者資訊、售價等資料。 9 r# V, I: j5 g9 V; _- c  t# _

( _3 C. z# _) T3 s2 o" |  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。
% C$ I* C- v6 l! M8 c4 }% ^
1 Y' |6 R( A8 ]# Q/ u: y  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄: 8 ]5 M' R( U" T

; L' A* n3 q5 e1 t/ U" O& i  Library,一般是用了儲存設置檔等資料;
  |9 D0 g$ ?( E. c2 L2 I3 ^4 w, h) U
  Documents,存儲資料,多用了保存存檔;   [2 A/ b. _; K& t% Y! F$ m7 |

4 H$ Q+ {" }$ G+ M4 F: D- ?8 j  tmp,暫存檔案夾。 8 e5 A# ~* h: L$ P' U' d; s
  q! C6 K# w1 G" h1 J
  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。
: Q  B6 I. t; S" Y! ^) A; U/ B; p+ h$ X/ ~
  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。
7 S: t0 r) [: h* S3 Y( v% o
4 n& u: h. C6 [  .pxl
$ D# F8 C$ b/ L, ~# B. H5 A6 Z" B7 f1 \
  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。 . k, E. p9 a1 k* \6 N) k) X

9 Y4 V& N$ ]" K7 K  pxl安裝包通常包含3個組件:
! B$ C: w, p9 Q. ~" R& s
7 }2 f( }) Y) g" y4 p* y' z9 I, W* T+ `  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;
3 H2 \# Z: i; e) _& y
& f( l7 _$ f+ z  K$ e7 ^) O* D  PkgScript文件夾,存放安裝和卸載腳本;
4 W* G+ x+ k' G- f4 Y; V% E  @  [7 n& L8 V0 ~; |. L
  程式檔。 6 t: }- x! @8 F# F
+ l0 E/ Y" Y8 d/ A
  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。
, \1 [! Y& I- j* C
. q5 m; S# Q- \: y6 c: b  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。
9 ]4 F0 |# o9 L# S9 W/ ?* H
8 [5 g0 W9 ?& p7 \$ a6 X: Q; v  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。
: g' [8 s1 r! R7 z6 y3 n. k, r. z0 c% s8 ?& y" I- V: M, u
  安裝包的特點: ; @$ h+ y8 m0 c& F4 I

% X6 o4 H" S$ U  j/ r$ X  .deb . Q- F+ l$ W' Q' a

9 @3 E, O, S3 \) ]9 T* D  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。
$ V, U6 l9 W% u+ ?3 Q" R' O$ @5 s  ~9 R7 ~- j4 h$ t1 o2 z) p) S
  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。
& h( B# N# E9 C7 U8 L0 i$ x$ r# @: {- X' T3 S
  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。 3 k2 X1 f: e6 Z* k$ ^# m+ T

. @- f/ |9 H8 W# q% S$ _3 d" q- v) V  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)
# E- S, \2 N" c7 ]3 \/ E, s' j6 b4 c, v) r* t( Y
  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔 2 l% J" b! w# U: u) @; w

4 M  X2 e- Z6 ~1 j* ]0 T  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。
  F4 ]& J) p6 X0 z) ^! Z
3 C- O0 o+ w- K6 l; O  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。
# a; m1 I; e& f! g
  L  `* l3 O- G  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。 ! |; h- f; u: Z+ P! L) U+ r/ `, d# Q3 t
! k2 c4 K* r4 t3 Q3 p9 R7 \, F5 W
  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。
, R) G! L5 Q- ?2 ]8 n
* S* x: l3 H/ Y; z1 @  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。
' f- Q3 l6 P- m& M% ?- [# x" _, s4 g  b/ Q
  deb的安裝方法大體有5種:
6 p$ s9 R4 f$ U, W% Z
" t7 j. ?' w3 t8 ?2 T  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高; 0 A  @* z& i* m

7 y' Y/ G& X$ B  u0 r& F0 q  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示; - q/ j8 G( `# k% T* C

' @5 x" \) y7 E6 }& b! |  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況; + H2 g" u0 w3 I" L% `) m8 |* i

3 Q7 P3 s+ G* b7 l3 q& ~  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb; ' u0 w& b3 O& h: ?$ b& v

3 Q: ?8 w  `' J: R% h0 b  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。 4 Y! p7 n/ o: M

3 x, o- E1 d5 _6 ^! B$ o  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題: 0 h) I! f( j2 r. ^/ B7 `

6 x$ b2 O, ^+ f- e  不會自行搜索依賴關係,必須手動提供所依賴的deb;
' N' L* U+ V/ @/ ^* c; h, X7 Y, q! N) t' o) x
  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。
$ N8 R. i/ }3 j- R5 ~9 D- \& ]# ]! |3 }: k" i$ P1 d4 t
  當然了,deb軟體的卸載也比較簡單,有兩種方式:
* M5 j/ ^  n  _0 j
: o" }; c2 I! h- V  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項; 3 {. [' Z+ z9 n$ o+ R" A4 x
+ L; j8 t' m( E+ `& o
  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說); 8 \" k& ]) f* i! F

/ D4 @: X- m3 C$ R9 U  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。 ( d9 k6 w5 I" P1 G0 f* S. U" W
8 g9 n! n( `3 S3 w4 i
  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼? " l9 @7 F( I0 h. d1 J2 H
/ K  S4 H# o8 [
  deb的安裝過程如下: 4 M- u  ~6 ?5 L/ V) ]& k4 A# D* c! ?
8 ]: M. ]. G& [& S. [9 e$ Z+ `- x; z
  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行
1 K6 j: D/ L* y' ]& L  ]
3 _& Q5 h8 j. Z% @  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝;
" ^0 L6 a0 r, {( e1 f! L4 s" t& d/ j3 f- G- l; ~
  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之;
$ {. @# D+ n! L
/ s- }5 y3 ~* g6 B( W- G  將資料寫入/var/lib/dpkg/status檔中; 8 E. B# r8 H  d3 Z5 D: K

- E, p8 z$ F. c  @) A  執行preinst腳本(如果有);
4 T9 _- N8 o/ |4 C8 ^' [/ {* i% K- k
  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list; ) t$ S- z; G/ E! s

$ q; p; N" i6 z$ o+ X  運行postinst和extrainst_腳本(如果有);
$ I! V# Z1 {. c1 D8 \; ^, V) G( ^: |" i6 t1 e1 c
  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等);
' }8 B: c2 K3 y( u. I: t" ~; {) z- q' \7 T7 f7 o
  重新載入資料庫並解除鎖定。
) x* z' H: v1 T3 E! K! Q2 ~% ^% _5 B7 M; `) Y3 `7 V1 j
  deb的卸載過程如下: 0 o4 H; m" ~: M. W& v$ V3 @

0 L! K1 J7 [& F% p; Z1 }5 r  讀取資料庫並鎖定;
" R, V4 G  s& T& g; O% F8 E, {3 w5 H0 Q3 j
  根據軟體標識搜尋資料庫;
( X( p' l5 j. o' o5 ?/ F, r2 z
4 R0 @3 g0 W" S8 N5 j+ Z9 E  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載; $ E* c0 A1 l2 [2 J8 R! b8 g
" p$ v  }3 Z! o, b% A, I
  執行prerm腳本(如果有);
5 [) G7 X* A: j. e! ]- ^& U: G+ i
  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾; - I; ~7 B8 ?7 k0 D

. A( [/ b9 b; N3 d  運行postrm腳本; ) p! ~: ]2 `2 v* Q0 j5 l
" ?. u2 G- T: T  p4 G
  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料;
2 P) u1 u( ]. r4 X1 P! Z
2 Q$ T5 h# p; F3 ^  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。
( ]5 Y5 y- {# s' N/ z1 R0 m, w  d" g: D2 H1 Q
  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。 5 x$ ]0 m/ z/ U5 W7 K4 J

. `+ _: ?7 w& k1 S9 l  .ipa $ F, P) c( x" S6 {. o
( u/ x) _, q, Q. V+ U
  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。
1 i  n+ J* q* o, D7 W* r1 {2 e7 N9 B* L) x! }
  完善的更新、後期服務。
6 n1 x4 R9 K9 b# n! n( G, U, i; m" H- |; ~, z
  只能使用最小許可權,保障安全性。
) A1 j* r4 }6 ]" W( i
# l% h0 |! |$ s8 n/ X% K6 r4 m. j  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。
: k* b- }! h& ]
. C9 j* @, ~- z9 q0 B4 C" G  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 $ N2 E4 @0 W1 w

4 X% u& K, \& p: n  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢? - N: o4 \$ w# M6 S3 {9 J
" e+ \5 w, M9 V( I7 n, F
  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等) 9 d2 ?+ a% \( Z! D8 I( M
* n; ?0 w4 Z; ?3 e. I
  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。 9 {. w0 X$ v3 C8 z. p* ]

3 i, X3 D! m. t7 ~+ M9 ^  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。 ( J7 X# I& L. ?, n, A5 }
# ^- ~, T: e$ u% U
  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。 ; D  H, U% v3 X" x* N" G

, \5 K* e; y1 _! t$ K0 Y( I* b  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。 5 O# u* R; h+ v) A  h! o& x( M

9 t. ^& p4 C$ H0 P9 r  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。
% t  w6 w! O& v) J6 h* z! I' r
0 l1 R( z' K" u6 f  S  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。 % A3 r7 ~2 g! p, H

8 ?, r3 X, z7 m7 ~' f8 q5 z8 Y  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。
+ {; d2 M9 B( H6 U2 B
6 ^9 f$ ~! T9 q: ]5 g  至於卸載,三種方法: " x0 C' @* C: m2 V
! G% g$ k% d& w7 k! k2 i% H
  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載;
* d) [; [6 G- t$ J+ C: N# f# e+ _# j! ^% c7 J8 r. s+ B. T
  於iTunes中取消選中,然後同步 ) M* n" e1 r& X& A  q

3 S' T1 Z9 e3 w1 U1 }# \. ]  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。 - l- f  C6 X6 }7 c. s, ~4 J
' v7 B( ]4 V, @" z1 Q" I7 W
  .pxl . s- T7 W. C: f5 `
; ?/ o9 t+ [+ m5 \0 q9 g
  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。 " p4 [) E: C. e' s( M

: v" Y5 V  K7 V6 z  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。
  X. I$ O) e! D/ o) t8 W# }( n/ r; s' G9 v7 }& P
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。 ' ^- u0 t* c. c5 y$ u8 {) ~  D
3 G" X7 |4 w  W" w- x8 b
  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。 " J; w0 z4 ~7 A
+ u, p, k0 _2 H# |; E5 i
  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。
# A% Z, z; P$ ^" k: \' y1 ]9 ?# J- J" E. ~
  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個: 6 `/ S/ h! e' D) F* r
8 X4 u# Y& ^: W3 h
  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體); ; @3 e6 y. f; ?: p  T

$ [! s1 t% S  l1 b, o' N& H( z: {( q  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來; 9 I" G2 C0 u9 I! f
* ], Q" Y0 s5 x  R2 b
  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題; 5 `% u7 M( g8 W+ c

6 `( w/ b9 r  Q0 G( G/ ?3 [  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;
4 V, {3 i# v& B  L; H
4 _3 {, n! p4 |  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決;
' {/ ^4 x1 p. u0 a0 x. L. o- ~& x1 g3 s! S8 z
  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少; , `/ G5 A) w3 s8 e7 q; @1 Y
: L5 ?5 i6 A' r" g
  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。
  p, a- u+ @* Q- T& W& S* O& Q) D% L& k; g; s9 f1 ?, s+ m  S
  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。 6 r; `- |) X9 |+ F  z2 I

7 E& _# n* f( U$ r4 x9 y  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。 ; |  r4 K+ A, f  y/ e! j* s. c

. S8 j2 ^! j6 P4 r1 J9 x! [  總結:
1 ?5 Y8 ]* G3 _4 n! p* Y( V5 I
3 d6 |' l0 ]8 |/ a  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。
( E7 R5 q" E2 o2 \
* `* f: _" C, D) M2 X* J9 }  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。
' b& Z8 V" C; H: Z; v/ f4 ]+ u$ \' u! X- `7 n; ~; o
  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。 % I/ b' {' ?) f% I
9 C/ I3 _$ a/ Q( g

4 u- U: f3 \4 s, j本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 2-8-2025 10:28 , Processed in 0.505066 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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