В чем разница между apt-get и aptitude?

56

Я не понимаю, почему в минимальной установке есть две разные программы для установки программного обеспечения. Разве они не делают то же самое? Есть большая разница? Я читал везде, чтобы использовать aptitude вместо apt-get, но я до сих пор не знаю разницы

Thomaschaaf
источник

Ответы:

48

aptitude - это оболочка для dpkg, также как apt-get / apt-cache, но это универсальный инструмент для поиска / установки / удаления / запросов. Несколько примеров, которые apt может не предоставить:

$ aptitude why libc6
i   w64codecs Depends libc6 (>= 2.3.2)
$ aptitude why-not libc6
Unable to find a reason to remove libc6.

$ aptitude show libc6
Package: libc6
State: installed
Automatically installed: no
Version: 2.9-4ubuntu6
Priority: required
Section: libs
Maintainer: Ubuntu Core developers <ubuntu-devel-discuss@lists.ubuntu.com>
Uncompressed Size: 12.1M
Depends: libgcc1, findutils (>= 4.4.0-2ubuntu2)
Suggests: locales, glibc-doc
Conflicts: libterm-readline-gnu-perl (< 1.15-2), 
tzdata (< 2007k-1), tzdata-etch, nscd (< 2.9)
Replaces: belocs-locales-bin
Provides: glibc-2.9-1
Description: GNU C Library: Shared libraries
 Contains the standard libraries that are used by nearly all programs 
 on the system. This package includes shared versions of the standard 
 C library and the standard math library, as well as many others.
katriel
источник
10
не говоря уже о: $ aptitude changelog bash
pgs
Другие хитрости, которые aptitudeзнают, что даже самые последние aptне могут сделать: aptitude search '~i linux'поиск пакетов с linuxименем или описанием, которые установлены; aptitude search '~o'перечисляет устаревшие пакеты (установленные пакеты, которые больше не предоставляются ни одним хранилищем); aptitude search '!~M ~i'показывает пакеты, которые не помечены как автоматически установленные; aptitude search '~i lib.*-dev'шоу установлены библиотеки развития , и вы можете заменить searchс markautoили unmarkautoпометить эти пакеты как автоматически или вручную установить.
Микко Ранталайнен
44
mikeage@linode ~$ aptitude -h | tail -n 1
              This aptitude does not have Super Cow Powers.
mikeage@linode ~$ apt-get -h | tail -n 1
                   This APT has Super Cow Powers.
mikeage@linode ~$ aptitude moo
    There are no Easter Eggs in this program.
mikeage@linode ~$ apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~
...."Have you mooed today?"...
mikeage@linode ~$ aptitude -v moo
There really are no Easter Eggs in this program.
mikeage@linode ~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
mikeage@linode ~$ aptitude -vvv moo
Stop it!
mikeage@linode ~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
mikeage@linode ~$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
mikeage@linode ~$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course. 
Mikeage
источник
19

Официальный инструмент, который в настоящее время используется в установщике Debian и рекомендуется в примечаниях к выпуску, - aptitude.

Aptitude предлагает интерфейс curses (при запуске без каких-либо параметров) и интерфейс командной строки, который может выполнять практически все, что apt-cache/ apt-getделает. Он также имеет лучший механизм разрешения зависимостей, который позволяет вам выбирать между несколькими решениями. Даже при использовании версии из командной строки вы можете взаимодействовать с предлагаемым решением и давать дополнительные указания или подсказки (например, установить или удалить пакет, рекомендованный другим).

Но aptitude основана на библиотеке libapt (это не прямая оболочка dpkg) и поэтому зависит от aptпакета, поэтому вы не можете установить aptitude без apt-get (который также находится в пакете apt).

$ dpkg --status aptitude| grep Depends
Depends: libapt-pkg-libc6.9-6-4.7, [...]
$ dpkg --status apt|grep Provides
Provides: libapt-pkg-libc6.9-6-4.7
$ dpkg --search /usr/lib/libapt-pkg-libc6.9-6.so.4.7 /usr/bin/apt-get
apt: /usr/lib/libapt-pkg-libc6.9-6.so.4.7
apt: /usr/bin/apt-get

Чтобы узнать больше о том, как взаимодействуют apt / dpkg / aptitude, вы можете проверить диаграмму, составленную Дэниелом Берроузом (основным автором aptitude). Другая диаграмма представляет информацию, хранимую различными инструментами управления пакетами: Карта файлов состояния apt и dpkg .

