我不明白为什么有一个最小安装两个不同的程序来安装软件。 难道他们不这样做吗? 有很大的区别吗? 我已经阅读到各地使用aptitude的aptitude,但我仍然不知道区别
aptitude与apt-get / apt-cache一样是dpkg的包装,但它是一个用于search/安装/删除/查询的一站式工具。 一些可能不提供的例子:
$ 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.
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.
目前在Debian安装程序中使用并在发行说明中推荐的官方工具是aptitude
。
Aptitude提供了一个curses接口(当没有任何参数的情况下运行)和一个命令行接口,它几乎可以完成apt-cache
/ apt-get
所做的一切。 它也有一个更好的依赖parsing器,让你浏览多个解决scheme。 即使使用命令行版本,也可以与build议的解决scheme进行交互,并提供补充命令或提示(如安装或删除其他人推荐的软件包)。
但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的主要作者) 所做的图表 。 另一个图表显示了各种包pipe理工具存储的信息: apt和dpkg状态文件的映射 。
你也可以阅读我的文章apt-get,aptitude,…为你select合适的软件包pipe理器
aptitude remebers你有意安装了哪些软件包,哪些已经被自动安装以满足依赖关系。 一旦删除一个软件包aptitude将删除自动安装的软件包,以保持您的系统整洁。 apt-get不是那么聪明。
一旦您使用不同版本的软件包使用不同的软件仓库,aptitude将会迅速成为不可或缺的工具。 想象一下,你正在使用backports.org或者像debian-multimedia.org这样的官方仓库。 然后aptitude将显示(在某个包的详细信息页面的底部)可用的版本号,并允许您select一个。
如果您遇到由于使用非官方存储库而导致程序冲突的情况,您将在顶部看到“Broken:…”(破碎:…)显示。 你可以inputl〜b(limit / flag / broken),只是得到一个相互冲突的包列表。 使手动解决冲突更容易。
此外,您可以使用“l”来限制软件包列表。 想象一下,你正在寻找以“openoffice”开头的软件包,然后按“l”键入“^ openoffice”(这是一个正则expression式),你会看到这些软件包。 从菜单中select一个“扁平软件包列表”,您将很快达到您的目标。
完整的手册非常大,为您提供更多的filter和可能性。 即使你不知道他们aptitude是apt-get的一个方便的替代品,你可以使用它像通常的参数
aptitude install …(安装或升级软件包)aptitude remove …(删除软件包的二进制部分,但保留你的/ etcconfiguration)aptitide purge …(完全删除软件包,包括你的configuration)
正如你知道当你安装一个软件包,如果它需要其他软件包(依赖),他们将被下载并安装。 aptitude跟踪在安装的时候安装的软件包,所以当你删除后者的aptitude会要求你删除其他(现在未使用的)“孤立的”依赖项。 如果你删除了“主”包,apt-get会将它们保持在你的系统中。
它看起来像最新版本的apt-get具有类似的function: http : //www.psychocats.net/ubuntu/aptitude
除了在不带参数的情况下运行aptitude
时提供漂亮的控制台UI,它apt-*
各种apt-*
命令(和dselect
)组合到一个实用程序中。
要search一个包并使用apt-get进行安装:
apt-cache search somepkg apt-get install somepkg
..但是与aptitude是同一个命令:
aptitude search somepkg aptitude install somepkg
aptitude
确实有一些额外的function,比如aptitude changelog somepkg
和诸如保持软件包(阻止软件升级)之类的东西 – 通过其他命令/方法无法实现的function,它只是更统一,更好用。
最大的区别在于,aptitude被devise成交互式的,apt工具更适合于脚本工作。 你可以使用后者,也就是apt工具,交互式地完成更多的工作,以获得与aptitude相同的结果。 如果由于某种原因你必须仅仅使用一种工具或其他工具,那么你需要决定你想要在你的软件包pipe理中付出多less努力。
aptitude的一个重要优势是能够计算依赖关系。 首先,它可以处理复杂的相互依赖关系,而不需要你自己的干预,而这往往是不可避免的。 但是,如果你不喜欢它向你提供的解决scheme(它会得到自己的解决scheme来certificate它有多好),你可以要求它消失,并提出另一个解决冲突的解决scheme。
它确实做了一些很棒的包pipe理。
最大的区别是:input“aptitude”没有任何参数。
它为您提供了一个基于文本的用户界面,您可以使用keybord来search/浏览等等,查看依赖关系,反向依赖关系,软件包的所有可用版本的信息,并且可以在该屏幕上对它们执行任何软件包pipe理器操作。
您可以按“g”查看更改,如有必要修改包裹添加和清除,并应用所有待处理的操作。
通过ssh连接或普通老式terminal进行软件包pipe理的一种很好的可视化方式。