В чем реальная разница между «apt-get» и «aptitude»? (Как насчет «Ваджиг»?)

256

Я знаю, что и то, apt-getи другое aptitudeявляется интерфейсом управления пакетами командной строки в Linux, производном от Debian, с различными опциями, но я все еще несколько запутался. Под капотом, они не используют ту же систему APT?

Почему Debian поддерживает эти параллельные инструменты? (Бонусный вопрос: что же такое Ваджиг ?)

Кевин Канту
источник
Я знаю, что это не правильный ответ на ваш вопрос, но почему вы не можете попробовать синаптический? Он очень дружелюбный и загружает и устанавливает зависимости автоматически. Разве гнома нет в вашей системе?
Hemant
Я предвзято, но я думаю, что этот вопрос на сайте Ubuntu SE может быть актуальным.
Дэвид З,
5
дубликат: unix.stackexchange.com/questions/244/apt-get-or-aptitude .
Вим Коенен
@ Wim из-за части этого вопроса, в которой я участвовал, я решил объединить 244 с этим вопросом, а не наоборот
xenoterracide
1
Стоит отметить, что aptitude планируется удалить из установки по умолчанию в следующей версии Ubuntu (хотя вы всегда можете установить его с помощью apt-get впоследствии)
Роб Коуэлл,

Ответы:

223

Наиболее очевидным отличием является то, что он aptitudeпредоставляет интерфейс меню терминала (очень похоже на Synaptic в терминале), тогда как apt-getнет.

Рассматривая только интерфейсы командной строки каждого из них, они очень похожи, и по большей части не имеет значения, какой из них вы используете. Последние версии обоих будут отслеживать, какие пакеты были установлены вручную, а какие установлены как зависимости (и, следовательно, могут быть автоматически удалены). На самом деле, я полагаю, что еще совсем недавно эти два инструмента были обновлены, чтобы фактически использовать одну и ту же базу данных вручную и автоматически установленных пакетов, поэтому случаи, когда вы устанавливаете что-то с помощью apt-get, а затем aptitude хочет удалить это, в основном, прошлое.

Есть несколько незначительных отличий:

  • aptitude автоматически удалит подходящие пакеты, тогда как apt-get требует для этого отдельной команды
  • Команды для обновления вместо dist-upgrade были переименованы в aptitude, возможно, для более точных имен safe-upgrade и full-upgrade соответственно.
  • На самом деле aptitude выполняет функции не только apt-get, но и некоторых сопутствующих инструментов, таких как apt-cache и apt-mark.
  • aptitude имеет немного другой синтаксис запроса для поиска (по сравнению с apt-cache)
  • У aptitude есть команды « почему» и « почему», которые говорят вам, какие установленные вручную пакеты препятствуют выполнению действия, которое вы, возможно, захотите предпринять.
  • Если действия (установка, удаление, обновление пакетов), которые вы хотите предпринять, вызывают конфликты, aptitude может предложить несколько возможных решений. apt-get просто скажет: «Извини, Дейв, я не могу позволить тебе сделать это».

Есть и другие небольшие отличия, но это самые важные, о которых я могу подумать.

Короче говоря, aptitude более правильно относится к категории с Synaptic и другим интерфейсам менеджера пакетов более высокого уровня. Просто так получилось иметь интерфейс командной строки, похожий на apt-get.

Бонусный раунд: что такое ваджиг?

Помните, как я упоминал о таких «сопутствующих» инструментах, как apt-cache и apt-mark? Ну, есть куча их, и если вы часто их используете, вы можете не помнить, какие из них предоставляют какие команды. Ваджиг является одним из решений этой проблемы. По сути, это диспетчер, обертка вокруг всех этих инструментов. Также применяется sudo, когда это необходимо. Когда вы говорите wajig install foo, Ваджиг говорит: «Хорошо, installпредоставляется apt-getи требует прав администратора», и он запускается sudo apt-get install foo. Когда вы говорите wajig search foo, Ваджиг говорит: «Хорошо, searchпредоставляется apt-cacheи не требует прав администратора», и он запускается apt-cache search foo. Если вы используете wajig вместо apt-get, apt-mark, apt-cache и других, то у вас никогда не возникнет этой проблемы:

