Aptitude 与 apt-get:哪个是推荐使用(即“正确”)的工具?

Aptitude 与 apt-get:哪个是推荐使用(即“正确”)的工具?

前段时间我读到这aptitude是在基于 Debian 的系统上安装的首选工具。但是当你搜索如何管理基于 Debian 的系统时,很少会提到 aptitude。大多数人似乎更喜欢它apt-get- 甚至 Debian wiki 页面也是如此!

因此,我想知道我是否遗漏了什么。哪个是正确的工具?

答案1

aptitudeapt-get对于许多任务来说都是一样工作的,但对于最棘手的情况,例如分布升级(apt-get dist-upgradeaptitude full-upgrade),它们有不同的规则,并且在它们不一致的实践中, aptitude 的规则几乎总是更好。

apt-get您看到更多有关over 的文档的原因aptitude主要是惯性:aptitude一直以来都不是 APT 的推荐前端,所以很多现有文档都没有更新,并且有很多人认识到aptitudeover的优势apt-get但却反射性地使用apt-get

最近我发现,打字时我通常会在后面加上aptai而不是 a 。-

后记apt-get请注意,和中使用的规则aptitude是不断变化的目标 - 正如 Hubert 在评论中指出的那样,从 Debian Lenny 开始推荐的升级路径现在使用apt-get,而不是aptitude。这反映了apt-get跟踪的当前软件包状态比 少的事实aptitude,因此无需担心 APT 状态不“干净”,并且因为apt-get规则比以前更智能。我仍然使用 和 推荐aptitude而不是apt-get,但这是一个更细致入微的建议

答案2

aptitude可以方便地显示您已在系统上安装的搜索程序(借助grep):

aptitude search flash | grep ^i

实际上,aptitude的搜索功能比通过 获得的搜索功能强大得多grep,因为它支持上下文搜索:

例如,这将查找所有已安装的软件包名称中带有“flash”的软件包:

aptitude search '~iflash'

与“短形式”等效的“长形式” ~i

aptitude search '?installed(flash)'

请注意,默认情况下搜索模式是自由的(未锚定)。要锚定它们,您需要使用锚定模式“ ^”(字符串开头)和/或“ $”(字符串结尾)。

查找名称以“ttf”或“font”开头的所有包:

aptitude search '(^ttf|^font)'

(注:这是解决 中的一个错误的解决方法aptitude,因为 的正确正则表达式'^(ttf|font)'无法正常工作——它会找到名称以“ttf”或包含‘字体’。

其他实用aptitude功能:

显示名称中带有“固件”且描述中也带有“无线”的所有软件包:

aptitude search 'firmware ~dwireless'

或长格式:

aptitude search '?and(?name(firmware),?description(wireless))'

(注意:在简短形式中,空格分隔的参数在引号内进行 AND 运算;如果作为单独的 argv[] 命令行参数传递,则进行 OR 运算。)

p   atmel-firmware       - Firmware for Atmel at76c50x wireless networking chips.
p   firmware-atheros     - Binary firmware for Atheros wireless cards
...
p   libertas-firmware    - Firmware for Marvell's libertas wireless chip series
p   zd1211-firmware      - Firmware images for the zd1211rw wireless driver

~U显示所有可从当前版本升级到新版本的软件包:

# aptitude update ; aptitude versions '~U'
Package virtualbox-4.1:            
i   4.1.18-78361~Debian~squeeze                       100
p   4.1.20-80170~Debian~squeeze     <NULL>            500

显示推荐“gcc-multilib”的软件包

$ aptitude search '~DRecommends:gcc-multilib'
i   libc6-dev-i386   - Embedded GNU C Library: 32-bit development libraries for AMD64

解释为什么可能需要安装“fuse-utils”

$ aptitude why fuse-utils
i   xorg           Depends    xterm | x-terminal-emulator
pi  gnome-terminal Provides   x-terminal-emulator
pi  gnome-terminal Recommends gvfs
pi  gvfs           Depends    libgdu0 (>= 2.29.90)
pi  libgdu0        Depends    udisks (< 1.1.0)
pi  udisks         Recommends ntfsprogs
pi  ntfsprogs      Depends    fuse-utils (> 2.5.0)

(此示例显示了自 Squeeze(?) 以来默认安装所有“推荐”软件包所导致的一些疯狂行为。安装 gnome-terminal 最终会安装 ntfsprogs 和 fuse-utils,天哪!我认为大多数人只想要终端视角,而不是内置的 NTFS 集成,后者是可选的,除非他们指定它。)

查找所有提供“mail-transport-agent”服务的软件包:

$ aptitude search '?provides(mail-transport-agent)'
p   citadel-mta          - complete and feature-rich groupware server (mail transport agent)
...
p   nullmailer           - simple relay-only mail transport agent
p   postfix              - High-performance mail transport agent
i   sendmail-bin         - powerful, efficient, and scalable Mail Transport Agent
p   ssmtp                - extremely simple MTA to get mail off the system to a mail hub
p   xmail                - advanced, fast and reliable ESMTP/POP3 mail server

显示所有已安装的软件包名称,这些软件包不是必需的或由依赖项自动安装的:

$ aptitude search '~i!(~E|~M)' -F '%p'

不幸的是,这些资料记录得相当差,很难找到,但是这里是最好的参考(来自‘aptitude’维护者)。

答案3

根据Debian GNU/Linux 软件包管理常见问题解答,aptitude 比 apt-get 更复杂,并且依赖于不太复杂的包管理工具 apt-get 和 dpkg。

因此,对于比较简单的需求,可以使用比较简单的工具,而对于比较复杂的需求,可以依靠比较复杂的工具(apitude)。

摘自 Debian FAQ:“aptitude 提供了 dselect 和 apt-get 的功能,以及这两个程序中没有的许多附加功能。”

答案4

没有绝对正确的工具,您可以根据手头的任务选择最方便的工具。aptitude 是测试/sid 用户的绝佳工具,但它在从一个稳定版本升级到另一个稳定版本时不太可靠。请参阅我的文章apt-get、aptitude……选择适合你的包管理器

相关内容