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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。
8 B$ M; J( ?3 n6 h
/ k( O) s- d4 z- [# L前言: ; _4 ^1 D: i; D
- j* I& D# r; c6 }5 H, O& X
  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。 . N% z) M( g$ c' C

5 h* i7 P: V/ T/ W2 l  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。
, l/ w& L! L, Z8 ]% u8 J7 t% K4 R* q& k4 X9 D3 n0 B) Y
  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。 % t8 ~; G' L+ }$ h# X4 R
% q% {& Z0 y' I' x. R( f3 g6 p- [
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。
2 I5 D! N, d& f
. C+ J( Y7 U; X; Y/ K8 q, l  安裝包格式:
! O0 ~. c7 e1 @3 O( b9 C. f
: _- ?) g8 R# y% V3 O6 m  .deb
) Y  M5 J; G4 t- a( s1 v* n/ f, G$ L9 K! d
  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。
' b' x3 ^& {, s2 g2 ?
+ }$ L3 s) I8 z0 e# {  F  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。
& r! u; h/ |( `  W/ G/ F+ W
; L1 [( H7 @+ i; E' H  deb包本身有三部分組成: % i  z8 d  Z/ Z
8 X( i5 m7 a0 d$ H1 c1 K3 g
  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX; ; w4 w/ K& Z# R4 q1 _+ o
' P9 S' C, l' J5 I! g# a, ?# V
  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz; ' f( s- M& Z4 a4 }* k
6 ?7 O* J5 n" F# E( x  w
  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。 7 S) b: {( @) [, H% B

5 s: j. c% J& f0 E  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。 ) Y8 S' \" n) J; }/ Z' q+ R
6 j$ J# A. W) J6 P" q
  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。 , g0 h" F1 }. G' J' w
% f7 b, s  n! z
  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔:
! v- Z# R7 s. C- @1 s) i3 _9 q$ U0 [# n
  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料; $ V& p9 a7 `* v0 R0 ~

. M9 }2 l& J) M  preinst,在解包data.tar.gz前運行的腳本; : F0 V- i7 I. h+ i% s$ E
. J7 S4 X9 j5 e% Z  T. }8 {2 t6 y2 V9 C
  postinst,在解包資料後運行的腳本;
+ v" `5 t# p- A( I! `4 E) r' L: n( k- X- j
  prerm,卸載時,在刪除檔之前運行的腳本; 9 |: d1 ?* O5 @8 U
+ ^2 Y0 ?/ Y: B3 I
  postrm,在刪除檔之後運行的腳本;
9 f$ @& v* l, i9 f: R
, ]6 C; Y( M* N; Q7 m4 B8 q  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。 ) E( k# _: T! @  x

8 Y* c% K2 c, G  .ipa 3 D' P; z; q! c. E

1 m" @, y1 q, ?- p/ C9 e/ B, Z  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。 ( f/ A" u* b" _% H/ P
) o2 T3 [& b, u/ u
  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件:
# l& C& q' m, r* e0 c+ J5 P+ K: M4 k  Y8 }7 z8 R
  payload目錄下的.app目錄,這個是軟體的主程序;
( w9 }6 E+ |$ q7 j4 X3 N0 [) t, v3 x# u5 F4 Y, p1 R
  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示; 8 C, F  n7 i+ @) v& ]- k

* e5 l9 K6 X8 l* i1 g  [+ t  iTunesMetadata.plist,記錄購買者資訊、售價等資料。 / v8 |/ c. o5 L. ]5 e& i9 P
' A7 r9 e- M8 X
  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。
