我知道apt-getaptitude都是Debian衍生的Linux上的命令行软件包管理接口,具有不同的选项,但是我仍然有些困惑。他们不是在使用相同的APT系统吗?

为什么Debian维护这些并行工具? (奖金问题:瓦吉格到底是什么?)

评论

我知道它不是您问题的正确答案,但是为什么您不能尝试突触?它非常用户友好,并会自动下载并安装依赖项。您的系统上没有gnome吗?

我有偏见,但我认为Ubuntu SE网站上的这个问题可能是相关的。

重复:unix.stackexchange.com/questions/244/apt-get-or-aptitude。

@Wim因为这个问题的Wajig部分,我决定将244合并到这个问题中,而不是反过来

值得注意的是,已将aptitude从下一版本的Ubuntu的默认安装中删除(尽管以后始终可以使用apt-get安装它)

#1 楼

最明显的区别是aptitude提供了一个终端菜单界面(类似于终端中的Synaptic),而apt-get没有提供。

仅考虑每个命令行界面,它们非常相似,并且在大多数情况下,使用哪一个都不重要。两者的最新版本都将跟踪手动安装了哪些软件包,以及哪些软件包作为依赖项安装(因此可以自动删除)。实际上,我相信甚至在最近,这两个工具已更新为实际上共享手动安装和自动安装的软件包的同一数据库,因此,在使用apt-get安装某些东西然后又有能力要卸载它的情况下,大多数情况是过去。

有一些细微的差异:


aptitude会自动删除符合条件的软件包,而apt-get需要一个单独的命令来这​​样做
升级与dist-upgrade的命令已分别重新命名为aptitude,它们分别是更准确的名称安全升级和完全升级。
aptitude实际上不仅执行apt-get的功能,而且还执行某些功能。随行工具,例如apt-cache和apt-mark。
aptitude用于搜索的查询语法略有不同(与apt-cache相比)
aptitude具有why和why-not命令来告诉您手动安装的软件包阻止了您可能要执行的操作。
如果您要执行的操作(安装,删除,更新软件包)引起冲突,则能力可以建议一些可能的解决方案。 apt-get只会说“对不起Dave,我不能让你那样做。”

还有其他小的差异,但是那些是我能想到的最重要的差异简而言之,aptitude更恰当地属于Synaptic和其他更高级别的包管理器前端类别。它恰好也有一个类似于apt-get的命令行界面。

奖励回合:什么是wajig?

还记得我提到过那些“伴侣”工具,如apt-cache和apt-mark吗?好吧,其中有很多,如果您经常使用它们,您可能不记得哪个提供了哪些命令。 wajig是解决该问题的一种方法。实际上,它是一个调度程序,是所有这些工具的包装。必要时它也适用sudo。当您说wajig install foo时,wajig会说“好吧,installapt-get提供,并且需要管理员权限,”它运行sudo apt-get install foo。当您说wajig search foo时,wajig会说“好吧,searchapt-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 foowajig whichpkg /usr/bin/foo

评论


我对aptitude的一个大问题是,它需要很长时间才能在软件包名称上获得制表符的完成(例如,aptitude install linux-im tab),而apt-get的速度非常快。 apt-get家庭中似乎存在一些缺少能力的缓存。

–levesque
2012年9月11日在1:49



aptitude还具有强大的aptitude搜索功能,可用于功能非常强大的搜索模式。您有能力重新安装。您还可以使用ncurses(终端菜单)界面来准备复杂的软件包操作,例如部分升级,删除一个软件包,冻结另一个软件包,升级该软件包,然后可以在单个操作中执行...哦,它有一个交互式冲突解决程序。

– Tortor
13年3月21日在23:52



@toror圣牛,使用aptitude的ncurses界面准备命令,这一次就把aptitude卖给了我! (经过多年的思考,才是明智的选择,但要从肌肉记忆中输入apt-get)

– TJ Ellis
13-10-16在16:19

...并且aptitude还具有aptitude下载package-name来获取软件包.deb文件!

– Tortor
13-10-18在14:44



