“apt-get”和“aptitude”之間的真正區別是什麼?(“wajig”怎麼樣?)
我知道
apt-get
和aptitude
都是 Debian 派生 Linux 上的命令行包管理界面,有不同的選項,但我仍然有些困惑。在引擎蓋下,他們不是使用相同的 APT 系統嗎?為什麼 Debian 維護這些並行工具?(額外的問題:wajig到底是什麼?)
最明顯的區別是它
aptitude
提供了一個終端菜單界面(很像終端中的 Synaptic),而apt-get
沒有。僅考慮每個命令行界面,它們非常相似,並且在大多數情況下,您使用哪一個並不重要。兩者的最新版本將跟踪哪些軟體包是手動安裝的,哪些是作為依賴項安裝的(因此有資格自動刪除)。事實上,我相信甚至最近,這兩個工具已經更新為實際上共享相同的手動安裝和自動安裝包的數據庫,所以你使用 apt-get 安裝一些東西然後 aptitude 想要解除安裝它的情況大多是這樣的過去。
有一些小的區別:
- aptitude 將自動刪除符合條件的軟體包,而 apt-get 需要單獨的命令來執行此操作
- upgrade與dist-upgrade的命令已分別重命名為可能更準確的名稱safe-upgrade和full-upgrade。
- aptitude 實際上不僅執行 apt-get 的功能,還執行它的一些配套工具,例如 apt-cache 和 apt-mark。
- aptitude 的搜尋查詢語法略有不同(與 apt-cache 相比)
- aptitude 有為什麼和為什麼不命令告訴你哪些手動安裝的軟體包阻止了你可能想要採取的行動。
- 如果您要執行的操作(安裝、刪除、更新軟體包)導致衝突,aptitude 可以建議幾個潛在的解決方案。apt-get 只會說“對不起,戴夫,我不能讓你這樣做。”
還有其他一些小的差異,但這些是我能想到的最重要的差異。
簡而言之,aptitude 更恰當地屬於 Synaptic 和其他更高級別的包管理器前端的類別。它恰好也有一個類似於 apt-get 的命令行界面。
獎金回合:什麼是 wajig?
還記得我提到的那些“伴侶”工具,比如
apt-cache
和apt-mark
嗎?好吧,它們有很多,如果你經常使用它們,你可能不記得哪些提供了哪些命令。wajig
是解決該問題的一種方法。它本質上是一個調度程序,是所有這些工具的包裝器。sudo
必要時也適用。當您說 時wajig install foo
,wajig 會說“好的,install
由提供apt-get
並需要管理員權限”,然後它會執行sudo apt-get install foo
. 當您說 時wajig search foo
,wajig 會說“好的,search
由提供apt-cache
且不需要管理員權限”,然後執行apt-cache search foo
. 如果你使用 wajig 而不是 apt-get、apt-mark、apt-cache 等,那麼你永遠不會遇到這個問題:$ apt-get search foo E: Invalid operation search
如果您想知道 wajig 在幕後做什麼,它使用哪些工具來實現特定命令,它有
--simulate
和--teaching
模式。我經常使用的兩個 wajig 命令是
wajig listfiles foo
和wajig whichpkg /usr/bin/foo
。