Вы также можете прочитать мою статью apt-get, aptitude, ... выбрать подходящий менеджер пакетов для вас

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

aptitudeзапоминает, какие пакеты вы намеренно установили, а какие были установлены автоматически для удовлетворения зависимостей. После удаления пакета aptitude удалит эти автоматически установленные пакеты, чтобы сохранить вашу систему в чистоте. apt-getне такой умный

aptitudeбыстро станет незаменимым инструментом, если вы будете использовать разные репозитории с разными версиями пакета. Представьте, что вы работаете с backports.org или неофициальными репозиториями, такими как debian-multimedia.org . Затем aptitudeпокажет (в нижней части страницы сведений о конкретном пакете) доступный номер версии и позволит вам выбрать один.

Если вы попадаете в ситуацию, когда программы конфликтуют из-за такого использования неофициальных репозиториев, вы увидите сообщение «Broken: ...» в верхней части. Вы можете набрать l ~ b (limit / flag / broken) и просто получить список пакетов, конфликтующих друг с другом. Облегчает разрешение конфликта вручную.

Кроме того, вы можете использовать " l", чтобы ограничить список пакетов. Представьте, что вы ищете пакеты, которые начинаются с « openoffice », затем нажмите « l» и введите « ^openoffice» (это регулярное выражение), и вы увидите только эти пакеты. Выберите «список плоских пакетов» из меню, и вы быстро достигнете своей цели.

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

aptitude install ... (install or upgrade a package)
aptitude remove ... (remove the binary portions of a package but preserve your /etc configuration)
aptitude purge ... (remove the package completely including your configuration)
Signum
источник
2
На самом деле, с Lenny, apt-get также отслеживает пакеты, установленные только как зависимости от того, что вы явно просили. Я сам использую aptitude, но apt-get autoremoveтеперь удаляю пакеты, которые были установлены как зависимости от пакета, который с тех пор был удален.
Телемах
В настоящее время вы также можете использовать просто, aptи это может сделать смесь вещей, которые apt-getи apt-cacheраньше делали. Например, apt search fooбудут перечислены пакеты, которые содержатся fooв имени или описании. apt install fooустановит вызываемый пакет, fooесли он доступен, и apt policy fooперечислит текущую установленную версию и все доступные версии пакета foo.
Микко Ранталайнен
Они aptitudeвсе еще могут делать больше, чем просто, aptно aptчасто гораздо быстрее.
Микко Ранталайнен
5

Помимо предоставления симпатичного пользовательского интерфейса консоли, когда вы запускаете aptitudeбез аргументов, он объединяет различные apt-*команды (и dselect) в одну утилиту.

Чтобы найти и установить пакет, используя apt-get:

apt-cache search somepkg
apt-get install somepkg

..но с aptitude это та же команда:

aptitude search somepkg
aptitude install somepkg

aptitudeу него есть некоторые дополнительные функции, такие aptitude changelog somepkgкак хранение пакетов (чтобы не допустить их обновления) - ничего, чего вы не могли бы достичь с помощью других команд / методов, это просто более унифицировано и приятно в использовании.

DBR
источник
3
Жаль, что у него нет эквивалента «apt-cache policy».
Hayalci
4

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

похоже, что последние версии apt-get имеют похожую функциональность: http://www.psychocats.net/ubuntu/aptitude

gpilotino
источник
aptitudeили aptфактически не хранит список пакетов, которые были установлены как зависимости для любого данного пакета. Он просто отслеживает, был ли пакет установлен вручную или автоматически. И если пакет был помечен как автоматически установленный, и никакой другой пакет не определяет и не рекомендует его, он будет удален с помощью apt autoremoveили aptitude dist-upgrade.
Микко Ранталайнен
3

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

user3146
источник
1

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

Это действительно делает удивительное управление пакетами.

Coops
источник
1

Самое большое отличие: введите «aptitude» без каких-либо параметров.

Он предоставляет вам текстовый пользовательский интерфейс, вы можете использовать keybord для поиска / навигации и т. Д., Просматривать информацию о зависимостях, обратных зависимостях, всех доступных версиях пакета, и вы можете выполнять над ними любые операции диспетчера пакетов с этого экрана.

Вы можете нажать «g», чтобы просмотреть изменения, изменить дополнения и удаления пакета, если необходимо, и применить все ожидающие операции.

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

hayalci
источник