3 _6 G! h+ R0 g2 h
$ [  C* R% h! H5 @# `( b( h; d3 W  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄:
$ D* t' y' e; b* f
' k" E) P/ e9 K1 _$ ^" ^  Library,一般是用了儲存設置檔等資料;
- V4 \% _* @3 o% d% R" X, Z  H+ b" x0 x( h/ B8 g
  Documents,存儲資料,多用了保存存檔; - H/ z* A6 E* U
1 ]/ i7 ~; n9 {; T6 g: A( B
  tmp,暫存檔案夾。
2 Y2 p0 q( g$ k, b1 W/ m8 K4 E  v  f+ S3 v# b& b1 H
  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。 8 F* a5 R' [. {: \# x$ y
. K! B- i% ^0 d6 I+ X
  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。
$ r% O/ l+ [* d" V9 F- x: Y  C( h. b1 V: J
  .pxl
% @! z9 O) V9 K( m
6 }! C3 `& x- h% |# P+ d  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。
  K# g( v( z4 I' {) e% X. x6 t2 Y: s8 S
  pxl安裝包通常包含3個組件:
' ]' `0 O0 x0 |) L7 L' n% f1 L/ e  k6 K9 Y. j3 L
  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;
6 C8 H  z6 V0 g: c) r8 J" f7 R+ Q& Q1 H- ?$ t- ]
  PkgScript文件夾,存放安裝和卸載腳本;
6 Z2 W+ j+ g" K" Z" l, N1 l
" z9 \# i5 A/ g" s9 n  程式檔。 - Q9 R  Z5 o; d8 I

! K" T# Q2 A9 C! W/ S  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。 0 k" ~7 Z4 D; G

; u9 I& A9 K0 o" P$ k: I5 q  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。
# k4 Y% F4 s8 M- i, A% A: L' U
3 v. V/ M2 E0 N) ]" g  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。 % g% O$ s% W; V( \+ k9 E

. \7 g1 j# E3 B2 |- F  Y  安裝包的特點:
9 @* f( e* ]6 @
9 e7 e7 G( v# I0 R' c; z8 d  .deb
+ ^2 Q9 l: V# n7 V/ s0 G$ t! g, U8 k% m' f5 Y) \0 O2 R1 ~
  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。 0 o; x. A) q! @- ?! u* F- @
* w" x; d/ c( e2 w9 g  M$ l8 i
  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。
% x2 D+ x! u6 K; k5 `  O0 y% o( x9 B, I; |' z
  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。
8 m) I. K9 ?7 C! N: O2 y1 w# H
3 K' u6 ]* n$ L1 M) B. s  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)
* ~2 u; i) Y6 V
* |4 S  Q' b- Q; I  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔 * z. @6 m7 _( m2 ^3 b
: r% c+ K+ i0 Z8 _, M4 C
  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。 : y3 b) I3 O! }( e& o
$ Y. z$ d) P$ M+ c6 s0 A! Q
  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。
( p, L/ B2 W- W" U; e+ {
: J7 g9 x5 [3 x) N( U7 g2 S  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。 & Z1 Z7 B# ^' G+ I% o+ d/ Q) E
) k) u. ]  l2 N; k
  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。 % W0 X9 W  W& B! m% e4 J* j# o1 {4 e3 w
* Z: ^; J. ?( w9 n# c' q
  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。
* o5 J0 N5 [/ h- u6 j+ Y
. C' O/ J( Z! P- ?8 j  P  deb的安裝方法大體有5種: + o2 \; u$ b# D! R2 T( D& u- T

& _6 x4 X6 {7 e: U8 N1 X  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高;
/ J% }# r, _/ S* t$ Q7 l2 S# G/ ^; Y5 w0 m- }+ O  a
  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示; 0 `" j* b+ U; v
5 n, B" R( K' L
  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況; 2 W9 Y3 W! S) T4 }* |" @
) n# \2 X& N' H% x. L' \7 Z% P
  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb;
- T9 Z1 a- ]$ O* O# b
7 x- u6 Q: m! X! A% G4 I  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。 + e* F9 g8 T* ^( ]& s0 h' }2 w7 \+ V
, X! T5 v0 F& g/ E: m4 ]
  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題: 2 X! l: N% S1 q7 i& E

# x& O1 v  |" J" R5 j2 x  不會自行搜索依賴關係,必須手動提供所依賴的deb; 7 [. `9 \: v  i- r! T$ d
- @7 J! A2 i5 n
  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。
