Aptitude vs. apt-get: Какой рекомендуемый (иначе называемый «правильный») инструмент использовать?

49653
Vokuhila-Oliba

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

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

93
Интересно, что Ubuntu больше не устанавливает `aptitude` по умолчанию. Mechanical snail 11 лет назад 0
Единственное самое важное для меня отличие заключается в том, что после тщательного прочтения документации я не могу найти способ получить исходный код пакета через aptitude. `apt-get source package-name` сделает это, но я не видел эквивалента aptitude EricR 11 лет назад 2
Одна вещь заключается в том, что `aptitude search package-name` работает в aptitude. Другим является aptitude, почему package-name` также полезно, но не в `apt-get`. Я также считаю, что командная строка `aptitude` немного очищена по сравнению с` apt-get`. Но, как вы заметили, существует `aptitude build-dep package-name`, но нет` aptitude source package-name`. Anders 10 лет назад 2

5 ответов на вопрос

72
Charles Stewart

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

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

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

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

В дополнение к этому, aptitude позволяет легко просматривать возможные разрешения конфликтов, в то время как с помощью apt-get у вас обычно отображается только один возможный способ, и вы либо принимаете его, либо вам приходится выполнять разрешение вручную (например, с помощью dpkg). liori 14 лет назад 6
Преимущество apt-get в том, что оно более эффективно использует память. Это вряд ли будет заметно для большинства пользователей; Я не знал об этом, пока не попытался обновить пакеты при полной установке Debian с 32 МБ ОЗУ. 'aptitude' заканчивал тем, что бился в обмене в течение приблизительно часа за пробег; apt-get был значительно быстрее. intuited 13 лет назад 20
В официальной документации Debian squeeze прямо сказано, что не следует использовать `aptitude` для обновления с Lenny, даже если это поддерживалось для предыдущих обновлений, поэтому я не думаю, что это только инерция ... Hubert Kario 11 лет назад 4
@HubertKario - Да, действительно. Я обновил свой ответ. Charles Stewart 11 лет назад 0
Я могу только сказать, что `apt-get` почти всегда выдает ошибки (опыт с сервера Ubuntu 12.10, 14.04), в то время как` aptitude` действительно может что-то делать. Я до сих пор не понимаю, как apt-get все еще существует. Totty.js 9 лет назад 0
19
Chris P

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 (?) Устанавливает все пакеты «Recommended». Установка 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).

Функции поиска доступны из `apt-get` через` apt-cache search NAME` EricR 11 лет назад 4
@EricR правда, но я не нашел возможности поиска, так как они niceman 9 лет назад 0
4
pagliuca

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

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

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

3
Fleshgrinder

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

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

Цитирование необходимо, но это будет неоспоримым отличием. Kzqai 10 лет назад 0
Цитирование: http://debian-handbook.info/browse/stable/sect.apt-frontends.html#idp16498256 deizel 10 лет назад 0
На самом деле `apt-get` делает то же самое, с` apt-get autoremove `. Оба `apt-get` и` aptitude` помечают автоматически установленные пакеты Legionair 10 лет назад 0
Но `aptitude` очищает автоматические пакеты каждый раз, когда он используется. В то время как `apt-get` вам нужно начать это явно. Anders 10 лет назад 0
2
Raphaël Hertzog

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