Answers:
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 <ubuntu-devel-discuss@lists.ubuntu.com>
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.
aptitude
即使是最新的,apt
也无法做到:aptitude search '~i linux'
搜索linux
名称或描述已安装的软件包;aptitude search '~o'
列出过时的软件包(已由任何存储库不再提供的已安装软件包);aptitude search '!~M ~i'
显示未标记为自动安装的软件包;aptitude search '~i lib.*-dev'
显示已安装的开发库,您可以search
用markauto
或unmarkauto
标记这些软件包为自动或手动安装。
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
。它还具有更好的依赖性解析器,可让您在多个解决方案之间浏览。即使使用命令行版本,您也可以与建议的解决方案进行交互并给出补充命令或提示(例如安装或删除另一个建议的软件包)。
但是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 Aprows(aptitude的主要作者)制作的图表。另一幅图显示了各种软件包管理工具存储的信息:apt和dpkg状态文件的映射。
您还可以阅读我的文章apt-get,aptitude,...为您选择合适的软件包管理器
aptitude
记住您故意安装了哪些软件包,以及哪些软件包已自动安装以满足相关性。删除软件包功能后,将删除那些自动安装的软件包,以使您的系统保持整洁。apt-get
不是那么聪明。
aptitude
一旦对不同版本的软件包使用不同的存储库,它将迅速成为必不可少的工具。假设您正在使用backports.org或诸如debian-multimedia.org之类的非官方存储库。然后aptitude
将显示(在特定软件包的详细信息页面的底部)可用的版本号,并允许您选择一个。
如果您遇到由于使用非官方存储库而导致程序冲突的情况,您将在顶部看到“ Broken:...”。您可以输入l〜b(限制/标志/断开),然后获取相互冲突的软件包列表。使手动解决冲突变得更加容易。
此外,您可以使用“ l
”来限制包裹清单。假设您正在寻找以“ openoffice ” 开头的软件包,然后按“ l
”并键入“ ^openoffice
”(这是一个正则表达式),那么您只会看到这些软件包。从菜单中选择一个“扁平包装清单”,您将很快达到目标。
完整的手册非常大,为您提供了更多的过滤器和可能性。即使您不知道它们aptitude
是否可以代替它们apt-get
,也可以将其与常见参数一起使用,例如:
aptitude install ... (install or upgrade a package)
aptitude remove ... (remove the binary portions of a package but preserve your /etc configuration)
aptitude purge ... (remove the package completely including your configuration)
apt-get autoremove
现在删除了已安装的软件包,这些软件包是从那时以来已删除的软件包的依赖项。
apt
它可以做的东西,混合apt-get
,并apt-cache
用来做。例如,apt search foo
将列出foo
名称或描述中包含的软件包。apt install foo
将安装名为的软件包(foo
如果可用),apt policy foo
并将列出软件包的当前安装版本和所有可用版本foo
。
aptitude
仍然可以做多apt
,但平淡apt
是经常要快得多。
除了在aptitude
没有参数的情况下运行时提供漂亮的控制台UI之外,它还将各种apt-*
命令(和dselect
)组合到一个实用程序中。
使用apt-get搜索并安装软件包:
apt-cache search somepkg
apt-get install somepkg
..但有才能,它是相同的命令:
aptitude search somepkg
aptitude install somepkg
aptitude
确实具有一些其他功能,例如aptitude changelog somepkg
和持有软件包(阻止它们升级)之类的东西-通过其他命令/方法无法实现的任何事情,它更加统一且易于使用。
如您所知,在安装软件包时,如果它需要其他软件包(依赖项),它们也将被下载和安装。aptitude会在安装时跟踪已安装的aptitude随附的软件包,因此,当您删除后者的aptitude时,将要求您删除其他(现已未使用)的“孤立”依赖项。如果删除“ main”软件包,apt-get会将它们静默保存在系统中。
看起来最新版本的apt-get具有类似的功能:http : //www.psychocats.net/ubuntu/aptitude
aptitude
或apt
实际上不保留已安装的软件包列表作为任何给定软件包的依赖项。它仅跟踪软件包是手动安装还是自动安装。并且,如果某个软件包已被标记为自动安装,并且没有其他软件包依赖或推荐该软件包,则将使用apt autoremove
或将其删除aptitude dist-upgrade
。