deb

deb

DEB是Debian軟體包格式的檔案擴展名,跟Debian的命名一樣,DEB也是因Debra Murdock而得名,她是Debian創始人Ian Murdock的太太。

基本介紹

  • 中文名:deb
  • 外文名Debian
  • 定義Debian軟體包格式的檔案擴展名
  • Debian創始人:Ian Murdock
  • 套用類型:蘋果iPhone套用格式
  • 運行目錄:/var/mobile/Documents
  • 套用 :越獄後iOS軟體及MeeGo
軟體包,套用格式,安裝包格式,安裝包特點,安裝方法,卸載方法,軟體包格式,

軟體包

Debian包是Unixar的標準歸檔,將包檔案信息以及包內容,經過gzip和tar打包而成。
處理這些包的經典程式是dpkg,經常是通過Debian的apt-get來運作。
通過Alien工具,可以將deb包轉換成rpm、tar.gz格式。
deb包在Linux作業系統中類似於windows中的軟體包(exe),幾乎不需要什麼複雜的編譯即可通過滑鼠點擊安裝使用。此外,deb廣泛套用于越獄後iOS軟體及MeeGo(含Maemo軟體)中。

套用格式

deb 格式是 Debian 系統(包含 Debian 和 Ubuntu )專屬安裝包格式,配合 APT 軟體管理系統,成為了當前在 Linux 下非常流行的一種安裝包。進入 2.x 時代之後有 Cydia 作者 Jay Freeman(saurik) 移植到 iPhone 平台上,一起的還有 APT 軟體管理系統。

安裝包格式

deb 是 Unix 系統(其實主要是 Linux )下的安裝包,基於 tar 包,因此本身會記錄檔案的許可權(讀/寫/可執行)以及所有者/用戶組。
由於 Unix 類系統對許可權、所有者、組的嚴格要求,而 deb 格式安裝包又經常會涉及到系統比較底層的操作,所以許可權等的設定尤其重要。
deb 包本身有三部分組成:數據包,包含實際安裝的程式數據,檔案名稱為 data.tar.XXX;安裝信息及控制腳本包,包含 deb 的安裝說明,標識,腳本等,檔案名稱為 control.tar.gz;最後一個是 deb 檔案的一些二進制數據,包括檔案頭等信息,一般看不到,在某些軟體中打開可以看到。
deb 本身可以使用不同的壓縮方式。tar 格式並不是一種壓縮格式,而是直接把分散的檔案和目錄集合在一起,並記錄其許可權等數據信息。之前提到過的 data.tar.XXX,這裡 XXX 就是經過壓縮後的後綴名。deb 默認使用的壓縮格式為 gzip 格式,所以最常見的就是 data.tar.gz。常有的壓縮格式還有 bzip2 和 lzma,其中 lzma 壓縮率最高,但壓縮需要的 CPU 資源和時間都比較長。
data.tar.gz包含的是實際安裝的程式數據,而在安裝過程中,該包里的數據會被直接解壓到根目錄(即 / ),因此在打包之前需要根據檔案所在位置設定好相應的檔案/目錄樹。
而 control.tar.gz 則包含了一個 deb 安裝的時候所需要的控制信息。一般有 5 個檔案:control,用了記錄軟體標識,版本號,平台,依賴信息等數據;preinst,在解包data.tar.gz 前運行的腳本;postinst,在解包數據後運行的腳本;prerm,卸載時,在刪除檔案之前運行的腳本;postrm,在刪除檔案之後運行的腳本;在 Cydia 系統中,Cydia 的作者 Saurik 另外添加了一個腳本,extrainst_,作用與 postinst 類似。

安裝包特點

豐富的資源:Cydia 上本身就不少,更何況任何格式的安裝包都可以轉換為 deb。
相對方便的線上購買模式:Cydia Store,不過儘管沒有 App Store 的5台設備的限制,但對國內用戶來說,付款方式比較困難。
破解難度較大,沒有使用 App Store 的驗證方式,所以必須將驗證和防破解措施加入程式裡面,這樣就比較難破解,對軟體開發者來說是個好事。
完善的 Unix 檔案系統支持:無需以命令設定檔案的許可權、所有者和用戶組(當然也可以以腳本來設定)
完善的腳本支持:5個腳本依照安裝和卸載的先後順序執行,可以提供更多選擇。比如備份還原操作,可以在 preinst 中備份檔案,而在 postrm 中還原檔案
嚴格的依賴關係:deb 遵循嚴格的依賴關係(於 Depends 和 Pre-Depends 指定),可以確保軟體運行所必需的組件。線上安裝的時候會自動安裝所依賴的軟體包。卸載時也很重要,比如軟體包 A 依賴於 B,當卸載 B 的時候會提示 A 依賴於 B,卸載掉 B 的話會導致 A 不能用,這樣可以確保系統的完整性和穩定性。
Conflicts、Replaces、Provides 等鍵值的存在可以實現衝突提示或替換其它軟體包。
完全許可權:由於 deb 必須以最高許可權 root 的身份運行,deb可以對系統任何位置進行操作,換句話說,deb 擁有對整個系統的完全控制,因此 deb 安裝包軟體可以實現很多 ipa 不能實現的功能。
相對簡單的獲取方式(線上或離線)和安裝方式,也不用擔心在不同機器上同步會刪掉程式的問題。
安裝相對簡單:其實無論是哪種安裝包,安裝方法都不算很複雜,只不過 deb 稍微複雜一些。