我发现的只是一件事,它不是aptitude,而是在apt-get中,这就是apt-get --compile source package-name。 apt-get build-dep软件包名称存在,但我认为aptitude build-dep软件包名称可以做得更好。

–安德斯
2014年10月10日14:13

#2 楼

我经常想知道自己。 Wikipedia强调了主要区别特征是aptitude具有全屏文本模式(curses)界面。您可以在apt-get本身上使用大多数aptitude命令参数的事实只是一个设计决定,目的是使apt-get用户更容易移至aptitude,反之亦然。

我从未使用过wajig,但是该文档表明,这只是一个脚本,它知道您要传递的是deb文件(运行dpkg时)还是apt软件包名称(运行apt-get时)。您可以尝试一下,看看它到底是干什么的吗?

当然,真正的区别是:

评论


没有!才能更多。您忘了将无尽的-v标志放到moo上。 (您可以转到-vvvvvv)

– Umang
2010年8月19日下午6:51

不要忘记所有重要的超级牛力量,它具有apt-get的能力,但不具备能力。 (尝试--help都可以)

–德罗伯特
2010年8月20日在18:51

lmao。即使@ryan的答案要复杂得多,这也是一个有趣的答案;)

– Michael Trouw
2015年5月1日23:09

#3 楼

aptitude是Debian中从控制台进行软件包安装和软件包或系统升级的首选软件包管理程序。

此处概述了该工具及其在apt-get中具有的功能:
http://www.debian.org/doc/FAQ/ch-pkgtools.en.html#s-aptitude

因此,我的建议是仅使用apt-get install aptitude:)

评论


发行说明说,现在建议使用apt-get替代升级,以进行升级。

– jrdioko
2011年2月9日在19:55

是的,但仅此而已。否则,它们被认为是平等的,但是与apt-get相比,智能性还具有许多更高级的功能,例如搜索和全屏模式。

–安德斯
2014年10月10日14:18



由于某种原因,使用了aptitude来安装emacs,并且不看它就删除了gdm!因此,目前将使用apt-get,但对智能非常好奇。

– TomFirth
2014年3月26日上午8:18

#4 楼

aptitude记住显式请求了哪些软件包,并且仅由于依赖关系才安装了哪些软件包。当不再需要不再明确请求的软件包时,它将自动卸载。

apt-get将显式请求的软件包及其依赖项视为相同。

所以最好使用aptitude,这帮助保持系统清洁。

评论


这曾经是真的,但是我知道我的apt-get有一个apt-get autoremove命令,用于删除仅作为依赖项安装的软件包。我不知道何时添加了此功能,但一个网站暗示Debian Lenny可能会发生这种情况(2010年6月)。

–加拉夫
2010年8月19日上午10:55

apt-get autoremove不会删除仅作为依赖项安装的软件包,而是会删除孤立的依赖项,这是一个细微的差别。它无法判断“叶子”软件包是故意安装还是作为依赖安装的,因此它将其留在aptitude知道并删除的位置。

– pjz
2010年8月19日15:05

我卖了!关于智能性还存在其他一些优点,但这无疑是一项杀手级功能。

–iconoclast
18年5月10日在19:24

#5 楼

与相应的命令行调用apt-get相比,aptitude以及各种配套工具所使用的内存要少得多,并且速度要快一些。在尝试升级具有32MB内存的Wizened老奔腾ThinkPad上的debian安装之前,我一直没有意识到这一点。运行apt-get会花费一两个小时的插拔操作,该操作已成功完成;我认为较长时间后,aptitude就会失败。

#6 楼

以@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.


等等。

#7 楼

它们提供了相同的基本功能:从命令行安装和删除软件包。这里是更详细的比较,发布在Ubuntu Stack Exchange网站上:https://askubuntu.com/questions/1743 / is-aptitude-really-than-apt-apt-get / 1749#1749

评论


它们非常相似,我可以在它们之间轻松切换。

–反转
2010年8月11日在8:48

#8 楼

如前所述,http://pthree.org/2007/08/12/aptitude-vs-apt-get/,aptitude使用命令行界面要容易得多。


他们不是在使用相同的APT系统吗?
是的。


