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

125

При установке программного обеспечения через dpkg -i packageA.deb, будут packageAли загружаться и устанавливаться автоматически требуемые зависимости ? Чем это отличается от использования apt-getили aptitude?

Аникет Тхакур
источник
Связанные (особенно в отношении зависимостей): askubuntu.com/q/40779/250300
Melebius

Ответы:

168

Нет, dpkgтолько устанавливает пакет, поэтому он dpkg -i packageName.debустановит только этот пакет Deb и уведомит вас о любых зависимостях, которые необходимо установить, но не установит их и не настроит, packageName.debпотому что хорошо ... зависимости не там.

apt-getэто система управления пакетами , который управляет установкой пакетов DEB на дистрибутивах Linux Debian на базе . Система управления пакетами - это набор инструментов, которые помогут вам легко устанавливать, удалять и изменять пакеты. Так apt-getпохоже на умного dpkg.

Мне нравится думать о графике времени таким образом (ниже я просто говорю из опыта. Он предназначен только для того, чтобы дать вам представление обо всем этом):

  • Они придумали способ «хранить» файлы приложения в «пакете», чтобы его можно было легко установить. Итак, пакет Deb ( .debфайл расширения ) родился.

    .debФайл содержит файлы , необходимые приложения для работы, а также (я хотел назвать его) «мета-данных» , который содержит другую информацию, такую как имена зависимостей с потребностями конкретного приложения. Если вы хотите просмотреть содержимое .debфайла, вы можете использовать команду dpkg -c packageName.deb, а если вы хотите увидеть эту информацию «метаданных», используйте команду dpkg -I pacakgeName.deb(и если вы хотите видеть только зависимости, сделайте dpkg -I packageName.deb | grep Depends).

  • Им нужен инструмент для установки этих .debфайлов, поэтому они придумали dpkgинструмент. Этот инструмент, однако, просто установит .debфайл, но не установит его зависимости, потому что у него нет этих файлов, и у него нет доступа к «хранилищам», из которых можно извлечь зависимости.

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

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

Кроме того, aptitudeне имеет Super Cow Powers.

РЕДАКТИРОВАТЬ: Видимо, это так. aptitude -v[v[v[v[v]]]] moo,

aptitudeможет быть не установлен по умолчанию. Чтобы установить его, сделайте sudo apt-get install aptitudeили нажмите здесь: aptitudeУстановить aptitude .


дополнительный

Следующая информация на самом деле не дает прямого ответа «В чем разница между dpkg и aptitude / apt-get? », Но она способствует общей картине.


От Карлоса Campderrós ' комментарий ниже :

gdebiэто еще один инструмент, который представляет собой смесь между apt-getи aptitude. Когда вы используете его для установки .debпакета ( gdebi packageName.deb), он идентифицирует отсутствующие зависимости, устанавливает их с помощью apt-get, а затем, наконец, устанавливает и настраивает пакет с помощью dpkg. Он даже имеет простой и удобный графический интерфейс, который дает вам информацию о .debпакете, файлах, включенных в пакет, и какие зависимости необходимо установить. Чтобы увидеть этот графический интерфейс, вы бы сделали gdebi-gtk packageName.deb. Вы можете gdebiпопробовать, установив его с помощью sudo apt-get install gdebiили нажав здесь: gdebiУстановите gdebi .


Я не хочу никого вводить в заблуждение, но просто для того, чтобы дать вам другую часть картины, есть еще один популярный формат пакетов Linux, называемый RPM, и его файлы имеют .rpmрасширение. Этот формат пакета используется в дистрибутивах Linux на основе RPM (таких как Red Hat, CentOS и Fedora). Они используют команду, rpmчтобы установить пакет, и yumэто интерфейс для него, он умный. Таким образом, их .rpmфайлы - это наши .debфайлы, их rpmинструмент - наш dpkgинструмент, а их yumнаш apt-get.

Из Пэдди Ландау «s комментарий ниже :

