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

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

[複製鏈接]
發表於 12-9-2010 21:46:02 | 顯示全部樓層 |閱讀模式
作者autopear。
( ?- H- E, ]$ Z+ c7 @& l3 P$ X6 ^" ~+ S
前言:
0 ], C3 `6 ^$ j: s  ^! f
/ `8 v7 I3 m4 U- r2 w  目前iOS平臺上常見的安裝包有三種,deb、ipa和pxl。 4 E% X- R6 Z% p4 f- Y6 V1 K7 o1 S4 m

" R9 ?( k9 Z* q0 W2 V  其中deb格式是Debian系統(包含Debian和Ubuntu)專屬安裝包格式,配合APT軟體管理系統,成為了當前在Linux下非常流行的一種安裝包。進入2.x時代之後有Cydia作者JayFreeman(saurik)移植到iPhone平臺上,一起的還有APT軟體管理系統。 1 L9 Q( ^( {5 c6 o
/ `: f# x) ~$ P( V% _& n9 {
  而ipa格式則是蘋果在iOS平臺上推出的專屬軟體安裝包,在2.0固件開始才正式使用,是目前iPhone/iPodTouch/iPad平臺上唯一的官方安裝包。
; m3 I) y! Z: A5 \5 d0 |$ C+ S/ Y
  而pxl格式則起源於Mac系統上的pkg安裝包,被廣泛應用於1.x固件時代,曾經是iPhone平臺上唯一的軟體安裝包,現在仍在被91等軟體所使用。 . O' q: n! O( V& f
) s5 T6 i( ^* v/ f
  安裝包格式: , U# ~; _) i7 J

* X* r! S( j. |3 s2 N  .deb
0 t# F4 Z4 Z3 {, X; _9 X, r6 t& {. e6 g- _6 u8 i
  deb是Unix系統(其實主要是Linux)下的安裝包,基於tar包,因此本身會記錄檔的許可權(讀/寫/可執行)以及所有者/用戶組。 ' f7 Z- K4 q$ e8 i: @/ q- i

9 o  t* _+ |3 u% F& a  Z  由於Unix類系統對許可權、所有者、組的嚴格要求,而deb格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設置尤其重要。 1 `) q( ?3 O* r, E8 ]) V, w$ t

% o$ E, }4 C$ S$ e: W" u! L  deb包本身有三部分組成: ! X! B: Y" K. }  I+ q; _; e

' O2 W# m, n8 ~8 P# ?: p! k9 r  資料包,包含實際安裝的程式資料,檔案名為data.tar.XXX;
8 T; L3 f1 {3 }( Z& x6 X3 m; D3 n( l9 G( V; ]
  安裝資訊及控制腳本包,包含deb的安裝說明,標識,腳本等,檔案名為control.tar.gz; - I& ]  j! Z8 t# J+ g
7 `2 w5 c  h7 j& ^4 y! W
  最後一個是deb檔的一些二進位資料,包括檔頭等資訊,一般看不到,在某些軟體中打開可以看到。 & _1 a) K4 I0 q# u) ~
& y( Y2 l  ]! |2 j! l7 v1 k5 @
  deb本身可以使用不同的壓縮方式。tar格式並不是一種壓縮格式,而是直接把分散的檔和目錄集合在一起,並記錄其許可權等資料資訊。之前提到過的data.tar.XXX,這裏XXX就是經過壓縮後的尾碼名。deb默認使用的壓縮格式為gzip格式,所以最常見的就是data.tar.gz。常有的壓縮格式還有bzip2和lzma,其中lzma壓縮率最高,但壓縮需要的CPU資源和時間都比較長。 + w" m! d# u/ L' }

6 N- G- X5 k0 Z1 B' @# v4 y  data.tar.gz包含的是實際安裝的程式資料,而在安裝過程中,該包裏的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔所在位置設置好相應的檔/目錄樹。 3 V% n9 M* _* q5 S% e
2 N3 y& x3 ]- x8 N( z: Q; E6 J' l
  而control.tar.gz則包含了一個deb安裝的時候所需要的控制資訊。一般有5個檔: . |3 q" }% @' y% k0 W

* F" @+ o1 x( s; I9 F/ U  control,用了記錄軟體標識,版本號,平臺,依賴資訊等資料;   M! m% u9 E# x3 X: O- }/ E6 r

; I: A( i) ]; o- f+ F  preinst,在解包data.tar.gz前運行的腳本;
6 W& m. a0 `- i4 u& N5 f- ]! K- m' t, Z; @& r# M( ]
  postinst,在解包資料後運行的腳本;
  l8 a+ ~& Z$ e# \, }- I5 T- m! f
