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

Vok*_*iba 96 linux debian aptitude ubuntu apt

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

因此,我想知道我是否错过了什么。哪个是正确使用的工具?

Cha*_*art 75

aptitude并且apt-get对许多任务工作相同,但对于最棘手的情况,例如发行版升级(apt-get dist-upgradevs. aptitude full-upgrade),它们有不同的规则,并且 aptitude 的规则在实践中几乎总是在他们不同意的地方更好。

你看到更多关于apt-getover 的文档的原因aptitude主要是惯性:aptitude长期以来一直没有被推荐给 APT 的前端,这么多现有的文档还没有更新,而且有很多人认识到aptitudeover的优点apt-get而是apt-get反射性地使用。

我最近到了在我打字时通常apt用 ai而不是 a的地步-

后记请注意,在apt-getaptitude中使用的规则是移动目标——正如休伯特在评论中指出的那样,Debian Lenny 推荐的升级路径现在使用apt-get,而不是aptitude。这反映了这样一个事实,即apt-get跟踪当前包的状态比 少aptitude,因此无需担心 APT 状态不“干净”,并且因为apt-get规则比以前更智能。我仍然使用并推荐aptitude过去apt-get,但这是一个更细微的推荐

  • `apt-get` 确实具有内存效率更高的优势。对于大多数用户来说,这不太可能引起注意;直到我尝试在具有 32MB RAM 的完整 Debian 安装上升级软件包之前,我才真正意识到这一点。`aptitude` 每次运行都会在 swap 中颠簸大约一个小时;apt-get 明显更快。 (20认同)
  • 除此之外,aptitude 允许轻松浏览冲突的可能解决方案,而使用 apt-get,您通常只显示一种可能的方式,要么接受它,要么必须手动解决(fe 使用 dpkg)。 (6认同)
  • Debian 官方压缩文档明确声明不要使用 `aptitude` 来从 Lenny 升级,即使它支持以前的升级,所以我不认为这只是惯性...... (4认同)

小智 22

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

aptitude search flash | grep ^i
Run Code Online (Sandbox Code Playgroud)

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

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

aptitude search '~iflash'
Run Code Online (Sandbox Code Playgroud)

“短格式”的等效“长格式” ~i

aptitude search '?installed(flash)'
Run Code Online (Sandbox Code Playgroud)

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

要查找名称以 'ttf' 或 'font' 开头的所有软件包:

aptitude search '(^ttf|^font)'
Run Code Online (Sandbox Code Playgroud)

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

其他漂亮的aptitude功能:

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

aptitude search 'firmware ~dwireless'
Run Code Online (Sandbox Code Playgroud)

或长格式:

aptitude search '?and(?name(firmware),?description(wireless))'
Run Code Online (Sandbox Code Playgroud)

(注意:在简短形式中,空格分隔的参数在引号内进行 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
Run Code Online (Sandbox Code Playgroud)

~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
Run Code Online (Sandbox Code Playgroud)

显示推荐'gcc-multilib'的包

$ aptitude search '~DRecommends:gcc-multilib'
i   libc6-dev-i386   - Embedded GNU C Library: 32-bit development libraries for AMD64
Run Code Online (Sandbox Code Playgroud)

解释为什么可能需要安装“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)
Run Code Online (Sandbox Code Playgroud)

(此示例显示了自 Squeeze(?) 安装所有“推荐”软件包以来默认设置的一些疯狂。安装 gnome-terminal 最终会安装 ntfsprogs 和 fuse-utils,egad!我想大多数人只想要终端视角和不是内置的 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
Run Code Online (Sandbox Code Playgroud)

显示所有已安装的包名称,它们不是 Essential 或由依赖项自动安装的:

$ aptitude search '~i!(~E|~M)' -F '%p'
Run Code Online (Sandbox Code Playgroud)

不幸的是,这东西是相当差的记录,很难找到,但在这里是最好的参考(从‘资质’的维护者)。

  • 搜索功能可通过“apt-cache search NAME”从“apt-get”获得 (4认同)