基础系统不仅是apt,而且是dpkg。该系统与RPM一样愚蠢,它只能处理单个软件包的安装和管理。它跟踪哪个安装的文件属于哪个软件包。

apt处理所有单个软件包的存储库下载,相关性跟踪等等,然后使用dpkg进行安装。 aptitude的功能相同,但接口不同。

#9 楼

apt-get和aptitude都依赖于APT库,是的。

请参阅我在serverfault.com上的答复。

Debian并不是一个整体的实体,有些人的不同意见和能力维护者认为apt-get有一些缺点,并希望通过能力建设更好的东西。他改进了逻辑,以找到用于复杂升级方案的解决方案,为控制台添加了GUI,等等。并且不仅有apt-get和aptitude,还有我的文章apt-get,aptitude………为您选择合适的软件包管理器。

#10 楼

我不确定这是否仍然存在,但是前沿的Debian开发人员Joey Hess一直主张提倡对apt-get的天才。当然,随着软件的发展,事情会发生变化。现在,Apt-get处理依赖关系的能力比以前更好。
来自http://lists.debian.org/debian-user/2004/04/msg03138.html

日期:2004年4月20日,星期二22:27:12 -0400
来自:Joey Hess

使用aptitude而不是apt-get或dselect的九个理由。就像apt-get

如果运行'aptitude update'或'aptitude upgrade'或'aptitude
install',它的外观和工作方式与apt-get一样,但有一些增强。 br />所以没有学习曲线。

(如果您是dselect用户,学习曲线显然不是您的
问题之一。)


aptitude跟踪自动安装的软件包

不再担心从系统中删除未使用的库和支持软件包。如果您使用aptitude安装所有内容,它将
仅跟踪依赖项引入的软件包,并在不再需要它们时删除
那些软件包。

aptitude明智地处理建议

apt-get的长期失败之处在于缺乏对推荐关系的支持。这是一个问题,因为Debian中的许多软件包
都依赖于Recommends来引入普通用户通常与该软件包一起使用的软件。这不是造成问题的常见原因,即使apt-get最近能够至少提及
推荐的软件包,也很容易错过警告。

Aptitude支持推荐默认情况下,也可以配置为
支持建议。它甚至支持在命令行模式下使用时安装推荐的软件包。


以aptitude作为普通用户使用,并避免占用您的系统

也许您不知道可以像普通用户一样在gui模式下运行aptitude。进行任何您想尝试的更改。如果遇到真正的问题,可以按“ q”并退出,您的更改将不会保存。
(Aptitude还可以让您使用ctrl-u撤消更改。)因为它正在运行
作为普通用户,只有在告诉aptitude做某事之前,您才能对系统进行软管处理,这时会提示您输入root密码。


aptitude具有强大的用户界面和搜索功能

在aptitude的分类浏览器之间,它对
mutt样式的过滤和按名称,描述,
维护者,依赖项等搜索软件包的强大支持,您应该能够比以前使用aptitude更快地找到软件包。


aptitude使得跟踪过期软件变得很容易

如果Debian停止分发软件包,apt会无限期地将其留在您的系统上,没有警告,也没有升级。 Aptitude在其“过时的和本地创建的软件包”部分中列出了此类软件包,因此您可以
获知该问题并采取相应措施。


aptitude具有Debian任务系统的界面

Aptitude可让您使用Debian的任务系统,因为它被设计为
使用。您可以浏览可用任务,选择要安装的任务,然后
进行深入研究,然后取消选择不需要的任务部分。
apt-get不支持任务,和aptitude甚至比Tasksel这样的专用工具要好。可用的
软件包版本,通过aptitude可以深入查看可用的
版本,并选择要安装的非默认版本。如果软件包在不稳定状态下损坏
,只需将其回滚到测试中的版本。


aptitude记录其操作

它会安装,升级并删除到
/ varlog / aptitude的Aptitude日志软件包,这对于确定为什么事情在昨天的升级后开始中断
或删除partiticlar
软件包很有用。 。


-
见害羞的乔

===================
这里还有2010年以来的新讨论https://superuser.com/questions/93437/aptitude-vs-apt-get-which-is-the-recommended-aka-the-right-tool-to-在StackExchange上使用。