Product SiteDocumentation Site

章 5. 套件系統:工具與基本原則

5.1. 執行檔套件的結構
5.2. 軟體套件中介資訊
5.2.1. 描述:control 檔案
5.2.2. 組態腳本
5.2.3. 校驗,組態檔案清單
5.3. 原始套件的結構
5.3.1. 格式
5.3.2. Debian 內的使用
5.4. 以 dpkg 管理套件
5.4.1. 安裝套件
5.4.2. 移除套件
5.4.3. 查詢 dpkg 的資料庫與檢查 .deb 檔案
5.4.4. dpkg 的日誌檔
5.4.5. 多架構支援
5.5. 與其他打包系統共存
身為 Debian 系統管理員,經常處理 .deb 套件,因為含有一致的功能單元 (應用程式、文件等),強化安裝與維護工作。所以能夠瞭解它們是什麼與如何使用是應該的。
本章介紹 “執行檔” 與 “原始檔” 套件的結構與內容。前者是 .deb 檔案,以 dpkg 執行,後者是原始碼,以及建立執行檔套件的指令。

5.1. 執行檔套件的結構

Debian 套件格式設計成任何 Unix 系統均可用傳統的指令 artar、與 gzip (有時是 xzbzip2) 提取其內容。看起來有點挑剔的屬性卻是跨平台與災難復原的必需品。
舉個例子,您誤刪 dpkg 程式,不能安裝 Debian 套件了。dpkg 本身就是一個 Debian 套件,好像就此和系統再見了... 幸運的,您知道套件的格式並可下載 .deb 檔案來自 dpkg 套件且以手動方式安裝它 (見專欄 工具 dpkgAPTar)。然而不幸的是 artargzip/xz/bzip2 等程式都不見了,必須從別的系統複製該程式 (這些都是自主存在的,沒有相依性,祗需複製就能用)。若碰到更不像話的情況,以上作為都行不通 (遺失更深層的程式庫?),則應試試靜態版的 busybox (於 busybox-static 套件內),它更為自足,還有諸如 busybox arbusybox tarbusybox gunzip 等次指令。
查看 .deb 檔案的內容:
$ ar t dpkg_1.17.23_amd64.deb
debian-binary
control.tar.gz
data.tar.gz
$ ar x dpkg_1.17.23_amd64.deb
$ ls
control.tar.gz  data.tar.gz  debian-binary  dpkg_1.17.23_amd64.deb
$ tar tzf data.tar.gz | head -n 15
./
./var/
./var/lib/
./var/lib/dpkg/
./var/lib/dpkg/parts/
./var/lib/dpkg/info/
./var/lib/dpkg/alternatives/
./var/lib/dpkg/updates/
./etc/
./etc/logrotate.d/
./etc/logrotate.d/dpkg
./etc/dpkg/
./etc/dpkg/dpkg.cfg.d/
./etc/dpkg/dpkg.cfg
./etc/alternatives/
$ tar tzf control.tar.gz
./
./conffiles
./postinst
./md5sums
./prerm
./preinst
./control
./postrm
$ cat debian-binary
2.0
如您所見,Debian 套件的 ar 包括以下三個檔案:
  • debian-binary。這是指明 .deb 檔案版本的純文字檔 (在 2015: version 2.0)。
  • control.tar.gz。這個檔案包括軟體套件的名稱與版本等中介資料。安裝與移除時,套件管理工具可以修正部份的中介資料,以配合機器內已有的套件清單。
  • data.tar.gz。此檔案包括套件所有可以解壓縮的內容;包括可執行檔、文件等。使用其他壓縮格式的套件,可能有不同的名字 (data.tar.bz2 是 bzip2、data.tar.xz 是 XZ)。