$ apt-get search foo
E: Invalid operation search

Если вы хотите узнать, что ваджиг делает за кулисами, какие инструменты он использует для реализации конкретной команды, у него есть --simulateи --teachingрежимы.

Два wajig команды , которые я часто использую это wajig listfiles fooи wajig whichpkg /usr/bin/foo.

Райан Томпсон
источник
Одна большая проблема, с которой я столкнулся при работе с aptitude, заключается в том, что для получения завершенных вкладок в именах пакетов (например, aptitude install linux-imtab) требуется много времени , а для apt-get это очень быстро. Кажется, в семье apt-get присутствует кеширование, которого не хватает для способности.
Levesque
12
aptitudeтакже есть потрясающее, aptitude searchчто вы можете использовать с очень мощными шаблонами поиска . У вас есть aptitude reinstall. Вы также можете использовать интерфейс ncurses (терминальное меню) для подготовки сложных операций с пакетами, таких как частичное обновление, удаление одного пакета, замораживание другого, обновление этого, которое затем можно выполнить за одну операцию ... О, и у него есть интерактивное средство разрешения конфликтов .
Тотор
3
@Totor священная корова, используя интерфейс ncurses aptitude для подготовки команд, только что раз и навсегда продал меня за aptitude! (после долгих лет размышлений стоит заняться aptitude, но набрав apt-get из мышечной памяти)
TJ Ellis
2
... а aptitudeтакже должен aptitude download package-nameполучить файл пакета .deb!
Тотор
2
Это только одна вещь, которую я обнаружил, которой нет, aptitudeно есть apt-get, и это так apt-get --compile source package-name. apt-get build-dep package-nameсуществуют, но я думаю, что aptitude build-dep package-nameлучше работать.
Андерс
71

Я часто задавался вопросом себя. Википедия подчеркивает, что главной отличительной чертой является то, что aptitude имеет полноэкранный интерфейс текстового режима (curses). Тот факт, что вы можете использовать большинство apt-getкомандных аргументов с aptitudeсамим собой, является лишь конструктивным решением, облегчающим apt-getпользователям переход к aptitudeи наоборот.

Я никогда не использовал wajig, но документация предполагает, что это просто скрипт, который знает, передаете ли вы ему debфайл (когда он запускается dpkg) или aptимя пакета (когда он запускается apt-getвместо этого). Не могли бы вы попробовать и посмотреть, так ли это?

Конечно, реальная разница заключается в следующем:

gaurav@fern:~$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...
gaurav@fern:~$ aptitude moo
There are no Easter Eggs in this program.
Gaurav
источник
52
Нет! aptitudeимеет больше. Вы забыли поставить бесконечные -vфлаги moo. (Вы можете перейти наверх -vvvvvv)
Уманг
12
Не забывайте обо всех важных способностях Супер Коровы, которые apt-getесть, но aptitudeне имеют. (Примерьте --helpоба)
Дероберт
LMAO. это забавный ответ для чтения, хотя ответ @ ryan гораздо более сложный;)
Майкл Трау,
26

aptitude является предпочтительной программой для управления пакетами из консоли, как для установки пакетов, так и для обновления пакетов или системы в Debian.

Вот краткий обзор инструмента и его возможностей по сравнению с apt-get: http://www.debian.org/doc/FAQ/ch-pkgtools.en.html#s-aptitude

Итак, мой совет - просто установить aptitude :)