: S4 @6 _/ J9 f! _  prerm,卸載時,在刪除檔之前運行的腳本;
/ g- t! I# [# C. X4 Q5 A" P$ b) j* g  w
  postrm,在刪除檔之後運行的腳本;
( H; H- T. E- v; @" V  @
5 u; q+ v  K" P' |  在Cydia系統中,Cydia的作者Saurik另外添加了一個腳本,extrainst_,作用與postinst類似。 8 Z) K" U: @: x5 w: X7 l3 {

$ R5 O+ C0 N6 `  {, F  .ipa , x- M1 c6 X; n8 O  I

5 @( N8 d  |/ ?+ e% m# Q  使用過MacOS的人可能都知道,Mac下的軟體大部分都只有一個.app目錄,裏面包含了程式全部資源和可執行檔。簡單來說,Mac下的軟體就像是Windows下的綠色軟體一樣,解壓後即可使用,不需要安裝,卸載的話也只用刪除程式檔即可(這裏不涉及pkg格式安裝包)。而ipa格式可以視為這種.app軟體的衍生物。 / C. V, W, Z) e( F. `( M( f5 }
. y, `: j( P7 G, k6 z$ h4 [% _
  ipa檔實質是一個zip壓縮包(不是rar或7z包),包含3個元件: 4 f$ \1 M! I& j6 k) C. ^- C
9 t8 z7 s% E; L$ ]) H' _% l& f: y
  payload目錄下的.app目錄,這個是軟體的主程序; ) {1 \8 d( Z/ Z. k0 X

, b$ I0 q* [0 c  ~  iTunesArtwork,實質是一個無尾碼名的png圖片,用來在iTunes中顯示圖示;
$ d0 d% j+ Q! Z% E
% ?( L- V7 \/ H5 D9 _8 Z2 d  iTunesMetadata.plist,記錄購買者資訊、售價等資料。
9 K: S) n0 W: ~- o9 x9 z: F3 @/ V" V; w; L4 A' B5 b
  由於zip包不能記錄許可權和所有者等資訊,所以蘋果規定了ipa的安裝方式,即全部ipa都會解包安裝在/var/mobile/Applications目錄下,全部檔和目錄的所有者及用戶組均設為mobile(ID為501),主程序(可執行檔)的許可權設為0755(所有人都可以執行,但只有所有者可以修改),可執行檔在plist中定義。全部目錄許可權設為0755,而其他所有檔都設為0644(僅所有者可以修改,其餘人只允許讀取,全部人都不允許執行)。   N1 k6 ^7 ^- {' `1 O
/ O7 P$ @3 w9 e' Y9 D; |0 Q- ~
  ipa解包後並非直接放置於Applications目錄下,而是放在一串由隨機碼構成的目錄下,其作用在於,只允許這個軟體運行在一個特定的沙盒(Sandbox)中,不能干擾其他軟體。因此那串隨機碼目錄下,除了ipa本身的三個組件之外,還有三個目錄:
, [% q7 r3 O. M6 l; j" C7 H/ j
; b7 ^" B# Y2 f2 v* k4 `0 y5 J& q  Library,一般是用了儲存設置檔等資料; + _3 _& O7 z( {" O. v; I. I
8 Y, y$ V* m, i( a' f
  Documents,存儲資料,多用了保存存檔; 8 X) f8 g$ e0 m) I) D

; h5 ]2 R, m/ Q  tmp,暫存檔案夾。 % d: c) k6 S) I  S; a0 s+ M

  J# b$ b- X) Q4 E" ^3 r  由於這個軟體只能在這個特定的目錄下運行(當然了,部分程式會調用系統的通訊錄、相機等元件,但仍然是受限制的),從而保證了整個系統的安全性和穩定性。
  w% I3 s* }6 P% x1 q' I& v- I) n
