Answers:
apt-get和aptitude是不同的UI,它们是同一软件包管理系统APT(高级包装工具)的一部分。例如,两者都使用进行配置/etc/apt/apt.conf
,都使用相同的文件空间和格式来表示软件包状态,并且使用相同的文件空间来存储下载的.debs。
它们的不同之处在于它们的内部规则系统,它们表示包之间的潜在冲突,如何解决它们(例如apt-get dist-upgrade
vs. 期间aptitude full-upgrade
)以及与用户进行交互时如何表达它们。一般而言,在棘手的情况下,两者都可能做错事,但是apt-get可能比聪明的人更容易出错。
这里已经有很多好的建议,但让我补充一件事,没有人提及。如果您决定切换,则可能要运行此命令,具体取决于您的工作情况apt-get
:
aptitude keep-all
该命令重置aptitude
了什么包是孤立包的意义,应该将其删除。
这是有时有用的原因:在一段时间内,两者apt-get
和aptitude
都会跟踪作为其他依赖项而自动安装的软件包。因此,例如,如果您安装mpd
,则可能会lib-so-and-so
成为依赖项。他们这样做是为了让以后再删除mpd
时也lib-so-and-so
可以删除。但是aptitude
,以apt-get
不同的方式处理此清理。aptitude
立即尝试删除所有孤立的依赖项;但apt-get
仅建议您运行apt-get autoremove
清理。(后面这一切的逻辑是,你只得到了图书馆,因为mpd
需要它。如果你不坚持mpd
,你不应该需要的库中的任何更长的时间。如果另一包还是要看它,那么这两个aptitude
和apt-get
会知道这一点,而不是尝试删除该库。)
我有什么意思 好吧,如果您一直在运行微调,然后apt-get autoremove
切换到aptitude
,那么您第一次尝试安装某些组件时可能会感到震惊。aptitude
将立即尝试删除所有这些孤儿。通常,这很好(毕竟他们是孤儿,不是必需的),但是有一个复杂的情况。桌面元包都包含一个复杂的依赖链,其中每个程序都作为虚拟包包装程序的依赖被拉入。例如,如果由于安装了gnome
软件包而安装了Gnome ,则所有常规桌面程序都将作为依赖项安装。如果您已经卸载了其中一个程序(例如Ekiga或Gedit),那么在您看来aptitude
您桌面的其余部分也应删除。请注意,aptitude
总是在删除内容前先进行询问,但是人们经常输入“ Y”而不阅读。以我的经验,这是刚接触Debian的人们最常见的抱怨/困惑。
两条一般建议:
aptitude
或的输出apt-get
。aptitude -s safe-upgrade
或进行试运行aptitude -s install foo
。该-s|--simulate
标志是你的朋友。几年前,在Debian邮件列表中有人说,从apt-get转换为aptitude是冒险的。这是两个Debian版本(例如10年)。所有这些问题现在似乎都已经解决了,当然我在Debian或Ubuntu上都没有遇到问题。
apt-get
到aptitude
。那时,他们处理许多基本功能的方式非常不同。随着时间的流逝,它们变得越来越相似,并且aptitude
已经成熟了许多。现在,对于90%的情况,如果您进行切换,应该没有问题。见我的帖子一个边缘案例。
它们不只是同一个后端的不同接口吗?
aptitude
是一个更具特色的界面...
dpkg
。但dpkg
只安装软件包;它是负责搜索,依赖项解析和下载的前端。
我同时使用apt-get和aptitude都没问题:我有一个相同的问题...为什么人们这么说?:D
继续,不用担心:aptitude只是apt-get的文本GUI,您甚至可以将其用作命令行应用程序,例如apt-get install foo
与aptitude install foo
。
问候
apt-get
还提供仅作为依赖项安装的软件包的自动删除。在这方面,剩下的区别是aptitude
立即删除了依赖项(视情况而定),但是apt-get
仅促使您运行命令apt-get autoremove
。但是它们现在都以相同的方式跟踪依赖关系。但是,它们在处理复杂的依赖项和边缘情况(非常复杂的安装或删除)方面仍然有所不同,但是对于大多数人和大多数情况而言,它们现在的工作原理相同。
aptitude
会立即删除它们,但apt-get
只会提示您通过输入命令删除它们apt-get autoremove
。通常,他们将要删除相同的项目。但是,对于一个复杂的案例,请参阅此链接,在该案例中他们对此表示不同意见:forums.debian.net/viewtopic.php?f=