apt-get 和 aptitude 有什么区别?

apt-get 和 aptitude 有什么区别?

我不明白为什么在最小安装中有两个不同的程序来安装软件。它们不是做同样的事情吗?有很大区别吗?我到处都读到过使用 aptitude 而不是 apt-get,但我仍然不知道它们的区别

答案1

aptitude 是 dpkg 的包装器,就像 apt-get/apt-cache 一样,但它是用于搜索/安装/删除/查询的一站式工具。以下是 apt 可能不提供的一些示例:

$ aptitude why libc6
i   w64codecs Depends libc6 (>= 2.3.2)
$ aptitude why-not libc6
Unable to find a reason to remove libc6.

$ aptitude show libc6
Package: libc6
State: installed
Automatically installed: no
Version: 2.9-4ubuntu6
Priority: required
Section: libs
Maintainer: Ubuntu Core developers <[email protected]>
Uncompressed Size: 12.1M
Depends: libgcc1, findutils (>= 4.4.0-2ubuntu2)
Suggests: locales, glibc-doc
Conflicts: libterm-readline-gnu-perl (< 1.15-2), 
tzdata (< 2007k-1), tzdata-etch, nscd (< 2.9)
Replaces: belocs-locales-bin
Provides: glibc-2.9-1
Description: GNU C Library: Shared libraries
 Contains the standard libraries that are used by nearly all programs 
 on the system. This package includes shared versions of the standard 
 C library and the standard math library, as well as many others.

答案2

mikeage@linode ~$ aptitude -h | tail -n 1
              This aptitude does not have Super Cow Powers.
mikeage@linode ~$ apt-get -h | tail -n 1
                   This APT has Super Cow Powers.
mikeage@linode ~$ aptitude moo
    There are no Easter Eggs in this program.
mikeage@linode ~$ apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~
...."Have you mooed today?"...
mikeage@linode ~$ aptitude -v moo
There really are no Easter Eggs in this program.
mikeage@linode ~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
mikeage@linode ~$ aptitude -vvv moo
Stop it!
mikeage@linode ~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
mikeage@linode ~$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
mikeage@linode ~$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course. 

答案3

Debian 安装程序中当前使用的并且在发行说明中推荐的官方工具是aptitude

Aptitude 提供了一个 curses 界面(运行时不带任何参数)和一个命令行界面,几乎可以完成apt-cache/apt-get所做的所有事情。它还有一个更好的依赖解析器,可让您在多个解决方案之间浏览。即使使用命令行版本,您也可以与建议的解决方案进行交互并给出补充命令或提示(例如安装或删除另一个解决方案推荐的软件包)。

但是 aptitude 基于 libapt 库(它不是 dpkg 的直接包装器),因此它依赖于软件包,apt所以如果没有 apt-get(它也在 apt 包中),您就无法安装 aptitude。

$ dpkg --status aptitude| grep Depends
Depends: libapt-pkg-libc6.9-6-4.7, [...]
$ dpkg --status apt|grep Provides
Provides: libapt-pkg-libc6.9-6-4.7
$ dpkg --search /usr/lib/libapt-pkg-libc6.9-6.so.4.7 /usr/bin/apt-get
apt: /usr/lib/libapt-pkg-libc6.9-6.so.4.7
apt: /usr/bin/apt-get

要了解有关 apt/dpkg/aptitude 如何交互的更多信息,您可以查看图表由 Daniel Burrows 制作(aptitude 的主要作者)。另一个图表展示了各种包管理工具存储的信息:apt 和 dpkg 状态文件图

你也可以阅读我的文章apt-get、aptitude……选择适合你的包管理器

答案4

除了在您不带参数运行时提供漂亮的控制台 UI 之外aptitude,它还将各种apt-*命令(和dselect)组合到一个实用程序中。

要搜索软件包并安装它,使用 apt-get:

apt-cache search somepkg
apt-get install somepkg

..但使用 aptitude 时,命令是相同的:

aptitude search somepkg
aptitude install somepkg

aptitude确实有一些额外的功能,比如aptitude changelog somepkg保存包(以阻止它们升级)——没有什么是你无法通过其他命令/方法实现的,它只是更加统一和好用。

相关内容