дсп
источник
2
В примечаниях к выпуску говорится, что apt-get теперь рекомендуется использовать вместо aptitude для обновлений, чтобы сжать.
Jrdioko
1
Да, но только для этого. В противном случае они считаются равными, но aptitudeимеет много более продвинутых функций, таких как поиск и полноэкранный режим, чем apt-get.
Андерс
Почему-то использовал aptitude для установки emacs и не смотря на это удалил gdm! Так что на данный момент я буду использовать apt-get, но мне очень любопытно aptitude.
TomFirth
20

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

apt-get обрабатывает пакеты, запрошенные явно, и их зависимости одинаковы.

Так что лучше использовать aptitude, это помогает поддерживать вашу систему в чистоте.

starblue
источник
4
Раньше это было правдой, но я знаю, что в моем apt-get есть apt-get autoremoveкоманда для удаления пакетов, установленных только как зависимости. Я не знаю, когда эта функция была добавлена, но один веб-сайт предполагает, что это могло произойти с Debian Lenny (июнь 2010 г.).
Гаурав
8
apt-get autoremoveне удаляет пакеты, установленные только как зависимости, он удаляет потерянные зависимости, что является тонким отличием; он не может сказать, был ли установлен «конечный» пакет с намерением или как зависимость, поэтому он оставляет его там, где aptitude узнает и удалит его.
pjz
Я продан! Есть и другие хорошие вещи, aptitudeно это просто убийственная особенность.
иконоборчество
12

apt-get, а также различные сопутствующие инструменты используют значительно меньше памяти, чем соответствующие вызовы командной строки aptitude, и работают немного быстрее. Я был в блаженном неведении об этом, пока не попробовал обновить установку Debian на устаревшем старом ThinkPad Thinkpad с 32 МБ ОЗУ. Потребовался бы час или два для запуска apt-get, который завершился успешно; aptitudeпотерпит неудачу после того, как я думаю, более длительный период времени.

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

созерцаемое
источник
9

Основываясь на ответе @ Gaurav, пасхальные яйца в двух менеджерах пакетов довольно забавны !:

siddhartha@siddhartha-dev:~$ apt-get  moo
             (__) 
             (oo) 
       /------\/ 
      / |    ||   
     *  /\---/\ 
        ~~   ~~   
..."Have you mooed today?"...

siddhartha@siddhartha-dev:~$ aptitude  moo
There are no Easter Eggs in this program.
siddhartha@siddhartha-dev:~$ aptitude -v moo
There really are no Easter Eggs in this program.
siddhartha@siddhartha-dev:~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
siddhartha@siddhartha-dev:~$ aptitude -vvv moo
Stop it!
siddhartha@siddhartha-dev:~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
siddhartha@siddhartha-dev:~$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
siddhartha@siddhartha-dev:~$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.
siddhartha@siddhartha-dev:~$ aptitude -vvvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.
siddhartha@siddhartha-dev:~$ aptitude -vvvvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.

и так далее.

Сиддхартха
источник
8

Они предлагают те же основные функции: устанавливать и удалять пакеты из командной строки.

Вот более подробное сравнение, опубликованное на веб-сайте Ubuntu Stack Exchange : https://askubuntu.com/questions/1743/is-aptitude-really-better-than-apt-get/1749#1749

Риккардо Мурри
источник
Они очень похожи, я могу переключаться между ними достаточно легко.
инвертировать
7

Как уже упоминалось, http://pthree.org/2007/08/12/aptitude-vs-apt-get/ , aptitudeимеет гораздо более простой в использовании интерфейс командной строки.

Под капотом, они не используют ту же систему APT? Да.

Основная система не просто apt, но dpkg. Эта система так же глупа, как RPM, она может выполнять установку и администрирование только отдельных пакетов. Он отслеживает, какие установленные файлы принадлежат к какому пакету.

aptуправляет загрузкой репозиториев, отслеживанием зависимостей и т. д. для всех отдельных пакетов, которые затем он устанавливает dpkg. aptitudeделает то же самое, с другим интерфейсом.

vdboor
источник
6

