问题描述
当我第一次使用aptitude
开始使用Ubuntu时,是’in-thing’,与apt-get
相比有所改进。我是否正确地说apt-get
现在与aptitude
有’caught up’,并且它使用的差别很小(尽管最好选择一个或另一个,并坚持下去)?
而且,如果将aptitude
设置为从默认的Ubuntu安装中删除,那么每个人都应该恢复到apt-get
,特别是在指导对CLI感兴趣的新用户时?
最佳解决思路
据我所知,在10.04,aptitude和apt-get的主要区别是:
-
aptitude
添加显式per-package标志,指示是否自动安装软件包以满足依赖关系:您可以操作这些标志(aptitude markauto
或aptitude unmarkauto
)以更改aptitude处理软件包的方式。apt-get
跟踪相同的信息,但不会明确显示。apt-mark
可用于操作标志。 -
aptitude
将提供在每次移除已安装的软件包时移除未使用的软件包,而apt-get
只会在apt-get autoremove
明确提问或指定--auto-remove
时执行此操作。 -
aptitude
用作单个命令行 front-end,用于apt-get
和apt-cache
中的大多数功能。注意:从16.04开始,有一个apt
命令,其中包含apt-get
和apt-cache
最常用的命令以及一些额外的功能。 -
与
apt-cache
的”search”相反,aptitude
的”search”输出还显示了软件包的安装/移除/清除状态(以及aptitude自己的状态标志)。此外,”install”输出标记正在安装哪些软件包以满足相关性,以及哪些软件包因未使用而被删除。 -
aptitude
有一个(text-only)交互式用户界面。
我个人仅使用aptitude
来管理我的命令行包管理(我从不使用文本UI);我发现它的输出比apt-get
/apt-cache
更可读。
但是,如果aptitude
在Ubuntu上不再是标准配置,则除了在说明和how-to文档中使用apt-get
之外别无选择。
(就我个人而言,我非常失望地看到它在10.10版中消失;尤其是因为与apt-get
相比能力的提升主要在可用性方面,我猜他们认为那些熟悉命令行的人知道如何获得适应能力,而那些谁不使用命令行将不在乎……)
次佳解决思路
我想现在是个人选择的问题。我发现打字aptitude search
对我来说比apt-cache search
更有意义,我喜欢它告诉我在搜索输出中安装了哪些软件包,而不必运行dpkg -l
。
第三种解决思路
之前的apt-get不会正确管理依赖关系,因此即使在卸载了使用它们的包之后,也会导致孤立的依赖关系保留在系统中 – 这不再是这种情况,要移除孤立的依赖关系
sudo apt-get autoremove
aptitude始终做到了这一点并更好地跟踪依赖关系,但是现在包管理员都能完成这项工作。
在Ubuntu上,最好使用apt-get,因为它受到公司的支持和认可,在debian上我会使用aptitude
第四种思路
除了其他答案之外,还值得注意的是apt-get
经常会因为简单的操作而落在其面前,并且它无法处理依赖版本不匹配或者破损的包(虽然它声称可以使用apt-get install -f
修复损坏的包,在我的整个生活中从未看到过这样的工作)。
出于某种原因,我仍默认使用apt-get
,但遇到问题时,我通常最终会用aptitude
解决问题,而aptitude
似乎从未遇到过apt-get
的许多问题。
第五种思路
我会说在我个人的经验aptitude和apt-get有非常相似的功能。
可能会影响用户选择的主要区别在于,aptitude提供了一个ncurses接口,并且它提供了safe-upgrade和full-upgrade的选项,可以派上用场。
我个人总是使用apt-get,并建议新用户也使用apt-get。如你所说,默认情况下,Ubuntu会默认从Ubuntu中删除,这似乎仍然是最好的建议。就好像他们确实想使用aptitude一样,他们需要知道如何使用apt-get来安装aptitude,如果他们想要的话:)