6.2. aptitude
、apt-get
、與 apt
命令
APT 是個原先有圖形介面的大計畫。以包括核心應用程式的程式庫為基礎,且包括第一個前端 — 命令列指令 — apt-get
。apt
是 APT 的第二個命令列指令包括若干處理錯誤的 apt-get
。
還有很多圖形介面的延伸計襩:synaptic
、aptitude
(包括文字介面與圖形介面 — 即使尚未完成)、wajig
等。最被推薦的介面 apt
是本節的範例。然而要注意 apt-get
與 aptitude
的命令列語法極為類似。apt
、apt-get
與 aptitude
還是有區別的,將詳述於下。
APT 可用的套件清單可經由 apt update
更新。連線速度還不錯的話,祗需要幾秒鐘下載若干套件
/來源
/Translation-語系代碼
檔案,隨著 Debian 的發展愈來愈大 (在 main
區塊至少有 10 MB 的資料)。當然,從 CD-ROM 安裝則不需要任何的下載 — 在此情況下,運作速度極快。
有了 APT,以指令 apt install 套件
與 apt remove 套件
,就可以從系統新增或移除套件。以前述的指令,APT 將自動安裝必要的相依性或移除不需要的套件。apt purge 套件
指令可以完全移除套件 — 同時刪除組態檔。
若在
sources.list
內論及多個發行版,可以在套件內分給不同的版本。可以用
apt install 套件=版本
指定套件的版本,但需指出原始的 (
穩定版、
測試版 或
不穩定版) — 與
apt install 套件/發行版
— 等偏好的部份。在此命令下,祗要舊版本仍列在
sources.list
之內,就可以回到套件的舊版本 (若您知道該版本較佳). 否則可以用
snapshot.debian.org
拯救它 (見專欄
進階 舊套件版本:snapshot.debian.org
)。
範例 6.3. 安裝 不穩定unstable 版的 spamassassin
#
apt install spamassassin/unstable
建議使用正常的升級,因為包括最新的安全升級。升級的指令,有 apt upgrade
、apt-get upgrade
或 aptitude safe-upgrade
(當然是跟著 apt update
之後)。在不移除任何套件的情況下,此命令搜尋已安裝套件中可以升級的部份。換句話說,其目標是做到侵入性最小的升級。apt-get
比 aptitude
或 apt
有更多的需求,因為拒絕安裝不曾安裝過的套件。
apt
會選擇最新的版本號 (除了來自 實驗版 與 穩定反向植入版,其預設忽略版本號)。若指定 測試版 或 不穩定版 於 sources.list
內,則 apt upgrade
會把 穩定版 系統切換至 測試版 或 不穩定版,這些都不是您要的。
搜尋升級的套件時需把特定的發行版告知 apt
,採用 -t
或 --target-release
選項,然後是發行版的名稱 (如:apt -t stable upgrade
)。為了避免每次使用 apt
都需指定版本,可以把, you can add APT::Default-Release "stable";
加在 /etc/apt/apt.conf.d/local
之內。
重要的升級,諸如 Debian 的主要版本升級,需使用 apt full-upgrade
。在此指令內, 即使刪除若干老舊的套件或安裝新的相依性也會把 apt
完全升級。也是每日於T Debian 不穩定版 使用的命令以及逐日追蹤其變動。它的運作極簡單不需說明:APT 的名聲來自其功能性。
不同於 apt
與 aptitude
,apt-get
不知道 full-upgrade
命令。反而,您應使用 apt-get dist-upgrade
(”升級發行版”),此古老且知名的命令也被 apt
與 aptitude
接受給讀者相當的便利。
除了已提及的組態細目,還可在 /etc/apt/apt.conf.d/
資料夾內增加 APT 的其他組態。讓 APT 告知 dpkg
忽略由 DPkg::options { "--force-overwrite"; }
引發的錯誤。
若祗能經由代理伺服器近用網頁,新增像這樣的一列
Acquire::http::proxy "http://yourproxy:3128"
。對 FTP 代理伺服器,用
Acquire::ftp::proxy "ftp://yourproxy"
。更多的組態選項,參考
apt.conf(5) 手冊頁以
man apt.conf
命令 (手刪的詳情,見
節 7.1.1, “手冊頁面”) 查看。
組態 APT 最重要的層面之一是管理每個套件來源的優先性。例如,從 測試版、不穩定 或 實驗版 中選取一個或多個套件。可以指令每個套件的優先性 (視其版本或發行版,同個套件可以有多個優先性)。這些優先性將影響 APT 的行為:每個套件總是選擇最優先的版本 (除非舊於已安裝的版本或優先性小於 1000)。
APT 設定若干預設的優先性。已安裝套件版本的優先性是 100。未安裝版本預設優先性為 500,若是另個釋出的目標則可跳至 990 (以 -t
命令列選項或 APT::Default-Release
組態指令調整)。
於 /etc/apt/preferences
檔案內新增款目的方式,指名受影響套件名稱、版本、出處及其新的優先性。
APT 永遠不會安裝舊版的套件 (就是套件的版本編號小於已安裝的套件),除非其優先性高於 1000。APT 總是安裝優先性最高的套件。若兩個套件的優先性相同,APT 安裝最新的 (其版本編號較高)。若同版本的兩個套件優先性相同但內容不同,APT 安裝還沒有安裝的版本 (包括沒有遞增修訂編號的套件,通常是需要的)。
更具體地說,永遠不會安裝優先性小於 0 的套件。沒有安裝其他版本時,將安裝優先性在 0 與 100 之間的套件。其他發行版沒有更新版本或可用的版本時,安裝優先性在 100 與 500 之間的套件。在目標發行版內沒有更新的版本時,安裝優先性在 501 與 990 之間的套件。已安裝的版本不是更新時,安裝優先性在 990 與 1000 之間的套件。即使使強迫 APT 降級也要安裝優先性高於greater than 1000 的套件。
APT 檢查 /etc/apt/preferences
時,首先考量最精確的款目 (通常是指定的套件),然後是較通用的 (包括發行版內的所有套件)。存在多個通用款目時,選用第一個。可用的選項包括套件名稱及其原始檔。每個套件來源包括 釋出
檔案,由 APT 與 套件
檔案同時下載。指定來源 (通常 “Debian” 的官方鏡射站套件,但也可以是個人的或機構的第三方典藏所)。給予發行版名稱 (通常是 Debian 提供標準發行版內的 穩定版、測試版、不穩定版 或 實驗版) 及其版本 ( 8 就是 Debian 的 Jessie)。接著以實例檢視其語法。
暫時假設您祗需用到 Debian 穩定版的套件。除非特別指明,不會安裝其他版本的套件。可以在 /etc/apt/preferences
檔案內寫入以上的款目:
a=stable
設定發行版的名稱。o=Debian
限制來自 “Debian” 的套件。
假設若干伺服器內的程式使用 Perl 5.14 且不希望被升級為其他版本。您需用到此款目:
此組態檔的參考文件在手冊的 apt_preferences(5),以 man apt_preferences
命令就可看到。
apt
是很奇妙的工具,可從其他發行版提取套件。例如,安裝 穩定版 系統之後,或許想要在不偏離系統原來狀態下,試試 測試版 或 不穩定版 的套件。
混用不同版本套件出問題時,Even if you will occasionally encounter problems while mixing packages from different distributions,
apt
可以處理得極為恰當把風險降到最低。最好的方法是把所有的發行版置於
/etc/apt/sources.list
檔案內 (某些人總是置入三個發行版,不過還是要記得
不穩定版 是有經驗使用者的專屬。) 且在
APT::Default-Release
參數中設定偏好的發行版 (見
節 6.2.3, “系統升級”) 。
假設 穩定版 是您的參考版本,但是 測試版 與 不穩定版 也列在 sources.list
檔案內。在這個情況下,您可使用 apt install 套件名稱/testing
安裝來自 測試版 的套件。若因相依性未滿足而安裝失敗,可以在 測試版 內加入 -t testing
參數。同樣的方式也適用於 不穩定版。
在此情況下,除了已經被其他發行版升級之外,升級 (
upgrade
與
full-upgrade
) 祗在
穩定版 內完成:其他的升級在各自的發行版內處理。稍後以 APT 預設的優先性說明此行為。請使用
apt-cache policy
(見專欄
秘訣 apt-cache policy
) 檢視指定的優先性。
每件事都圍繞在 APT 祗處理高於或等於已安裝版本號套件的前提下 (假設 /etc/apt/preferences
還未強迫優先性高於 1000 的某些套件)。
假設從Let's assume that you have installed version 1 of a first package from 穩定版 安裝第一個套件的第一版且從and that version 2 and 3 are available respectively in 測試版 與 不穩定版 安裝同套件的第二版與第三版水。已安裝的版本優先性為 100 但在but the version available in 穩定版 (相同的) 優先性為 990 (因為它是目標釋出版的一部份)。在 測試版 與 不穩定版 的套件其優先性為 500 (預設不安裝版本的優先性)。獲選者為優先性 990 的版本1。套件 “留在 穩定版 內”。
另個套件的例子,已從 測試版 安裝版本 2。版本 1 在 穩定版 且版本 3 在 不穩定版。因為優先性小於已安裝的版本,所以版本 1 (優先性為 990 — 小於 1000) 已作廢。祗剩下優先性為 500 的版本 2 與版本 3。在此情況下,APT 選擇較新的版本,即使用 不穩定版。若不要已安裝自 測試版 的套件,可以移殖至 不穩定版,必須指定來自於 不穩定版 優先性小於 500 (例如 490) 的套件。修改 /etc/apt/preferences
檔案即可:
Package: *
Pin: release a=unstable
Pin-Priority: 490
apt
的必要功能之一是經由相依性追蹤已安裝的套件。這些套件稱為 “自動”,且通常包括其程式庫。
有了這些資訊後,移除套件時,套件管理者可以計算該等不再需要的自動套件 (因為沒有 “手動安裝” 套件相依於他)。apt-get autoremove
會清除該等套件。aptitude
與 apt
沒有這個命令:辨認之後,前者自動移除它們,而使用者不需手動執行後者命令。所有的情況下,在清除訊息中列出所有影響到的套件。
把套件標記為自動是個好習慣,不需要時就被自動移除。
apt-mark auto 套件名稱
會標記該套件為自動而
apt-mark manual 套件名稱
則不標記。
aptitude markauto
與
aptitude unmarkauto
作用相同祗是功能較多 (見
節 6.4.1, “aptitude
”)。命令互動介面的
aptitude
也可檢視多個套件的 “自動旗標”。
自動安裝套件出現在系統內。係由於從命令列取得該等資訊,可使用 aptitude why 套件名稱
(apt
與 apt-get
沒有類似的功能):
$
aptitude why python-debian
i aptitude Recommends apt-xapian-index
i A apt-xapian-index Depends python-debian (>= 0.1.15)