alienэто инструмент, который конвертирует между .rpmи .debпакетами. Поэтому, если вы когда-нибудь попадете в ситуацию, когда у вас есть .rpmпакет, и вы захотите установить его на свой Ubuntu (или любой другой дистрибутив на основе Debian), вы можете использовать команду, alien rpm_packageName.rpmчтобы преобразовать его в .deb, а затем установить его, используя dpkg. Вы можете сделать обратное (преобразовать .debв .rpm), используя alien -r packageName.deb.

Алаа али
источник
5
Это было очень полезно и именно то, что я искал. Tx!
Аникет Тхакур
4
Также вы можете использовать gdebi( apt-get install gdebi-core), который смешивает apt-get/ aptitudeс dpkg. Вы вызываете его, gdebi some_package.debи он анализирует свои зависимости, вызывает, apt-getчтобы установить недостающие, и когда все зависимости будут выполнены, затем вызывается, dpkgчтобы окончательно установить ваш пакет.
Карлос Кампдеррос
2
@Alaa В разделе Extra вы также можете упомянуть, что alienконвертирует пакеты между .rpmи .deb. Это полезно для пакетов, доступных для RPM, но не для DEB (или наоборот). Например, alien packagename.rpmчтобы сделать его пригодным для использования в Ubuntu.
Пэдди Ландау
1
@AlaaAli aptitude- не фронтенд для apt-get. Обе программы являются интерфейсом для libapt-pkgбиблиотеки.
Элия ​​Каган
1
@edwardtorvalds AskUbuntu - это сайт вопросов и ответов. Ищите свой ответ здесь на сайте среди тысяч старых вопросов, и, если вы его не найдете, задайте свой вопрос, надеюсь, ответят и более опытные люди, чем я.
Алаа Али
5

APT-получить

Управление пакетами apt-getвыполняется вручную, с помощью /etc/apt/sources.listфайла.

apt-get install <package_name> устанавливает новый пакет на ваш компьютер.

apt-get build-dep <package_name> Эта команда выполняет поиск в репозиториях и устанавливает зависимости для сборки. Если пакет отсутствует в репозиториях, он вернет ошибку.

apt-get install <package1_name> <package2_name> <package3_name> apt-get позволяет установку нескольких пакетов. разделите пакеты пробелом.

auto-apt run <command_string> При вызове команда auto-apt автоматически устанавливает пакеты при отсутствии доступа к файлам. Если программа пытается получить доступ к файлу, который, как известно, принадлежит к неустановленному пакету, auto-apt установит этот пакет с помощью apt-get. Эта функция требует apt и sudo для работы.

Посетите страницу инструкций apt-get

уместность

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

aptitude имеет собственную оболочку, которая активируется клавиатурой или мышью и работает в окне терминала

aptitude build-dep <package> - Установите зависимости пакетов от пакетов - это означает, что пакеты необходимы для компиляции (или сборки ) пакета с исходным кодом. Например, многие пакеты нужно debhelperили autotoolsнужно собрать, но они не нужны для запуска.

Посетите страницу инструкции aptitude

Dpkg

это инструмент для установки, сборки, удаления и управления пакетами Debian. ссылка

dpkg -i <package.deb>устанавливает пакет Debian на ваш компьютер. Он не устанавливает никаких зависимостей, насколько я могу узнать из файлов справки.

Для получения подробной информации введите dpkg --helpв окне терминала.

руководства

руководство по управлению файлами можно найти здесь

SimplySimon
источник
0

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

Это потому, что dpkgпредназначен для установки пакетов без установки зависимых пакетов. Из-за этого просто установка пакета с dpkg, может привести к более поздней проблеме, когда разрешение зависимостей может привести к поломке системы.

Вы должны использовать командную строку apt-getили apt(с 14.04) инструмент для установки пакетов. Эти инструменты используются dpkgдля вас и в то же время имеют механизм разрешения зависимостей внутри.

Прости
источник