93

Некоторое время назад я прочитал, что aptitude является предпочтительным инструментом для установки в системах на основе Debian. Но когда вы ищите, как администрировать систему на основе Debian, aptitude редко упоминается. Большинство людей предпочитают apt-get - и это даже верно для вики-страниц Debian!

Таким образом, мне интересно, если я что-то пропустил. Какой инструмент лучше использовать?

5 ответов5

72

aptitude и apt-get работают одинаково для многих задач, но в самых сложных случаях, таких как обновления дистрибутива (apt-get dist-upgrade или aptitude full-upgrade), у них разные правила, и правила aptitude почти всегда лучше на практике, где они не согласны.

Причина, по которой вы видите больше документации для apt-get over aptitude в основном заключается в инерции: aptitude долгое время не был рекомендуемым интерфейсом для APT, так как большая часть существующей документации не обновлялась, и есть много людей, которые признайте преимущества aptitude сравнению с apt-get но используйте apt-get рефлексивно.

Недавно я дошел до того, что обычно следую apt с помощью i а не a - когда я печатаю.

Постскриптум Обратите внимание, что правила, используемые в apt-get и aptitude являются движущимися целями - как отмечает Хьюберт в комментариях, рекомендуемый Debian Lenny путь обновления теперь использует apt-get , а не aptitude . Это отражает тот факт, что apt-get отслеживает меньшее состояние текущего пакета, чем aptitude , и поэтому не нужно беспокоиться о том, что APT-состояние не является "чистым", а также потому, что правила apt-get умнее, чем раньше. Я все еще использую и рекомендую aptitude apt-get , но это более нюансированная рекомендация

20

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' или содержат 'font'.)

Другие отличные особенности aptitude :

Показать все пакеты с «firmware» в их названии, которые также имеют «wireless» в их описании:

aptitude search 'firmware ~dwireless'

или длинная форма:

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

(Примечание: в краткой форме аргументы, разделенные пробелом, заключаются в кавычки AND; если они передаются как отдельные аргументы командной строки argv [], они ORed.)

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-терминала заканчивается установкой 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

Показать все установленные имена пакетов, которые не являются обязательными или автоматически устанавливаемыми по зависимостям:

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

К сожалению, этот материал плохо документирован и его трудно найти, но вот лучшая ссылка (от сопровождающего aptitude).

4

Согласно часто задаваемым вопросам Debian GNU/Linux об управлении пакетами, aptitude является более сложной, чем apt-get, и зависит от менее сложных инструментов управления пакетами apt-get и dpkg.

Следовательно, для более простых нужд вы можете использовать более простые инструменты, в то время как для более сложных потребностей вы можете рассчитывать на более сложный инструмент (apitude).

Цитируется из FAQ по Debian: «aptitude предоставляет функции dselect и apt-get, а также множество дополнительных функций, которых нет ни в одной программе».

3

aptitude отмечает пакеты, которые были установлены из-за зависимости с тегом auto. Если вы сейчас удалите или удалите пакет, aptitude автоматически удалит автоматически установленные пакеты, которые больше не используются вместе с пакетом, который вы хотите очистить или удалить.

Это главная причина, почему я лично считаю, что способности всегда лучше, чем способности.

2

Там нет подходящего инструмента, вы можете смешивать и сочетать оба в зависимости от того, который вы считаете наиболее удобным для текущей задачи. aptitude - отличный инструмент для тестирования пользователей /sid, но он, как правило, менее надежен для удаленного обновления с одной стабильной на другую. Посмотрите мою статью apt-get, aptitude,… выберите правильный менеджер пакетов для вас.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .