Aptitude vs. apt-get: Welches ist das empfohlene (auch "richtige") Werkzeug?

49969
Vokuhila-Oliba

Vor einiger Zeit habe ich gelesen, dass dies aptitudedas bevorzugte Werkzeug für die Installation auf Debian-basierten Systemen ist. Wenn Sie jedoch nach Informationen zur Verwaltung eines Debian-basierten Systems suchen, wird aptitude selten erwähnt. Die meisten Leute scheinen es vorzuziehen apt-get- und das gilt sogar für die Debian-Wiki-Seiten!

Ich frage mich also, ob ich etwas verpasst habe. Welches ist das richtige Werkzeug?

93
Interessanterweise installiert Ubuntu standardmäßig nicht mehr "aptitude". Mechanical snail vor 12 Jahren 0
Der wichtigste Unterschied für mich ist, dass ich nach gründlicher Lektüre der Dokumente keinen Weg finden kann, über aptitude die Quelle eines Pakets zu finden. "apt-get source package-name" wird es tun, aber ich habe kein entsprechendes Eignungsverhältnis gesehen EricR vor 12 Jahren 2
Eine Sache ist, dass "aptitude search package-name" in aptitude funktioniert. Ein weiterer Grund ist "aptitude", warum package-name auch nützlich ist, aber nicht in "apt-get". Ich denke auch, dass die Befehlszeile von "aptitude" im Vergleich zu "apt-get" etwas aufgeräumt ist. Wie Sie jedoch bemerkt haben, gibt es zwar 'aptitude build-dep package-name', aber keinen 'aptitude source package-name'. Anders vor 10 Jahren 2

5 Antworten auf die Frage

72
Charles Stewart

aptitudeund apt-getfunktionieren für viele Aufgaben gleich, aber für die schwierigsten Fälle, wie zum Beispiel Distributions-Upgrades ( apt-get dist-upgradevs. aptitude full-upgrade), gelten andere Regeln, und die Regeln von aptitude sind in der Praxis fast immer besser, wenn sie nicht einverstanden sind.

Der Grund, warum Sie mehr Dokumentation zu sehen apt-getüber aptitudemeist Trägheit: aptitudehat alle empfohlenen Frontend APT nicht gewesen so lange, so viel von der vorhandenen Dokumentation wurde nicht aktualisiert, und es gibt viele Menschen, die die Vorteile erkennen, aptitudeüber apt-getaber verwenden Sie apt-getreflexiv.

Ich bin vor kurzem zu dem Punkt gekommen, an dem ich normalerweise aptein iund nicht ein, -wenn ich tippe, folge .

Postscript Beachten Sie, dass die in apt-getund verwandten Regeln aptitudebewegliche Ziele sind - wie Hubert in Kommentaren feststellt, wird der von Debian Lenny empfohlene Upgrade-Pfad jetzt verwendet apt-get, nicht aptitude. Dies spiegelt die Tatsache wider, dass apt-getweniger Status über das aktuelle Paket als verfolgt wird aptitude, und dass der APT-Status nicht "sauber" sein muss und dass apt-getRegeln intelligenter sind als früher. Ich benutze und empfehle es aptitudeimmer noch apt-get, aber es ist eine differenziertere Empfehlung

