Назад | Перейти на главную страницу

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

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

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.
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. 

Официальный инструмент, который в настоящее время используется в установщике 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,… выберите подходящий менеджер пакетов

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

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

Если вы попадете в ситуацию, когда программы конфликтуют из-за такого использования неофициальных репозиториев, вы увидите "Сломано: ..." отображение вверху. Вы можете ввести l ~ b (ограничение / флаг / сломано) и просто получите список пакетов, которые конфликтуют друг с другом. Значительно упрощает разрешение конфликта вручную.

Кроме того, вы можете использовать "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)

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

Чтобы найти пакет и установить его с помощью apt-get:

apt-cache search somepkg
apt-get install somepkg

..но со способностями это та же команда:

aptitude search somepkg
aptitude install somepkg

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

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

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

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

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

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

Самая большая разница: введите «aptitude» без параметров.

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

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

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