7 f9 E2 S: C$ C+ H+ e  由於Unix系統下對許可權的規定相當嚴格,所以“越權”的行為是絕對不允許的。舉個例子,mobile用戶無權刪除root所有的檔,因為root的許可權高於mobile。所以有些人在修改ipa安裝後的檔時,比如進行漢化或者修改存檔,發現不能刪除乾淨軟體,或不能保存,這是因為刪除時不能刪除root所有的檔,程式本身也無法對root所有的存檔檔進行寫入操作。
$ U/ \: e* C, K6 r0 D
3 U0 C$ _9 x! r0 S  .pxl # N/ h, U( V" L6 C- k" t
( z; r# `, ?( P& d# j
  pxl格式在1.x時代是iPhone平臺上唯一的安裝格式,原因是那時候還沒有Cydia這樣的APT管理軟體,蘋果官方也沒有推出AppStore。由於在1.x時代積累了大量人氣,在接下來的AppStore時代中,pxl格式以其相對簡易的打包和安裝方式,仍然佔據了很大一部分市場。但隨著Installer的停止開發,iBrickr等軟體停止更新,目前唯一還在堅持使用pxl格式的就只剩下91一家了。 * `% o0 k0 G+ @/ h
# [# O3 ]0 A' k# X3 ^; o  i
  pxl安裝包通常包含3個組件: . o) p/ e* M$ }+ R/ l& V! E

" t' }7 ~* l) Y" q) T8 N. T2 q  PxlPkg.plist記錄程式檔的存放位置、所有者、許可權以及軟體標識等資訊;
! D# Z% ]4 W  j/ \+ v8 L- w1 F6 Q# H9 n) A# `3 p* ^
  PkgScript文件夾,存放安裝和卸載腳本; # ^4 W  o- p2 F/ L$ }+ ~
7 {7 y2 ^1 G: U) s  B( f; P
  程式檔。
& Q& u- }+ O5 Q5 K  J
) Z% `" I! a+ m( G' I) i  PxlPkg.plist檔的開頭通常是CFBundleIdentifier,記錄著軟體的唯一標識,以和其他軟體進行區分。RDPxlPackageVersion則記錄軟體版本。RDPxlPackageFireware被用來記錄可以運行的固件版本。其餘還有一些鍵值是用來記錄軟體介紹、網址、作者資訊等資料。 ( d' Z: {7 m- `% t( c: Z: R5 |  d+ z
& ]5 M% @; O/ R& W& t0 e/ E3 L
  除了軟體標識、軟體版本和可用固件版本以外,PxlPkg.plist的核心部分就是RDPxlPackageFiles和RDPxlPackagePostflight兩項。RDPxlPackageFiles記錄了程式檔應該被複製到的路徑,並提供了是否覆蓋的參數:overwrite。而RDPxlPackagePostflight則記錄程式檔應該被賦予的所有者和許可權,分別以chown和chmod命令來實現。另外,對於含有安裝/卸載腳本的pxl來說,還會以sh命令執行相應的腳本Postflight和Preremove。
8 r' B# r; e8 i! {1 l% @( u
+ d" z5 L1 {% `4 o  PkgScript通常包含兩個檔,安裝後執行的腳本Postflight和卸載前執行的腳本Preremove,這兩個腳本就是標準的LinuxShellScript,以sh命令執行。 ' }- P, W! T* t5 F, J: d1 J6 L2 D6 v
, _, }  M8 B# d2 ?  D8 |
  安裝包的特點: 0 g0 _: X; ]" {; ^

6 D7 j* _9 l) R- |9 g7 l  .deb 6 g6 m" b  s0 N  l( R5 }

* q+ W" x) i9 S2 X" F+ t9 ~4 Z  豐富的資源:Cydia上本身就不少,更何況任何格式的安裝包都可以轉換為deb。 / o+ U7 n  L0 ?' M  M  i; Z
! ]8 B# n4 x7 W' b8 C8 H- K
  相對方便的線上購買模式:CydiaStore,不過儘管沒有AppStore的5台設備的限制,但對國內用戶來說,付款方式比較困難。