Darüber hinaus erlaubt aptitude das einfache Durchsuchen möglicher Konfliktlösungen, während bei apt-get normalerweise nur eine Möglichkeit angezeigt wird, die entweder akzeptiert wird, oder dass Sie die Lösung von Hand annehmen müssen (z. B. mit dpkg). liori vor 14 Jahren 6
"apt-get" hat den Vorteil, dass es speichereffizienter ist. Dies ist für die meisten Benutzer unwahrscheinlich; Ich wusste es nicht wirklich, bis ich versuchte, Pakete auf eine vollständige Debian-Installation mit 32 MB RAM zu aktualisieren. "aptitude" endete ungefähr eine Stunde pro Lauf im Tausch. apt-get war deutlich schneller. intuited vor 14 Jahren 20
In der offiziellen Debian-Squeeze-Dokumentation wird ausdrücklich erklärt, "Aptitude" für das Upgrade von Lenny nicht zu verwenden, obwohl es für frühere Upgrades unterstützt wurde. Ich glaube nicht, dass dies nur Trägheit ist ... Hubert Kario vor 12 Jahren 4
@HubertKario - Ja, in der Tat. Ich habe meine Antwort aktualisiert. Charles Stewart vor 12 Jahren 0
Ich kann nur sagen, dass "apt-get" fast immer Fehler auslöst (Erfahrung mit dem Ubuntu-Server 12.10, 14.04), während "aptitude" tatsächlich etwas bewirken kann. Ich verstehe immer noch nicht, wie apt-get noch existiert. Totty.js vor 10 Jahren 0
19
Chris P

aptitudemacht es bequem zu zeigen, welche Programme in einer Suche Sie bereits auf dem System installiert haben (mithilfe von grep):

aptitude search flash | grep ^i 

Tatsächlich ist aptitudedie Suche weitaus mächtiger als das, was Sie durchblättern können grep, da sie die kontextabhängige Suche unterstützt:

Dies findet zB alle Pakete mit dem Namen 'flash', die installiert sind:

aptitude search '~iflash' 

Eine äquivalente "Langform" der "Kurzform" ~i:

aptitude search '?installed(flash)' 

Beachten Sie, dass Suchmuster standardmäßig kostenlos (nicht verankert) sind. Um sie zu verankern, müssen Sie die Ankermuster ' ^' (Stringanfang) und / oder ' $' (Stringende) verwenden.

Um alle Pakete zu finden, deren Namen mit 'ttf' oder 'font' beginnen:

aptitude search '(^ttf|^font)' 

(Hinweis: Dies ist eine Abhilfe für einen Fehler ist in aptitude, wie die richtige regex von '^(ttf|font)'funktioniert nicht richtig - es findet Pakete, deren Namen beginnen mit ‚ttf‘ oder enthalten ‚font‘.)

Weitere tolle aptitudeFunktionen:

Zeigen Sie alle Pakete mit "Firmware" im Namen an, für die in der Beschreibung auch "Wireless" angegeben ist:

aptitude search 'firmware ~dwireless' 

oder lange Form:

aptitude search '?and(?name(firmware),?description(wireless))' 

(Hinweis: In der Kurzform werden die durch Leerzeichen getrennten Argumente in Anführungszeichen UND-verknüpft; wenn sie als separate argv [] - Befehlszeilenargumente übergeben werden, werden sie ODER-verknüpft.)

p atmel-firmware - Firmware for Atmel at76c50x wireless networking chips. p firmware-atheros - Binary firmware for Atheros wireless cards ... p libertas-firmware - Firmware for Marvell's libertas wireless chip series p zd1211-firmware - Firmware images for the zd1211rw wireless driver 

~U Zeigt alle Pakete an, die von ihrer aktuellen Version mit neuen Versionen aktualisiert werden können:

# aptitude update ; aptitude versions '~U' Package virtualbox-4.1:  i 4.1.18-78361~Debian~squeeze 100 p 4.1.20-80170~Debian~squeeze <NULL> 500 

Pakete anzeigen, die 'gcc-multilib' empfehlen

$ aptitude search '~DRecommends:gcc-multilib' i libc6-dev-i386 - Embedded GNU C Library: 32-bit development libraries for AMD64 

Erläutern Sie, warum möglicherweise "Sicherungs-Utils" installiert werden müssen

$ aptitude why fuse-utils i xorg Depends xterm | x-terminal-emulator pi gnome-terminal Provides x-terminal-emulator pi gnome-terminal Recommends gvfs pi gvfs Depends libgdu0 (>= 2.29.90) pi libgdu0 Depends udisks (< 1.1.0) pi udisks Recommends ntfsprogs pi ntfsprogs Depends fuse-utils (> 2.5.0) 

