
我知道 和apt-get
都是aptitude
Debian 派生的 Linux 上的命令列包管理介面,具有不同的選項,但我仍然有點困惑。在幕後,他們不是使用相同的 APT 系統嗎?
為什麼 Debian 要維護這些平行工具? (額外問題:到底是什麼瓦吉格?
答案1
最明顯的區別是aptitude
提供了終端選單介面(很像終端機中的 Synaptic),而apt-get
沒有。
僅考慮兩者的命令列介面,它們非常相似,並且在大多數情況下,您使用哪一個並不重要。兩者的最新版本都將追蹤哪些軟體包是手動安裝的,哪些是作為依賴項安裝的(因此有資格自動刪除)。事實上,我相信最近,這兩個工具已經更新為實際上共享手動安裝包和自動安裝包的相同資料庫,因此您使用 apt-get 安裝某些東西然後 aptitude 想要卸載它的情況主要是過去。
有一些細微的差別:
- aptitude 會自動刪除符合條件的軟體包,而 apt-get 需要單獨的命令才能執行此操作
- 命令為升級與遠端升級已重新命名為可能更準確的名稱安全升級和全面升級, 分別。
- aptitude 實際上不僅執行 apt-get 的功能,還執行它的一些配套工具,例如 apt-cache 和 apt-mark。
- aptitude 的搜尋查詢語法略有不同(與 apt-cache 相比)
- 資質具有為什麼和為什麼不命令告訴你哪些手動安裝軟體包正在阻止您可能想要執行的操作。
- 如果您想要執行的操作(安裝、刪除、更新軟體包)導致衝突,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
。
答案2
我常常想知道自己。維基百科亮點主要區別特徵是 aptitude 具有全螢幕文字模式(curses)介面。事實上,您可以將大多數apt-get
命令參數與其aptitude
本身一起使用,這只是一個設計決策,目的是讓apt-get
使用者更容易移動到命令參數aptitude
,反之亦然。
我從未使用過wajig
,但文件表明它只是一個腳本,它知道您是否向其傳遞文件deb
(當它運行時dpkg
)或apt
包名稱(當它運行apt-get
時)。你能嘗試一下,看看是否是這樣的嗎?
當然,真實的差別在於:
gaurav@fern:~$ apt-get moo
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
...."Have you mooed today?"...
gaurav@fern:~$ aptitude moo
There are no Easter Eggs in this program.
答案3
aptitude 是從控制台進行套件管理的首選程序,適用於 Debian 中的套件安裝和套件或系統升級。
以下是該工具及其相對 apt-get 的功能的概述: http://www.debian.org/doc/FAQ/ch-pkgtools.en.html#s-aptitude
所以,我的建議是 apt-get install aptitude :)
答案4
基於@Gaurav 的回答,兩個包管理器中的復活節彩蛋非常有趣!
siddhartha@siddhartha-dev:~$ apt-get moo
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
..."Have you mooed today?"...
siddhartha@siddhartha-dev:~$ aptitude moo
There are no Easter Eggs in this program.
siddhartha@siddhartha-dev:~$ aptitude -v moo
There really are no Easter Eggs in this program.
siddhartha@siddhartha-dev:~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
siddhartha@siddhartha-dev:~$ aptitude -vvv moo
Stop it!
siddhartha@siddhartha-dev:~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
siddhartha@siddhartha-dev:~$ aptitude -vvvvv moo
All right, you win.
/----\
-------/ \
/ \
/ |
-----------------/ --------\
----------------------------------------------
siddhartha@siddhartha-dev:~$ aptitude -vvvvvv moo
What is it? It's an elephant being eaten by a snake, of course.
siddhartha@siddhartha-dev:~$ aptitude -vvvvvvv moo
What is it? It's an elephant being eaten by a snake, of course.
siddhartha@siddhartha-dev:~$ aptitude -vvvvvvvv moo
What is it? It's an elephant being eaten by a snake, of course.
等等。