В чем настоящая разница между «apt-get» и «aptitude»? (А как насчет «wajig»?)

В чем настоящая разница между «apt-get» и «aptitude»? (А как насчет «wajig»?)

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

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

решение1

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

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

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

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

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

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

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

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

$ apt-get search foo
E: Invalid operation search

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

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

решение2

Я сам часто задавался этим вопросом.Википедия основные моментычто главная отличительная черта заключается в том, что 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.

решение3

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

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

Так что мой совет — просто apt-get install aptitude :)

решение4

Основываясь на ответе @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.

и так далее.

Связанный контент