(Dieses Beispiel zeigt etwas von der Verrücktheit, die sich seit Squeeze (?) Der Installation aller "Recommends" -Pakete durch die Standardeinstellung ergibt.) Die Installation von gnome-terminal endet mit der Installation von ntfsprogs und fuse-utils, egad! Ich glaube, die meisten Leute wollen nur die Terminalperspektive und nicht die eingebaute NTFS-Integration, die optional ist, sofern sie nicht angegeben wurde.)

Finden Sie alle Pakete, die den Dienst "Mail-Transport-Agent" bereitstellen:

$ aptitude search '?provides(mail-transport-agent)' p citadel-mta - complete and feature-rich groupware server (mail transport agent) ... p nullmailer - simple relay-only mail transport agent p postfix - High-performance mail transport agent i sendmail-bin - powerful, efficient, and scalable Mail Transport Agent p ssmtp - extremely simple MTA to get mail off the system to a mail hub p xmail - advanced, fast and reliable ESMTP/POP3 mail server 

Zeigen Sie alle installierten Paketnamen an, die weder nach Essential noch nach Abhängigkeiten automatisch installiert werden:

$ aptitude search '~i!(~E|~M)' -F '%p' 

Leider ist dieses Zeug ziemlich schlecht dokumentiert und schwer zu finden, aber hier ist die beste Referenz (vom Eignungsbetreuer).

Suchfunktionen sind von `apt-get` über` apt-cache search NAME 'verfügbar EricR vor 12 Jahren 4
@EricR true, aber ich habe keine Suchfunktionen gefunden niceman vor 9 Jahren 0
4
pagliuca

Gemäß den Debian GNU / Linux-FAQs zum Paketmanagement ist aptitude komplexer als apt-get und hängt von den weniger komplexen Paketmanagement-Tools apt-get und dpkg ab.

Für einfachere Anforderungen können Sie daher die einfacheren Werkzeuge verwenden, während Sie für komplexere Anforderungen auf das komplexere Werkzeug (apitude) zählen können.

Zitat aus der Debian-FAQ: "aptitude bietet die Funktionalität von dselect und apt-get sowie viele zusätzliche Funktionen, die in keinem der Programme vorhanden sind."

3
Fleshgrinder

aptitude kennzeichnet Pakete, die aufgrund einer Abhängigkeit vom Auto-Tag installiert wurden. Wenn Sie jetzt ein Paket löschen oder entfernen, entfernt aptitude automatisch die automatisch installierten Pakete, die nicht mehr verwendet werden, neben dem Paket, das Sie löschen oder entfernen möchten.

Dies ist der Hauptgrund, warum ich persönlich glaube, dass Eignung immer besser ist als Apt.

Zitieren nötig, aber das wäre ein überzeugender Unterschied. Kzqai vor 11 Jahren 0
Zitierung: http://debian-handbook.info/browse/stable/sect.apt-frontends.html#idp16498256 deizel vor 11 Jahren 0
Actually `apt-get` does that as well, with `apt-get autoremove `. Both `apt-get` and `aptitude` mark auto-installed packages Legionair vor 10 Jahren 0
"Aptitude" bereinigt jedoch bei jeder Verwendung die automatischen Pakete. Während "apt-get" müssen Sie das explizit starten. Anders vor 10 Jahren 0
2
Raphaël Hertzog

Es gibt kein passendes Werkzeug. Sie können beide kombinieren, je nachdem, welches für Ihre Aufgabe am besten geeignet ist. aptitude ist ein großartiges Werkzeug für Testbenutzer / Sid-Benutzer, aber es ist weniger zuverlässig, wenn Sie ein Upgrade von einem Stall auf den nächsten durchführen möchten. Sehen Sie meinen Artikel apt-get, aptitude,… und wählen Sie den richtigen Paketmanager für Sie aus .