& R3 m$ w- O5 O3 Y2 m5 f
& N' l/ c/ g9 U( p" k4 Q1 [2 j  破解難度較大,沒有使用AppStore的驗證方式,所以必須將驗證和防破解措施加入程式裏面,這樣就比較難破解,對軟體發展者來說是個好事。 " i$ N( l# H: R; e* X$ `. I" r
( O+ I! k/ j1 `
  完善的Unix檔系統支援:無需以命令設置檔的許可權、所有者和用戶組(當然也可以以腳本來設置)
; i, r4 I# K# s9 d, t. ]" I
  q* Y2 b( e. `$ _. J! U  完善的腳本支援:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在preinst中備份檔案,而在postrm中還原檔
  V! A* E0 V3 [  I1 L" U+ q/ e; d  Y& Q2 ~
  嚴格的依賴關係:deb遵循嚴格的依賴關係(於Depends和Pre-Depends指定),可以確保軟體運行所必需的元件。線上安裝的時候會自動安裝所依賴的套裝軟體。卸載時也很重要,比如套裝軟體A依賴於B,當卸載B的時候會提示A依賴於B,卸載掉B的話會導致A不能用,這樣可以確保系統的完整性和穩定性。 / `4 T1 A# X, _9 X
. E# {, ^! D' E! z
  Conflicts、Replaces、Provides等鍵值的存在可以實現衝突提示或替換其他套裝軟體。 # {$ f  e5 N2 k( Z" J( q

; o- \( J) r3 a  完全許可權:由於deb必須以最高許可權root的身份運行,deb可以對系統任何位置進行操作,換句話說,deb擁有對整個系統的完全控制,因此deb安裝包軟體可以實現很多ipa不能實現的功能。 9 U1 Y1 j4 V; a! y: g: t
: b6 `( Q3 L( s: C! S
  相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。 - v2 ^; m3 l2 ^0 t  C% L; R1 B

( w# H1 X, F4 e5 g: G" u( D. k( T* K  安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過deb稍微複雜一些。 ; e+ V$ H2 T" P% y

6 N0 f' C/ R! H8 L+ g. b  deb的安裝方法大體有5種:
4 b7 A5 v" }  f6 t, A5 R6 Q0 V5 R
* J) T. x1 U. Y0 _& s9 W& [  Cydia或同類APT管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高;
6 ~2 }5 Z/ A# z# ~; ^
9 V0 D3 }3 d$ k+ f& l0 e6 H  命令行中以dpkg-iXXX.deb的形式安裝,好處是可以以通配符一次性安裝多個deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示資訊,缺點是需要命令行軟體的支援,如Putty/WinSCP的控制臺/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示; * E/ t- K* X" I5 n. b( W# [
  f5 `! q8 @2 R1 l7 I
  放置於AutoInstall目錄重啟安裝。該方法實際是Cydia提供的一個啟動腳本,在每次系統啟動時以dpkg命令安裝AutoInstall目錄下的deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況; 9 g6 ~8 G( R; C  I
9 X7 t) Y/ r) |- ]. k; C' f
  利用iFile安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個deb; * F  i$ G9 b0 p" [
$ F0 c: W- F) L& `- m
  用CyderII等軟體來安裝,其原理是類比一個APT軟體管理器來下載相應的deb檔並傳到設備,然後以前面幾種方式來安裝。 : W& T3 c' \. H

' _- ]1 c/ N7 K; Y* ^  總體來說,deb的安裝都是依賴於dpkg-i命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形介面。但除了Cydia安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題:
, y) c; M# i, Z; N
- d3 [  R' ]3 t" T3 ~  不會自行搜索依賴關係,必須手動提供所依賴的deb;
4 s6 ^2 `# I' C: R+ x6 i, ]) d+ M) O& |: ^+ ?4 {4 l- m
  Cydia會讀取安裝腳本裏的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟SpringBoard或設備等等。
& I" o+ _& M  O: P! T+ r% T& P
6 D# Z; {) n1 y+ Z" r  當然了,deb軟體的卸載也比較簡單,有兩種方式:
! ~/ I% p9 n4 \- b7 ^  Z/ u$ J8 e4 z/ Z5 F: \
  Cydia裏卸載,優點是卸載過程和提示資訊很詳細,全圖形介面操作,同時也提供了重新安裝的選項;
& l4 F0 T- S8 y- w% o9 U  s# J! b  E1 a" O9 f
  以dpkg-rPackage_ID命令或dpkg-PPackage_ID命令來卸載(詳情後面會說);
6 ^) A5 M/ b6 v0 E) b9 O7 l2 s2 i$ ?& C& b* g
  Cydelete來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。
2 C. Q4 `- ~) J1 Y* X
3 Q4 t4 [) i& l: ~  其實,不管是安裝還是刪除,都可以才要全手動的方法。即,解包deb之後,自己將檔放到相應位置,然後設置許可權等並執行腳本。但這樣有必要麼? 7 O$ @- \% E6 y2 v- ^3 o6 T& c: p+ {

# q1 \/ P  P* x/ x- z' C  deb的安裝過程如下: 3 s- \& I. [/ l6 d' b% r

, i: K( o+ v" `5 x& \4 ?  讀取資料庫並鎖定,避免同時有兩個安裝程式在運行 : ]: [0 |8 ?- p6 W
) }+ |+ B, q1 J) j
  讀取control中的Package(套裝軟體標識)和版本資訊,並搜索資料庫,若已存在,則卸載之後再安裝; $ L: A$ Y% b8 a1 @' v* N2 U+ X

; _! [) o! K+ I. w, ]. p  檢查Depends,Pre-Depends,Conflicts和Replaces,如果檢測到已存在Conflicts中存在的軟體,則報錯並終止安裝。如未找到Pre-Depends指定的軟體,則報錯並終止安裝。如找到Replaces中指定的軟體,則卸載之;
% R4 D5 D+ y! S+ _/ p! `  B* q5 Z; {+ z8 W+ ^; Y. F$ ]
  將資料寫入/var/lib/dpkg/status檔中; : G* I4 M0 p/ ?

; P/ H: Q2 M' M! C* Q7 s  執行preinst腳本(如果有);
0 W8 ]% [/ p2 {+ h& g( \% Y9 f2 v0 u1 a$ [" r
  解包data.tar.gz,將檔放置於相應位置,並將檔列表寫入/var/lib/dpkg/info/XXX.list; / i  s1 j) Z0 N; g: \

8 |+ t8 z) ^. ^# t5 C5 m  運行postinst和extrainst_腳本(如果有); 3 D' Y0 Z2 v: v) p$ a
6 w4 c) O4 ]# [1 g" N
  如果之前的安裝都沒有出錯,即安裝成功,那麼會在status檔中寫入Status:installokinstalled資訊,否則會寫入其他狀態資料,比如Unpacked(未解包資料)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等); 0 ~/ v: U' M) g: l
+ H" r6 O7 F- ?9 L
  重新載入資料庫並解除鎖定。
4 }$ G+ a  x: r% B  r) z" h' x, Y  d2 Q8 g
  deb的卸載過程如下:
, T5 B* E6 J" B% G$ }) o0 _. `$ N! j0 j7 L
  讀取資料庫並鎖定;
