Product SiteDocumentation Site

章 6. 維護與更新:APT 工具

6.1. 寫入 sources.list 檔案
6.1.1. 語法
6.1.2. 穩定版 使用者的典藏庫
6.1.3. 供 測試版/不穩定版 使用者的典藏庫
6.1.4. 非官方資源:mentors.debian.net
6.1.5. Debian 套件快取代理
6.2. aptitudeapt-get、與 apt 命令
6.2.1. 初始化
6.2.2. 安裝與移除
6.2.3. 系統升級
6.2.4. 組態選項
6.2.5. 管理套件優先性
6.2.6. 在多個發行版工作
6.2.7. 自動追蹤已安裝的套件
6.3. The apt-cache 命令
6.4. 前置:aptitudesynaptic
6.4.1. aptitude
6.4.2. synaptic
6.5. 檢查套件真偽
6.6. 升級至下個穩定發行版
6.6.1. 建議程序
6.6.2. 處理升級後的問題
6.7. 保持系統在最新狀態
6.8. 自動升級
6.8.1. 組態 dpkg
6.8.2. 組態 APT
6.8.3. 組態 debconf
6.8.4. 處理命令列介面
6.8.5. 神奇的組合
6.9. 搜尋套件
Debian 之所以受到系統管理員的歡迎,是因為安裝容易且更新也極為簡單。這個優點歸功於 Falcot 公司管理者熱情研究的 APT 程式。
APT 是 Advanced Package Tool 進階套件工具的縮寫。它的 “進階” 之處在於對套件的管理方法。它並不個別簡單地評估每個套件,而是將套件視為整體,根據現有的和相容的套件組合,產生最佳的套件 (根據其相依性)。
需給 APT “套件來源清單”:即 /etc/apt/sources.list,列出 Debian 套件的典藏所 (或 “來源”)。APT 將匯入各來源節套件清單。下載 Packages.xz 或以不同的壓縮方法 (如 Packages.gz.bz2) 檔案 (使用執行套件時) 與 Sources.xz 或其他 (使用原始套件時) 然後分析其內容,就能完成該作用。已安裝舊版時,APT 可下載其差異更新之 (見專欄 秘訣 增量式升級)。

6.1. 寫入 sources.list 檔案

6.1.1. 語法

/etc/apt/sources.list 內的每列就是一個來源,包括三個以空格區隔的部份。
第一個欄位指示來源類型:
  • deb” 表示為執行套件,
  • deb-src” 表示來源套件。
第二個欄位是來源的 URL (包括在 Packages.gz 內的檔名,必須給全名與有效的 URL):可以是 Debian 鏡射站或第三方的任何套件檔案。URL 可以使用 file:// 表示從在地的資料夾內讀取,以 http:// 表示來自網站的來源,或以 ftp:// 表示取自 FTP 伺服器的來源。雖然很少發生,但URL 也可以使用 cdrom: 表示為 CD-ROM/DVD-ROM/Blu-ray 磁碟式安裝,大部份情況下都是網路安裝。
最後一個欄位的語法取決於典藏所的結構。最簡單的例子,就是指向來源 (通常以 “./” 標示無次資料夾 — 套件就在指定的 URL 內) 的次資料夾 (含結尾的斜線)。比較常見的狀況是,像 Debian 鏡射站的典藏所,每個發行版有自己的元件。在這些情況下,選定發行版 (以 “代碼” 指名 — 見專欄 社群 布魯斯·佩倫斯,另類的領導者 — 或對應的 “組” — 穩定測試不穩定),啟用 (選擇 Debian 鏡射的 maincontrib、與 non-free) 組成元件 (或區)。
cdrom 條目表示您有此 CD/DVD-ROMs。相對於其他條目,CD-ROM 並非經常存在,一次祗能塞入一張。基於這個理由,以不同的方式管理此來源,需用到 apt-cdrom 程式,及 add 參數。要求將光碟插入光碟機,並找尋 套件 檔案。以此等檔案更新可用套件的資料庫 (通常以 apt update 命令完成它)。然後,APT 才能要求插入包括其套件的光碟。

6.1.2. 穩定版 使用者的典藏庫

以下是標準的 sources.list 供系統執行 穩定 版 Debian:

範例 6.1. 供 Debian 穩定版使用者的 /etc/apt/sources.list

# Security updates
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

## Debian mirror

# Base repository
deb http://ftp.debian.org/debian jessie main contrib non-free
deb-src http://ftp.debian.org/debian jessie main contrib non-free

