Product SiteDocumentation Site

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

6.1. 寫入 sources.list 檔案
6.1.1. 語法
6.1.2. 穩定版 使用者的典藏庫
6.1.3. 供 測試版/不穩定版 使用者的典藏庫
6.1.4. Using Alternate Mirrors
6.1.5. 非官方資源:mentors.debian.net
6.1.6. 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” 表示來源套件。
The second field gives the base URL of the source (combined with the filenames present in the Packages.xz files, it must give a full and valid URL): this can consist in a Debian mirror or in any other package archive set up by a third party. The URL can start with file:// to indicate a local source installed in the system's file hierarchy, with http:// to indicate a source accessible from a web server, or with ftp:// for a source available on an FTP server. The URL can also start with cdrom: for CD-ROM/DVD-ROM/Blu-ray disc based installations, although this is less frequent, since network-based installation methods are more and more common.
最後一個欄位的語法取決於典藏所的結構。最簡單的例子,就是指向來源 (通常以 “./” 標示無次資料夾 — 套件就在指定的 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/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free

## Debian mirror

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

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

# Stable backports
deb http://deb.debian.org/debian stretch-backports main contrib non-free
deb-src http://deb.debian.org/debian stretch-backports main contrib non-free
This file lists all sources of packages associated with the Stretch version of Debian (the current Stable as of this writing). We opted to name “stretch” explicitly instead of using the corresponding “stable“ alias (stable, stable-updates, stable-backports) because we don't want to have the underlying distribution changed outside of our control when the next stable release comes out.
大部份套件來自包括極少更新的所有套件 “基礎典藏庫” (每兩個月有一次的 “釋出點”)。其他的典藏庫不夠完整 (未包括所有的套件),不過可以透過 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 個月更新的版本。建議的更新 典藏庫是儲放更新資料的地方 (由穩定版釋出經理管轄)。
此典藏所包括前一節的安全與穩定更新文件,以及其他的文件,因為套件維護者也需修護不需立即釋出的重要錯誤。
Anyone can use this repository to test those updates before their official publication. The extract below uses the stretch-proposed-updates alias which is both more explicit and more consistent since jessie-proposed-updates also exists (for the Oldstable updates):
deb http://ftp.debian.org/debian stretch-proposed-updates main contrib non-free

6.1.2.4. 穩定回移

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

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

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

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

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

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

# Stable
deb http://deb.debian.org/debian stable main contrib non-free
deb-src http://deb.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://deb.debian.org/debian experimental main contrib non-free

6.1.4. Using Alternate Mirrors

The sources.list examples in this chapter refer to package repositories hosted on deb.debian.og. Those URLs will redirect you to servers which are close to you and which are managed by Content Delivery Networks (CDN) whose main role is to store multiple copies of the files across the world to deliver them as fast as possible to users. The CDN companies that Debian is working with are Debian partners who are offering their services freely to Debian. While none of those servers are under direct control of Debian, the fact that the whole archive is sealed by GPG signatures makes it a non-issue.
Picky users who are not satisfied with the performance of deb.debian.org can try to find a better mirror in the official mirror list:
But when you don't know which mirror is best for you, this list is of not much use. Fortunately for you, Debian maintains DNS entries of the form ftp.country-code.debian.org (e.g. ftp.us.debian.org for the USA, ftp.fr.debian.org for France, etc.) which are covering many countries and which are pointing to one (or more) of the best mirrors available within that country.
As an alternative to deb.debian.org, there used to be httpredir.debian.org. This service would identify a mirror close to you (among the list of official mirrors, using GeoIP mainly) and would redirect APT's requests to that mirror. This service has been deprecated due to reliability concerns and now httpredir.debian.org provides the same CDN-based service as deb.debian.org.

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

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

6.1.6. 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://deb.debian.org/debian
security http://security.debian.org
approx runs by default on port 9999 via a systemd socket and requires the users to adjust their sources.list file to point to the approx server:
# Sample sources.list pointing to a local approx server
deb http://apt.falcot.com:9999/security stretch/updates main contrib non-free
deb http://apt.falcot.com:9999/debian stretch main contrib non-free