我知道,无论apt-get
和aptitude
是Debian的命令行包管理界面的Linux衍生,用不同的选择,但我仍然有些困惑。他们不是在使用相同的APT系统吗?
我知道,无论apt-get
和aptitude
是Debian的命令行包管理界面的Linux衍生,用不同的选择,但我仍然有些困惑。他们不是在使用相同的APT系统吗?
Answers:
最明显的区别是aptitude
提供了一个终端菜单界面(非常类似于终端中的Synaptic),而apt-get
没有。
仅考虑每个的命令行界面,它们是非常相似的,并且在大多数情况下,使用哪一个都不重要。两者的最新版本都将跟踪手动安装了哪些软件包,以及哪些软件包作为依赖项安装(因此可以自动删除)。实际上,我相信甚至在最近,这两个工具已更新为实际上共享手动和自动安装的软件包的相同数据库,因此,在使用apt-get安装某些东西然后又有能力要卸载它的情况下,大多数情况下都是这样。过去。
有一些细微的差异:
还有其他一些细微差异,但是这些是我能想到的最重要的差异。
简而言之,aptitude更恰当地属于Synaptic和其他更高级别的软件包管理器前端类别。它恰好也有一个类似于apt-get的命令行界面。
还记得我提到过那些“伴侣”工具,如apt-cache和apt-mark吗?嗯,有一堆,如果您经常使用它们,您可能会不记得哪个提供了哪些命令。wajig是解决该问题的一种方法。本质上,它是一个调度程序,是所有这些工具的包装器。必要时它也适用sudo。当您说时wajig install foo
,wajig会说“确定,install
由ok 提供,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
。
aptitude install linux-im
tab)上获得制表符的补全,而对于apt-get来说却非常快。apt-get家庭中似乎存在一些缺少能力的缓存。
aptitude
还必须aptitude download package-name
获取包.deb文件!
aptitude
但存在的只是一件事apt-get
,那就是apt-get --compile source package-name
。 apt-get build-dep package-name
存在,但我认为aptitude build-dep package-name
做得更好。
我经常想知道自己。Wikipedia强调,主要区别是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.
aptitude
有更多的。您忘记了将无尽的-v
标记置于moo
。(您可以进入-vvvvvv
)
apt-get
具有但aptitude
没有的重要的超级牛力量。(--help
两者都尝试)
aptitude是从控制台进行软件包管理的首选程序,无论是软件包安装还是Debian中软件包或系统升级。
以下是该工具及其在apt-get上具有的功能的概述:http : //www.debian.org/doc/FAQ/ch-pkgtools.en.html#s-aptitude
因此,我的建议是仅安装安装才能:)
aptitude
拥有许多更高级的功能,例如搜索和全屏模式apt-get
。
aptitude
记住哪些软件包是显式请求的,哪些软件包仅是由于依赖而安装的。当不再需要不再明确要求的软件包时,它将自动卸载。
apt-get
将显式请求的程序包及其依赖项视为相同。
因此,更好地使用aptitude
它有助于保持系统清洁。
apt-get autoremove
命令可以删除仅作为依赖项安装的软件包。我不知道何时添加了此功能,但是一个网站暗示Debian Lenny可能会发生这种情况(2010年6月)。
apt-get autoremove
不删除仅作为依赖项安装的软件包,而是删除孤立的依赖项,这是细微的差别;它无法判断是否安装了“叶子”软件包是出于意图还是依赖关系,因此它将其留给了aptitude知道并删除了该软件包。
aptitude
但这无疑是一项杀手级功能。
以@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.
等等。
它们提供了相同的基本功能:从命令行安装和删除软件包。
这是更详细的比较,发布在Ubuntu Stack Exchange网站上:https : //askubuntu.com/questions/1743/is-aptitude-really-better-than-apt-get/1749#1749
如前所述,http://pthree.org/2007/08/12/aptitude-vs-apt-get/,aptitude
具有易于使用的命令行界面。
他们不是在使用相同的APT系统吗?是。
底层系统不仅仅是apt
,而是dpkg
。该系统与RPM一样愚蠢,它只能处理单个软件包的安装和管理。它跟踪哪些已安装文件属于哪个软件包。
apt
处理所有单个软件包的资源库下载,相关性跟踪等,然后使用进行安装dpkg
。aptitude
用不同的界面执行相同的操作。
apt-get和aptitude都依赖于APT库,是的。
在serverfault.com上查看我的答案。
Debian不是一个单一的实体,有人的意见不同,并且能力维护者认为apt-get有一些缺点,并希望用能力来构建更好的东西。他改进了逻辑,以找到用于复杂升级方案的解决方案,为控制台添加了GUI,等等。并且不仅有apt-get和aptitude,还有我的文章apt-get,aptitude……为您选择合适的软件包管理器。
我不确定这种情况是否还会持续,但是前沿的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更新”或“ aptitude升级”或“ aptitude安装”,它的外观和工作方式就像apt-get一样,但有一些增强。因此没有学习曲线。
(如果您是dselect用户,那么学习曲线显然不是您的问题之一。)
aptitude跟踪自动安装的软件包
不必再担心从系统中删除未使用的库和支持软件包。如果您使用aptitude安装所有组件,它将仅跟踪依赖项引入了哪些软件包,并在不再需要这些软件包时将其删除。
才能明智地处理建议
apt-get的长期失败之处在于缺乏对“推荐”关系的支持。这是一个问题,因为Debian中的许多软件包都依赖于Recommends引入普通用户通常与该软件包一起使用的软件。尽管apt-get最近至少能够提及推荐的软件包,但这并不是造成麻烦的常见原因,但很容易错过警告。
Aptitude默认情况下支持“推荐”,也可以配置为支持“建议”。在命令行模式下使用时,它甚至支持安装推荐的软件包。
以普通用户的身份使用aptitude,避免占用系统
也许您不知道可以像普通用户一样在gui模式下运行aptitude。进行任何您想尝试的更改。如果您陷入混乱,可以按“ q”并退出,您的更改将不会保存。(Aptitude还使您可以使用ctrl-u撤消更改。)由于它是以普通用户身份运行的,因此,在您告诉aptitude做某事之前,您无法对系统进行软管处理,此时它将提示您输入root密码。
aptitude具有强大的UI和搜索功能
在aptitude的分类浏览器及其对mutt样式过滤和按名称,描述,维护者,依赖项等搜索软件包的强大支持之间,您应该能够比使用aptitude更快地找到软件包。
才智使跟踪过期软件变得容易
如果Debian停止分发软件包,则apt会不确定地将其保留在您的系统上,没有警告,也没有升级。Aptitude在其“过时的和本地创建的软件包”部分中列出了此类软件包,因此您可以被告知该问题并采取相应措施。
aptitude具有Debian任务系统的界面
Aptitude可让您使用Debian的任务系统,因为它是为使用而设计的。您可以浏览可用任务,选择要安装的任务,然后深入研究并取消选择您不需要的任务部分。apt-get不支持任务,并且即使比taskel这样的专用工具也更合适。
资质支持多种来源
如果您将sources.list配置为可提供一个软件包的多个版本,则aptitude可让您向下钻取以查看可用版本并选择要安装的非默认版本。如果软件包不稳定,只需将其回滚到测试中的版本即可。
才能记录其操作
它会安装,升级和删除/ aplog日志包,并将其安装到/ varlog / aptitude,这对于确定为什么昨天升级后事情开始中断或删除partiticlar软件包很有用。
-见害羞的乔
===================还有一个来自2010年的新讨论,这里https://superuser.com/questions/93437/aptitude-vs-apt-get-which-是建议在StackExchange上使用的正确工具。