# Stable updates
deb http://ftp.debian.org/debian jessie-updates main contrib non-free
deb-src http://ftp.debian.org/debian jessie-updates main contrib non-free

# Stable backports
deb http://ftp.debian.org/debian jessie-backports main contrib non-free
deb-src http://ftp.debian.org/debian jessie-backports main contrib non-free
此檔案列出與 Jessie 版 Debian (撰寫此文時最新的 穩定 版) 有關的套件來源。我們選擇 “jessie” 之名而不是對應的 “穩定“ 別稱 (穩定穩定更新穩定-反向),因為下個穩定版釋出時,不要讓他們不受控制。
大部份套件來自包括極少更新的所有套件 “基礎典藏庫” (每兩個月有一次的 “釋出點”)。其他的典藏庫不夠完整 (未包括所有的套件),不過可以透過 APT 更新其主套件 (含新版的套件)。接下來的內容將解釋管理這些典藏庫的目的和規範。
請注意,指定版本的套件可能同時存在多個典藏庫,將取用列在 sources.list 檔案前面的典藏庫。所以,非官方的來源多半放在此檔案的最後面。
補充說明,本節有關 穩定版 的內容同樣適用於 舊穩定版,因為後者祗是較舊的 穩定版,仍然同步維護中。

6.1.2.1. 安全更新

安全更新的內容通常不在 Debian 鏡射站內,而在 security.debian.org (在 Debian 系統管理者 維護的小機器內)。包括給 穩定版 使用的安全更新檔案 (由 Debian 安全團隊與套件管理者共同準備)。
此伺服器同時提供給 測試版 用的安全更新但不常發生,因為該等給 測試版 的更新傾向經由 不穩定版 的更新流程處理。

6.1.2.2. 穩定更新

穩定更新與安全無關,但認為在下個穩定釋出點前值得使用者更新它。
此典藏庫包括已修正的嚴重錯誤檔案,這些嚴重錯誤可能是在釋出前無法修正或在後續更新後才出現的。視其急迫性,也可以納入必須更新的套件… 諸如 spamassassin 的垃圾郵件偵測規則、clamav 的病毒資料庫、或全球日光節約時間規則 (tzdata)。
實務上,此典藏庫是由穩定版釋出經理挑選的 建議更新 典藏庫的子集合。

6.1.2.3. 建議更新

出版之後,穩定 發行版是唯一固定 2 個月更新的版本。建議的更新 典藏庫是儲放更新資料的地方 (由穩定版釋出經理管轄)。
此典藏所包括前一節的安全與穩定更新文件,以及其他的文件,因為套件維護者也需修護不需立即釋出的重要錯誤。
正式出版之前,每個人都可使用此典藏庫測試該等更新。以 jessie-proposed-updates 取用更明確與一致的資料,因為 wheezy-proposed-updates 也擁有相同的容 (供 Oldstable 更新使用):
deb http://ftp.debian.org/debian jessie-proposed-updates main contrib non-free

6.1.2.4. 穩定回移

穩定回移 典藏庫儲存 “回移的套件”。係指重新編譯供舊發行版使用的套件,通常係供 h穩定版 使用。
發行版有點過時後,很多軟體計畫就釋出無法與 穩定版 (祗修訂最嚴重的問題,諸如安全問題) 整合的新版軟體。因為 測試版不穩定版 太危險了,套件維護者祗好重新編譯新版的軟體供 穩定版 使用,把可能的不穩定限制在少數指定的套件。
大部份的 Debian 鏡射站有 穩定回移 典藏庫。但 Squeeze 的回移仍典藏藏在指定的伺服器 (backports.debian.org),且要求使用 sources.list 的條目才能取用:
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
來自 穩定回移 的回移總是取材自 測試版 的套件。才能確保所有安裝的回移可順利地升級至下個 Debian 穩定版。
即使此典藏庫提供較新版的套件,APT 不會安裝他們,除非管理者明確指示這麼做 (或已經從指定的回移安裝稍早的版本):
$ sudo apt-get install 套件/jessie-backports
$ sudo apt-get install -t jessie-backports 套件

6.1.3. 供 測試版/不穩定版 使用者的典藏庫

這裡是標準的 sources.list 供執行 Debian 測試版不穩定版 之用:

範例 6.2. /etc/apt/sources.list 檔案供 Debian 測試版/不穩定版 使用者