安裝方法

Cydia 或同類 APT 管理軟體線上安裝,這個是最佳的安裝方式,因為通常無需考慮依賴關係,但缺點是對網路的要求比較高;
命令行中以 dpkg -i XXX.deb 的形式安裝,好處是可以以通配符一次性安裝多個 deb,而且也可以直接看到腳本的運行狀況和安裝成功/失敗的提示信息,缺點是需要命令行軟體的支持,如 Putty/WinSCP的控制台/iSSH/MobileTerminal,很多人也不熟悉命令行下的操作。另外,安裝完後會不顯示圖示;
放置於 AutoInstall 目錄重啟安裝。該方法實際是 Cydia 提供的一個啟動腳本,在每次系統啟動時以 dpkg 命令安裝 AutoInstall 目錄下的 deb,好處是不需要命令行操作,缺點是必須要重啟,有些甚至要重啟兩次,也會出現不顯示圖示的情況;
利用 iFile 安裝,好處是圖形化操作,桌面會顯示圖示,缺點是不能一次安裝多個 deb;
用 Cyder II 等軟體來安裝,其原理是模擬一個 APT 軟體管理器來下載相應的 deb 檔案並傳到設備,然後以前面幾種方式來安裝。
總體來說,deb 的安裝都是依賴於 dpkg -i 命令來安裝,只不過有些是在命令行下輸入命令,有些是提供了圖形界面。但除了 Cydia 安裝一種方式之外,其餘幾種安裝方式都存在一些共有的問題:
不會自行搜尋依賴關係,必須手動提供所依賴的 deb;
Cydia 會讀取安裝腳本里的一些特殊語句,比如僅在全新安裝時執行而不在升級時執行,安裝完成後重啟 SpringBoard 或設備等等。

卸載方法

Cydia 里卸載,優點是卸載過程和提示信息很詳細,全圖形界面操作,同時也提供了重新安裝的選項;
以 dpkg -r Package_ID 命令或 dpkg -P Package_ID 命令來卸載;
Cydelete 來卸載,優點是可以直接在桌面上卸載有圖示的軟體,但對那些沒有圖示的無能為力。
安裝過程 讀取資料庫並鎖定,避免同時有兩個安裝程式在運行
讀取 control 中的 Package(軟體包標識)和版本信息,並搜尋資料庫,若已存在,則卸載之後再安裝;
檢查 Depends, Pre-Depends, Conflicts 和 Replaces,如果檢測到已存在 Conflicts 中存在的軟體,則報錯並終止安裝。如未找到 Pre-Depends 指定的軟體,則報錯並終止安裝。如找到 Replaces 中指定的軟體,則卸載之;
將數據寫入 /var/lib/dpkg/status 檔案中;
執行 preinst 腳本(如果有);
解包 data.tar.gz,將檔案放置於相應位置,並將檔案列表寫入 /var/lib/dpkg/info/XXX.list;
運行 postinst 和 extrainst_ 腳本(如果有);
如果之前的安裝都沒有出錯,即安裝成功,那么會在 status 檔案中寫入 Status: install ok installed 信息,否則會寫入其它狀態數據,比如 Unpacked (未解包數據)、Failed-config(腳本未能成功執行)、Half-installed(安裝失敗等);
重新載入資料庫並解除鎖定。
卸載過程 讀取資料庫並鎖定;
根據軟體標識搜尋資料庫;
檢查是否有軟體依賴於待卸載的軟體,如果有則提示,並中斷卸載;
執行 prerm 腳本(如果有);
讀取 /var/lib/dpkg/info/XXX.list 檔案,並刪除 list 檔案中記錄的全部檔案和非空資料夾;
運行 postrm 腳本;
如果卸載命令是 dpkg -r,則保留 status 中的記錄並改為 Status: Not installed;
如果卸載命令是 dpkg -P,則刪除全部數據;
如果卸載過程沒有錯誤的話,重新讀取資料庫並解除鎖定。
由於 deb 安裝的軟體可能會在運行時在 /var/mobile/Documents 下放置存檔檔案,或在 /var/mobile/Library/Preferences 下放置設定檔案,而這些檔案並沒有記錄在 list 檔案里,所以卸載的時候不會被刪除。

軟體包格式

MeeGo系統基於Linux架構,同樣採用deb格式軟體包。
N9識別以QT開發工具主導的deb檔案;meego上網本識別以linux caneflip的rpm和qt的deb檔案,但由於界面不同,N9的程式不能很好地適應在桌面系統上。

相關詞條

熱門詞條

聯絡我們