! O7 y6 A( @* Z" B& N6 ?- }  [6 ^/ Q4 \" N0 H# e3 ]2 Q' Y3 I
  當然了,deb軟體的卸載也比較簡單,有兩種方式:
3 Z# r$ k* m+ i0 Z/ W9 b, P
$ w& \3 q7 j1 u+ i  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項; 6 O  o/ A: G6 I( U+ n
" l  q( M  x/ j. x
  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說);
6 u* Z, e( ~3 n% ?  o1 x9 T- O. f' r7 i2 c1 q
  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。
: e# d3 J0 W; [9 f  L
1 k2 e1 N. c: M3 v: a  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼?
% x" {/ \$ _3 O7 L3 X: b4 y$ i3 A5 ?$ }, X6 x4 o  Z6 m
  deb的安裝過程如下: - J9 c9 N: a: @: Q

/ S$ ~4 W: z+ ~; I  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行
8 m6 w# x% _" I9 d3 J3 @+ G; j" r4 e4 c+ g' v* h- C
  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝; 7 p6 g( N9 X; y2 ]2 b6 H5 a& W, e

: _$ Z& Q4 D( e  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之; 2 z" V" P. W3 w( h1 r9 d* _
! m8 v# r7 {6 |& k: {6 l4 N2 i. |- h
  將資料寫入/var/lib/dpkg/status檔中; " c; |0 U# G  ]

7 [  r9 Z' z8 y  執行preinst腳本(如果有); 6 [  u, B2 T" G6 p% S
$ y; u) o) p# F! ?. b4 [4 ]' X
  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list; * V! @" p/ u* P/ e; K- F/ _
+ g: q1 _9 B! N$ {1 @' K
  運行postinst和extrainst_腳本(如果有);
; S8 X2 ?/ v% b" z' B& D. r6 O
3 ]- D% e6 o( Q) `7 q  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等); # i, ~5 y1 a* u2 \; s6 u/ S
* v# \. U9 x/ a
  重新載入資料庫並解除鎖定。
& I4 q3 \1 u+ W2 o6 u& x" e+ \
4 K; Y7 f5 \9 X9 M. [  deb的卸載過程如下:
! S( s1 W4 B+ @* y
5 ~, U% O8 V- }" j1 O  讀取資料庫並鎖定; * y3 o2 j# y! L, g" U3 G" ^, {* f

0 j9 D0 _5 y5 d; ?4 m0 s  根據軟體標識搜尋資料庫; 5 W, e/ L1 O5 e  l! C6 \- P

! [- v/ n6 Q& y/ {2 q, f; V( T- R  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載;
1 @8 U; Y' \# b, i. q% z% d0 j; v) w
  執行prerm腳本(如果有); 1 C# j/ M. `& ^8 Q! |( l

) B& j6 v- |5 {7 K* ?6 Q  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾; 1 t0 K$ s; w4 K7 C. c

3 P& F- w; k7 q  運行postrm腳本; : w# Z7 D, M  h; g' T* T' {) k

( O; W, t! z# A4 w' D$ R  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料;
  L1 }0 X  F0 W" K% ^% N7 h$ I" K( K. P
/ B/ l% g) }& \5 X$ Z" p  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。 ) H( k  ~; b8 z: \/ N

0 h% v) K% J% X# b% n5 f0 |, G  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。 7 n0 n: o' w9 f

: [3 b( ?" M1 E5 I) M  d  .ipa
' _' F  H8 d; i2 F! F" H& U2 c, U$ t. F
  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。
0 }( I2 @) S  F( t5 U' z6 v( H( }
& p! V) }: u' @& B0 W" J0 u  完善的更新、後期服務。
* M: Y4 s& ^: S5 u
% g( X4 v$ z9 V0 Y  v  只能使用最小許可權,保障安全性。 : |9 m. m  Y: I1 @% S1 `* K
) F! e6 `* C# A/ @1 `3 u/ x
  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。 " `2 B$ Y9 L) p# q) O/ j

7 }- I+ _( j6 F3 P" q" _& B. \3 ]& X  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 $ t0 r' T. T5 x: h( M1 o; |9 {( V
2 {+ s0 B: K1 J8 u
  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢? 2 u, b/ x* C- ^* l( \

2 R- R! Z5 E1 L0 X  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等)
- D- m- }% a; I/ S
+ A* a! B/ D, u  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。 ( d7 x# d- m% y* r1 x9 ^  R
* ]/ @4 i8 {" E$ S4 [/ H# N
  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。 4 K8 ?  h& l! M. v% M

- T3 u' j; x8 M& p5 T/ n% l  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。
. l) J4 j3 Q* D% T) o/ k
$ O' R, t* O7 S- |0 L, l- J  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。 + a3 N) m! A+ C- ^
4 |0 J9 o% H' j* O! Y/ @7 k  Y
  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。   z  S  U# w; `" w1 b

' A, k( I* a1 Q% N+ h- s0 Q  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。
6 t2 E( J- T' z9 a
$ m0 C1 w- |, J$ \' n  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。
+ y; y9 t! q' [; F# m' e
2 P" J2 U: z* @. Q3 n) k  至於卸載,三種方法: ' H$ s' X* X* N# q: U

/ _' T# r4 g; h# q  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載;
  B3 S5 Y, [, M6 T& {5 p
& I& A+ }' X( R  於iTunes中取消選中,然後同步
5 s. V6 T& G7 e' m0 t7 q4 i, q
# y! p6 b, i& [  _, \/ u  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。   j2 y: t) B! m$ Z- v+ K
! q% \, B6 O/ R2 N0 b) i9 d
  .pxl 3 i% _4 A  k, @% m& l  H9 Z

" A- E  h0 e( N* s  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。
5 c. ]. ^5 g. a: d! `, l9 R+ b" b5 X- \6 L0 z9 l
  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。 . N  z/ l5 S% H6 ^* C! E* y
1 P: ^" `5 ?# E6 P. I# y  o
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。
! u' C5 ~7 z9 a
3 z. t1 u8 m2 L; {2 S  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。
  T! |- F6 U; f% k0 o) p
$ K( S( \. u0 J  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。
! K7 ?6 y! k/ `8 B6 O
  q0 u$ @. ?+ J# C5 l; [  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個: # p+ ^) D+ _& O3 t( o% }1 ^
5 b1 g' E9 }3 d) x
  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體); # ~7 O3 L( \0 I3 U9 ?

- K% E. Z  M- s3 M3 F  t  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來;   ?% b) s5 i' ]; R9 D1 N
/ N  g6 F$ ~+ ?9 Y3 K% C8 g
  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題; + J! A: S! ?/ W$ L4 M9 O9 H4 I
5 W( }( b% L  w2 E4 @
  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;
' L8 [3 U, J9 J1 l
& j! j. x' {7 c$ ]  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決;
: ~+ ^- P- P' n% G4 E- ~! W  G- H/ \! i# E
  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少; & p  E0 ~2 k; m# J

1 g  M  H- X. B( M  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。 ; ]/ [% a  A" i* V* h$ c9 y

( B' N% t4 a2 ]% z& [# N" V, O  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。
# k% r9 `/ g3 A; q- r" C- {$ i( H; w" o5 _1 u, D/ M
  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。 2 Z: w7 q6 `  n; W8 _7 P0 y

4 X5 [3 t' `' N4 c6 e1 Y  總結: 9 L4 n! d) G6 n- B- Z- _
: J( \! K4 ~# F; {  F6 y
  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。
# N! Y, H( W, x: R0 S* `3 P7 X7 d* \' l) X. j! T; s' r: d
  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。 : _: ^" ]3 Z4 V) ^  ~, w& x
5 ]( g; U4 g2 {& {3 _
  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。
2 y  c, t5 u' Z7 F% D( i% e6 B4 X9 f& C
, D- c& y- k5 t( W
本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 9-6-2025 01:29 , Processed in 0.319928 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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