Да, и apt-get, и aptitude используют библиотеку APT.

Смотрите мой ответ на serverfault.com .

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

Рафаэль Герцог
источник
6

Я не уверен, так ли это до сих пор, но передовой разработчик Debian Джои Хесс всегда использовал для пропаганды aptitude вместо apt-get. Конечно, все меняется по мере развития программного обеспечения. Apt-get теперь обрабатывает зависимости лучше, чем раньше. От http://lists.debian.org/debian-user/2004/04/msg03138.html

Дата: вторник, 20 апреля 2004 г. 22:27:12 -0400 Откуда: Джои Хесс

Девять причин, по которым вам следует использовать aptitude вместо apt-get или dselect.

  1. aptitude может выглядеть как apt-get

    Если вы запускаете «aptitude update» или «aptitude upgrade» или «aptitude install», он выглядит и работает так же, как apt-get, с некоторыми улучшениями. Так что нет кривой обучения.

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

  2. aptitude отслеживает автоматически установленные пакеты

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

  3. aptitude sanely обрабатывает рекомендует

    Давным провалом apt-get является отсутствие поддержки отношения Recommended. Что является проблемой, потому что многие пакеты в Debian полагаются на Рекомендует добавить программное обеспечение, которое обычный пользователь обычно использует с пакетом. Это не редкая причина проблем, хотя apt-get недавно смог хотя бы упомянуть рекомендуемые пакеты, его предупреждения легко пропустить.

    Aptitude поддерживает Recommended по умолчанию и может быть настроен для поддержки предложения также. Он даже поддерживает установку рекомендуемых пакетов при использовании в режиме командной строки.

  4. используйте aptitude как обычный пользователь и избегайте использования вашей системы

    Возможно, вы не знали, что вы можете запускать aptitude в графическом режиме как обычный пользователь. Внесите любые изменения, которые вы хотели бы попробовать. Если вы попали в настоящий беспорядок, вы можете нажать «q» и выйти, ваши изменения не будут сохранены. (Aptitude также позволяет вам использовать ctrl-u для отмены изменений.) Поскольку он работает как обычный пользователь, вы не сможете подключить вашу систему, пока не скажете aptitude сделать что-то, после чего он запросит ваш пароль root.

  5. aptitude имеет мощный пользовательский интерфейс и возможности поиска

    Между категориальным браузером aptitude и его великолепной поддержкой фильтрации в стиле Mutt и поиска пакетов по имени, описанию, сопровождающему, зависимостям и т. Д., Вы сможете найти пакеты быстрее, чем когда-либо прежде, используя aptitude.

  6. aptitude позволяет легко отслеживать устаревшее программное обеспечение

    Если Debian прекратит распространение пакета, apt оставит его в вашей системе на неопределенный срок, без предупреждений и обновлений. Aptitude перечисляет такие пакеты в разделе «Устаревшие и локально созданные пакеты», чтобы вы могли получить информацию о проблеме и что-то с ней сделать.

  7. У aptitude есть интерфейс к системе задач Debian

    Aptitude позволяет вам использовать систему задач Debian так, как она была спроектирована для использования. Вы можете просмотреть доступные задачи, выбрать задачу для установки, а затем покопаться в ней и отменить выбор частей задачи, которые вам не нужны. apt-get не поддерживает задачи, и aptitude лучше, чем инструменты специального назначения, такие как tasksel.

  8. aptitude поддерживает несколько источников

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

  9. aptitude записывает свои действия

    Пакет журналов Aptitude устанавливает, обновляет и удаляет в / varlog / aptitude, что может быть полезно для выяснения причин, по которым вещи начали ломаться после вчерашнего обновления или когда вы удалили пакет partiticlar.

- см застенчивый Джо

=================== есть также более новое обсуждение 2010 года здесь https://superuser.com/questions/93437/aptitude-vs-apt-get-which- это рекомендуемый инструмент для использования в StackExchange.

manselton
источник