5 w+ g7 x: k% ^/ U/ L' J# j
0 L: a1 I5 W& h; z' S  根據軟體標識搜尋資料庫; ; G- _1 w) T2 {% j% A
% j& Y3 j# H. Y9 D3 n+ n1 V
  檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載; ) Q7 P* A" ^- T/ ^9 l/ ]) V& O
1 D* v0 B( y  ]! D
  執行prerm腳本(如果有); ( `9 n9 C$ n, A7 B$ j0 c
- c; q/ X- f8 Y. b& M
  讀取/var/lib/dpkg/info/XXX.list檔,並刪除list檔中記錄的全部檔和非空檔夾;
% |8 Z8 D9 a: ]2 L+ i3 Q* q
9 @5 S+ |; \2 f6 |- Y4 H  運行postrm腳本; * Z( S) i$ j* }; ^
* `% p, F' L" q! M  H* g
  如果卸載命令是dpkg-r,則保留status中的記錄並改為Status:Notinstalled;如果卸載命令是dpkg-P,則刪除全部資料;
# D& x9 X; y% n/ n, U0 [) ^' H0 e9 A# d7 C$ ?8 B7 G
  如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。 * l& w1 g2 z# t6 B' E/ q

! ?, G6 j' {/ J  由於deb安裝的軟體可能會在運行時在/var/mobile/Documents下放置存檔檔,或在/var/mobile/Library/Preferences下放置設置檔,而這些檔並沒有記錄在list檔裏,所以卸載的時候不會被刪除。
- b1 ]$ V. w! [; L7 o: _+ ~. y% f
( a' a5 E/ V, v4 |: d  .ipa
, Z4 j$ J8 X: v0 s/ G$ i6 `. }, T& m1 R, [! J6 o+ S2 i, K
  豐富的資源:AppStore上那麼多資源,apptrackr等網站也提供了很多破解版。 - ?5 F7 Q. ?- D8 _: f

$ k' I% [: D5 u3 I7 b  完善的更新、後期服務。 - q' T/ o4 I$ Q( j
" _4 i0 l) }/ l- t, [
  只能使用最小許可權,保障安全性。 $ w/ p% b( K: f
$ y4 i% D9 e4 V- d! M7 P, X# [
  不涉及系統級的操作,所以一般不容易造成死機或白蘋果(有些是因為資源消耗太大所以卡死)。
) `6 D2 X6 C/ ~  E( ^  ?: L6 }4 U$ X$ B1 B2 A  E! q
  便捷的安裝方式,無論是直接在設備上用AppStore安裝,還是用iTunes來同步,抑或是用Installous和91這類第三方軟體來安裝,都是很方便快速的安裝方式。 ) `5 ]# R7 I8 `: _

3 B0 n7 E0 D: F4 t9 a; g  超級簡單的卸載方式:還有什麼比只需要點一個X就能卸載更簡單呢?
% u! l' v. V: V" B: P, s
2 I& y, L2 |3 T  z2 _  完全刪除,不會留下任何垃圾檔(如存檔、設置檔等)
4 V' b; P; T8 Z: a& b  b
  _+ K2 D5 n; l# S. z1 j1 r- ~! {  總體來說破解還是比較容易的,但現在越來越多軟體加入了防破解措施。
5 ~/ i* ?; ^- E7 e5 _6 Q+ |. q2 b  b* m& D& f: h: q
  之前提到過,ipa軟體是被安裝在一個類似于沙盒的環境中,除了能對/var/mobile/Media/DCIM目錄(拍照、截圖存放目錄)進行操作,或是調用壁紙、鈴聲、相機等元件,不能對系統進行任何干涉,這樣在最大程度上保證了系統的穩定運行,也不會干擾其他軟體的正常使用。但問題是,由於ipa軟體的許可權很低,想要對系統進行修改,尤其是應用補丁時,ipa就無能為力了。
7 [1 \# [! _1 B
2 @/ V( x+ o  E0 j* L. m& w1 r  ipa軟體官方的安裝方式有兩種,一是在AppStore這個軟體中下載安裝,二是用iTunes同步。
) s2 k& A# c$ D" ^) c  K
" M# W2 ?9 v2 W) j- M$ b: ]7 Z  前者的問題主要是網路問題,網速不好很容易安裝失敗;GPRS之類的上網安裝又很耗流量。後者的問題主要是不能在不同系統下使用(包含不同電腦和同一部電腦上的不同系統),在其他系統上同步會抹掉原有的軟體。當然了,iTunes每次同步時間比較長也是經常被人詬病的。尤其是當安裝軟體比較多的時候,每次同步之前的備份需要很長很長時間,這個很噁心(不過可以直接X掉備份操作)。
6 |4 G( P& R6 z
/ R6 _* V$ n; G0 T6 Z! y  由於以上兩種方式存在一些問題,所以很多人會選擇使用Installous或91來安裝ipa,這也確實是個不錯的選擇。
6 l( C+ v4 E9 i- {. [: g, k+ }1 l3 s, \2 b- f& W
  Installous一般沒什麼問題,但對部分驗證比較嚴格的ipa處理不是很好。雖然Installous基本能代替iTunes,但畢竟不完全等同。最典型的就是Installous安裝Microsoft官方出的LiveMessenger(正版,非破解版)時不能運行。實際上Installous對很多未破解的正版軟體支援不是很好。
  _; t4 {; p3 X3 D3 C* b; Z; A5 h8 Q8 q0 U& X, f
  至於91,經常被人批評。91雖然可以安裝ipa,但除了Installous都有的正版軟體的支援問題外,由於91的安裝機制有缺陷,軟體不能實現多語言,只會使用英文介面,而忽略掉zh_CN.lproj,zh_TW.lproj這些語言包。這對那些用希望使用漢化版的人來說實在是一個悲劇。所以通常是要避免使用91來安裝ipa的。
' E) o: i# b3 a/ }, |
1 g7 O+ m% M0 ]  至於卸載,三種方法: . {1 @7 d" ^! w" U/ U* o2 v" k
1 I# R* l' \, z
  設備上按住圖示直到開始晃動,點擊圖示左上角的X即可卸載;
6 w+ x0 z! @3 b' C+ L, j5 H4 k6 l1 I
  於iTunes中取消選中,然後同步 2 e+ z% X- k+ l& g  c/ i
7 }' g& S( R  P: P# g. G
  找到/var/mobile/Applications下的相應目錄,強行刪除整個檔夾。這個在前面兩種方法無法使用是可以採用(有時候卸載體積太大的軟體,比如超過1G,因為刪除過程太長導致失去回應並刪除失敗。),但這種方法會造成系統的不穩定。除非是確實碰到了問題,否則強烈建議不要使用。
& S- H7 ^9 `7 t3 i/ w  ]
& M( r9 O6 K3 ^* b! i0 S# Z  .pxl 1 g2 r8 n1 [" N

1 U1 r" e0 O& y' P9 O  嚴格來說,pxl格式的資源並不算多,但也不少。現在使用pxl格式的絕大多數都是91的用戶。
5 o. Q/ a, H+ l) a8 u; p5 P& |# U0 b" c' Y
  從時效性上來說,很多軟體(主要是AppStore上的)一被人破解就馬上會被人轉成pxl格式,這樣來說,pxl格式的更新還是不錯的。 . ~1 t, F& u0 H. `! U
- E1 `' Z) C+ Q. Q5 i" k1 ?
  由於91手機助手沒有iTunes同步會抹掉軟體的問題,加上其他一些比較方便的功能,使得很多新手都是從91開始瞭解並熟悉iPhone/iPodTouch的使用。其結果是,pxl格式依賴于91而生存。
% u+ Q( u: T# L
5 J! i) B3 H) O: a  pxl格式的流行也不是歷史的遺物,而是符合市場規律的需求。91助手的便捷的軟體管理方式(尤其是支援WiFi管理),加上免費的旗號,使得pxl格式在新手中很受歡迎。 & k9 i4 x: T! f* G' T0 n3 `7 O! l" S

% |0 J: J' f( j6 A8 ^% B2 j! q2 x: f+ R  實際上,pxl格式和deb格式具有的功能完全一樣。雖然pxl不能記錄檔的許可權等資料,但完全可以用腳本來彌補。即是說,pxl格式和deb格式其實是不相伯仲的。而且因為pxl格式的製作並不需要比較少見的Unix環境,尤其是Debian環境,其本身是優於deb格式的。
3 O! ]# K/ B6 O: Z, |$ C8 n6 B
; ^* _/ O4 C* j8 j  但為什麼現在很多人都經常在說不要使用pxl呢?我個人認為,原因主要有以下幾個: / c# ?$ ]: D" U9 F* J

+ m  w* S: j8 E; e+ B  資源的局限性:除了91公司自己開發的幾個軟體之外,其餘所有軟體都是從deb和ipa轉換而來。如果原版軟體沒破解,pxl無能為力(比如Microsoft官方出的LiveMessenger和Cydia上一眾沒被破解的軟體);
' h* i8 c$ }5 d3 k+ u* A' T: \( h5 c. c
  資源時效性:跟上面一點相似,pxl格式大部分是從其他格式轉換而來,跟原版相比總是會慢一些,尤其是當無法破解時,pxl根本就出不來; 2 v/ b, U+ e; \7 v3 d+ p

# P$ }: s% ]# t0 ?4 u  打包人水準有限:現在很多人都是直接用91助手來打包pxl。對大部分只有一個XXX.app目錄的程式來說一般不會有問題,但若遇見那些對檔許可權等資料有嚴格要求的軟體(比如可執行檔沒有可執行許可權,或是mobile用戶不能改寫root所有的檔等等),或是需要比較複雜的腳本才能運行的軟體,往往pxl製作者並沒有能力去製作一個完善的pxl出來,這樣也導致了許多安裝使用上的問題;
2 [7 i1 Z& h9 e! ]
) U  u4 \& I  `3 d8 G  l  安全性:絕大部分人在製作pxl的時候都習慣用chmod-R命令來將整個XXX.app目錄及其中的全部檔和子目錄設為755/775/777許可權,而這種行為會造成一定的安全隱患。關於這些數位的意思請自行搜索相關資料。這裏簡單說明一下。644屬性表示僅有該檔的所有人才可以進行改寫操作,其餘任何人都只能讀取,任何人都不能執行這個檔。755和775是在644的基礎上加入了可執行許可權,755是該檔所在的用戶組的所有人都可以改寫。而777許可權則標識任何人都可以改寫並執行。由於mobile本身是受限帳戶,如果使用777許可權的話,有機會通過這個漏洞來獲取整個系統的控制權。只不過因為iPhone系統相對封閉,也不太有機會造成損失。但採用775和777許可權是不應該的;   D) W( a4 c6 E5 Z! s
2 n/ D& M% _# e) s
  ipa轉pxl的存檔問題:不少人都有這樣的經歷,在遊戲A存檔之後再進遊戲B,存檔B之後再進A,發現A的存檔已經不在了。原因在於,ipa轉換成的pxl軟體,存檔全部是放在/var/mobile/Documents目錄下,而正好有兩個軟體的存檔檔案名相同(最常見的就是data.sav或save.data),互相改寫之後導致不能讀取。這種問題也發生在ipa轉deb上,而且無法解決;
8 |/ n- O5 F3 W% S2 {! B" @
- s# }. L* `- b9 R9 N6 X9 M  無法完整刪除:卸載pxl格式時,不會刪除存檔檔、配置檔、暫存檔案等資料,長期使用會導致可用空間減少; ( T. _1 |: q# Z- @! D& Q

( `5 o! R( y0 q. {+ p2 r9 ^  在部分機型上存在相容問題:有些機器越獄後並沒有將系統分區中的/Applications目錄轉移到/var/stash的用戶分區中。由於系統分區的可用空間很少(默認500MB,通常可用空間不超過50MB),強行往/Applications裏安裝會導致剩餘空間消耗殆盡或安裝失敗。 ! W) X; A& _7 ?% H' }- }

1 z6 o& ^! K- K% s$ ~  由此可以看出,pxl格式的問題更多不是pxl本身的問題,而是打包者的問題以及安裝方式的缺陷所致。 + |  I/ u! s- A

7 I' F( ~( `5 h8 f: h/ Y  另外要指出的是,pxl最大的提供者,91,經常是轉載他人發佈的軟體(包括網友自己購買破解的,或Cydia上直接下載的)然後當作自己發佈的軟體,對版權問題完全不在意,這樣也引起了很多人,尤其是原發佈者的反感。這種赤裸裸的剽竊行為實在是令人不恥。正因為這樣,很多人是因為不爽91而不爽pxl,這實在是冤枉pxl格式本身了。
3 _8 P8 C3 Q6 t( P2 c# E/ S0 P' O& g7 S
  總結:
# G& y2 l! z. P0 U6 C4 {  A, f1 d2 X6 a
  一般的軟體還是儘量用ipa格式,不要使用ipa轉換成的deb或pxl格式,這樣可以確保相容性和安全性。而在系統級的程式(如SBSettings和輸入法),ipa是絕無能力的,那麼最好的選擇還是deb。pxl作為快被淘汰的格式,還是果斷的放棄比較好。 . O9 p1 `" ^( T% \6 V+ u$ |
  w! g- k1 L5 F3 s
  至於ipa和deb的安裝方式,ipa的安裝首選iTunes同步和AppStore線上安裝,次選Installous,以保證最佳相容性。deb的安裝首選Cydia線上安裝,次選除91外的其他任何安裝方式。
" V9 D$ W  k2 p; ~
( G# @' g* ^! i: @$ r" J  任何情況下都不推薦用91來安裝ipa和deb,因為91的安裝機制並不完善,很容易出問題。
" h1 s: X$ k( X: M
, J* Y# b' h! {0 e5 ~1 i: X3 \3 _  {$ O/ y6 G2 j/ \
本文是原樣轉過來的,甚至字體以及顏色都沒有更改。主要是為了方便機友查閱,也好進行更進一步的操作。感謝威鋒網,感謝作者autopear。
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 1-2-2026 02:14 , Processed in 0.763980 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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