# Unstable
deb http://ftp.debian.org/debian unstable main contrib non-free
deb-src http://ftp.debian.org/debian unstable main contrib non-free

# Testing
deb http://ftp.debian.org/debian testing main contrib non-free
deb-src http://ftp.debian.org/debian testing main contrib non-free

# Stable
deb http://ftp.debian.org/debian stable main contrib non-free
deb-src http://ftp.debian.org/debian stable main contrib non-free

# Security updates
deb http://security.debian.org/ stable/updates main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ testing/updates main contrib non-free
APT 利用 sources.list 檔案安裝來自 不穩定版 的套件。若非必要,則使用 APT::Default-Release 設定 (見 節 6.2.3, “系統升級”) 指示 APT 從另個版本 (多半使用 測試版) 選取套件。
應該納入這些典藏庫,即使一個也該這麼做。測試版 使用者將感謝管理者從 不穩定版 中挑選修改過的套件,當 測試版 受到錯誤的干擾時。反過來說,被無預期錯誤干擾的 不穩定版 使用者,可能降級至他們 (若以此工作) 使用的 測試版 套件。
穩定版 的內容較有爭議,但可接觸被發展版移除的套件。同時也確保取得尚未被修改的最新套件。

6.1.3.1. 實驗性 典藏所

實驗性 典藏所的套件是所有 Debian 鏡射站的內容,包括因為品質關係尚未被納入 不穩定版 的套件 — 通常是發展中的軟體版本或前置版 (alpha、beta、待釋出…)。修改過的套件多少有點問題,可送至此處。在進階使用者的協助下,維護者努力找出該等問題。經過第一階段後,把套件移至 不穩定版,更多的使用者以更詳細的方式測試它。
不在乎系統崩盤並有能力自行修復的使用者,就會取用 實驗性 的套件。使用者匯入此等套件並測試其功能、檢查是否滿足其需求。這就是 Debian 的訴求,加入 APT 的 sources.list 內,並不表示該套件可順利使用,應加入這一個行:
deb http://ftp.debian.org/debian experimental main contrib non-free

6.1.4. 非官方資源:mentors.debian.net

有些進階使用者自行編譯軟體建置非官方的 Debian 套件來源庫 (Ubuntu 以 Personal Package Archive 服務建置),這些程式設計師把自己的心血公開,有些 Debian 發展者也提供自已的預釋出版。
mentors.debian.net 網站很有趣 (雖然它祗提供原始套件),因為它它的套件係供 Debian 官方發展者檢視或由志願者提供未經整合程序的套件。這些不保證品質的套件,允許並鼓勵使用者在正式使用之前,檢查並測試之。
安裝套件就是把根權限給其創造者,因為他們決定執行該等腳本的內容。Debian 官方的套件由志願者建立,並封閉套件以確保其完整。
一般來說,對來源不明且不在 Debian 官方服器的套件應小心:評估您對建立者的信任程度,並檢查套件的完整性。

6.1.5. Debian 套件快取代理

當機器的整個網路都組態成使用同個遠端伺服器下載同個更新套件,管理者就知道中介性質的代理做為在地網路的快取,是最有益的。(見專欄 術語 快取)。
可以用 "標準" 代理組態 APT (見 節 6.2.4, “組態選項” 給 APT 使用,把 節 11.6, “HTTP/FTP Proxy” 給代理端),但 Debian 的生態系統以更好的選擇解決此問題。本區列出的專用軟體比純快取更聰明,因為他們使用特定構架的 APT 典藏所 (例如他們知道檔案是否已過時,且在持有時調整其內容)。
apt-cacherapt-cacher-ng 就像一般快取伺服器般運作。APT 的 sources.list 不變,但 APT 組態成像是快取。
換句話說,approx 就像是 “鏡射” 至高層 URL 的遠端 HTTP 伺服器典藏所。高層典藏所與遠端 URL 典藏所是儲存在 /etc/approx/approx.conf
# <name> <repository-base-url>
debian   http://ftp.debian.org/debian
security http://security.debian.org
approx 預設經由 inetd (見 節 9.6, “The inetd 超級伺服器”) 在埠號 9999 執行,並且要求使用者調整其 sources.list 檔案指向 approx 伺服器:
# Sample sources.list pointing to a local approx server
deb http://apt.falcot.com:9999/security jessie/updates main contrib non-free
deb http://apt.falcot.com:9999/debian jessie main contrib non-free