.png)
Я знаю, что и то, 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.
и так далее.