it-swarm.cn

“ apt-get”和“ aptitude”之间的真正区别是什么? (“ wajig”怎么样?)

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

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

259
Kevin Cantu

最明显的区别是aptitude提供了终端菜单界面(非常类似于终端中的Synaptic),而apt-get 才不是。

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

有一些细微的差异:

  • aptitude将自动删除符合条件的软件包,而apt-get则需要一个单独的命令来删除它
  • 升级dist-upgrade的命令已被重新命名为适当的名称safe-upgradefull -upgrade
  • aptitude实际上不仅执行apt-get的功能,而且还执行其一些配套工具,例如apt-cache和apt-mark。
  • aptitude用于搜索的查询语法略有不同(与apt-cache相比)
  • aptitude具有whywhy-not命令来告诉您哪些手动安装软件包阻止您执行某项操作。
  • 如果您要执行的操作(安装,删除,更新软件包)引起冲突,则aptitude可能会建议一些潜在的解决方案。 apt-get只会说“对不起Dave,我不能让你这样做。”

还有其他一些细微差异,但是这些是我能想到的最重要的差异。

简而言之,aptitude更恰当地属于Synaptic和其他更高级别的软件包管理器前端类别。它恰好也有一个类似于apt-get的命令行界面。

红利回合:什么是瓦吉格?

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

225
Ryan C. Thompson

我经常想知道自己。 Wikipedia高亮显示 ,主要区别特征是aptitude具有全屏文本模式(curses)界面。您可以将大多数apt-get命令参数与aptitude一起使用的事实,仅仅是为了使apt-get用户更容易移至aptitude,反之亦然。

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

当然,real的区别是:

[email protected]:~$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...
[email protected]:~$ aptitude moo
There are no Easter Eggs in this program.
71
Gaurav

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

以下是该工具及其在apt-get上具有的功能的概述: http://www.debian.org/doc/FAQ/ch-pkgtools.en.html#s-aptitude

因此,我的建议是仅安装安装才能:)

26
dsp

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

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

因此最好使用aptitude,这有助于保持系统清洁。

20
starblue

apt-get以及各种配套工具使用的内存比aptitude的相应命令行调用占用的内存少得多,并且速度更快。在尝试升级带有32MB内存的Wizened老奔腾ThinkPad上的debian安装之前,我一直没有意识到这一点。运行apt-get(成功完成)需要一两个小时的交换重击;我认为较长时间后aptitude会失败。

这种区别在类似于现代台式机系统的任何事物上或多或少都没有关系。

12
intuited

以@Gaurav的答案为基础,两个软件包管理器中的复活节彩蛋非常有趣!:

[email protected]:~$ apt-get  moo
             (__) 
             (oo) 
       /------\/ 
      / |    ||   
     *  /\---/\ 
        ~~   ~~   
..."Have you mooed today?"...

[email protected]:~$ aptitude  moo
There are no Easter Eggs in this program.
[email protected]:~$ aptitude -v moo
There really are no Easter Eggs in this program.
[email protected]:~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
[email protected]:~$ aptitude -vvv moo
Stop it!
[email protected]:~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
[email protected]:~$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
[email protected]:~$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.
[email protected]:~$ aptitude -vvvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.
[email protected]:~$ aptitude -vvvvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.

等等。

9
Siddhartha

它们提供了相同的基本功能:从命令行安装和删除软件包。

这里 更详细的比较,发布在 buntu Stack Exchange网站https://askubuntu.com/questions/1743/is-aptitude-really- than-apt-apt-get/1749#1749

8
Riccardo Murri

就像提到的 http://pthree.org/2007/08/12/aptitude-vs-apt-get/ 一样,aptitude使用命令行界面要容易得多。

在幕后,他们不是使用相同的APT系统吗?.

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

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

7
vdboor

我不确定这是否仍然存在,但是流血的Edge 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的九个理由。

  1. 才能看起来就像apt-get

    如果您运行“ aptitude更新”或“ aptitude升级”或“ aptitude安装”,它的外观和工作方式就像apt-get一样,但有一些增强。因此没有学习曲线。

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

  2. aptitude跟踪自动安装的软件包

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

  3. 才能明智地处理建议

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

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

  4. 以普通用户的身份使用aptitude,避免占用系统

    也许您不知道可以像普通用户一样在gui模式下运行aptitude。进行任何您想尝试的更改。如果您陷入混乱,可以按“ q”并退出,您的更改将不会保存。 (Aptitude还使您可以使用ctrl-u撤消更改。)由于它是以普通用户身份运行的,因此,在您告诉aptitude做某事之前,您无法对系统进行软管处理,此时,它将提示您输入root密码。

  5. aptitude具有强大的UI和搜索功能

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

  6. 才智使跟踪过期软件变得容易

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

  7. aptitude具有Debian任务系统的界面

    Aptitude可让您使用Debian的任务系统,因为它是为使用而设计的。您可以浏览可用的任务,选择要安装的任务,然后深入研究并取消选择不需要的任务部分。 apt-get不支持任务,并且即使比taskel这样的专用工具也更合适。

  8. 资质支持多种来源

    如果您将sources.list配置为提供一个软件包的多个版本,则aptitude允许您向下钻取以查看可用版本并选择要安装的非默认版本。如果软件包不稳定,只需将其回滚到测试中的版本即可。

  9. 才能记录其行动

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

-见害羞的乔

===================还有2010年以来的新讨论 https://superuser.com/questions/93437/aptitude-vs-apt-在StackExchange上获得推荐使用的又一个正确的工具

6
manselton

Apt-get和aptitude都依赖APT=)库,是的。

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

Debian并不是一个单一的实体,有人的意见不同,并且能力维护者认为apt-get有一些缺点,并希望用能力来构建更好的东西。他改进了逻辑,为复杂的升级方案找到了解决方案,为控制台添加了GUI,等等。而且不仅有apt-get和aptitude,还有我的文章 apt-get,aptitude,...选择正确的程序包。经理

6
Raphaël Hertzog