Aptitude vs. apt-get: Welches ist das empfohlene (auch „richtige“) Tool?

94

Vor einiger Zeit habe ich gelesen, dass dies aptitudedas bevorzugte Tool für die Installation auf Debian-basierten Systemen ist. Wenn Sie sich jedoch umsehen, wie Sie ein Debian-basiertes System verwalten, wird Aptitude selten erwähnt. Die meisten Leute scheinen es zu bevorzugen 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?

Vokuhila-Oliba
quelle
Interessanterweise wird Ubuntu nicht mehr aptitudestandardmäßig installiert .
Mechanische Schnecke
2
Der wichtigste Unterschied für mich ist, dass ich nach gründlichem Lesen der Dokumentation keine Möglichkeit finde, die Quelle eines Pakets über aptitude zu ermitteln. apt-get source package-namewerde es tun, aber ich habe keine entsprechende Eignung gesehen
EricR
2
Eine Sache ist, dass aptitude search package-namein Eignung funktioniert. Ein anderer ist aptitude why package-nameauch nützlich, aber nicht in apt-get. Ich finde auch, dass die Kommandozeile aptitudeetwas aufgeräumt ist im Vergleich zu apt-get. Aber wie du bemerkt hast, gibt es aptitude build-dep package-namedoch keine aptitude source package-name.
Anders

Antworten:

73

aptitudeund apt-getarbeiten für viele Aufgaben gleich, aber für die schwierigsten Fälle, wie etwa 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 übereinstimmen.

Der Grund, warum Sie mehr Dokumentation für apt-getover sehen, aptitudeist größtenteils Trägheit: Es aptitudewar lange nicht das empfohlene Front-End für APT, daher wurde ein Großteil der vorhandenen Dokumentation nicht aktualisiert, und es gibt viele Leute, die die Vorteile von aptitudeover erkennen apt-getaber apt-getreflexartig verwenden.

Ich habe vor kurzem den Punkt erreicht, an dem ich normalerweise aptmit einem iund nicht mit einem folge, -wenn ich tippe.

Postscript Beachten Sie, dass die Regeln, die in apt-getund aptitudefür das Verschieben von Zielen verwendet werden, - wie Hubert in Kommentaren festhält, wird der von Debian Lenny empfohlene Aktualisierungspfad jetzt verwendet apt-get, nicht aptitude. Dies spiegelt die Tatsache wider, dass in apt-getBezug auf das aktuelle Paket weniger Status aufgezeichnet wird als aptitudeund dass der APT-Status nicht mehr "sauber" ist und die apt-getRegeln intelligenter sind als früher. Ich benutze und empfehle immer noch aptitudeüber apt-get, aber es ist eine differenziertere Empfehlung

Charles Stewart
quelle
6
Darüber hinaus ermöglicht aptitude das einfache Durchsuchen möglicher Konfliktlösungen, während bei apt-get in der Regel nur eine Möglichkeit angezeigt wird und Sie diese entweder akzeptieren oder manuell lösen müssen (z. B. mit dpkg).
Liori
20
apt-gethat den Vorteil, speichereffizienter zu sein. Dies ist für die meisten Benutzer unwahrscheinlich. Ich war mir dessen nicht wirklich bewusst, bis ich versuchte, Pakete für eine vollständige Debian-Installation mit 32 MB RAM zu aktualisieren. aptitudeendete damit, ungefähr eine Stunde pro Lauf im Tausch zu krachen; apt-get war deutlich schneller.
Intuited
4
In der offiziellen Debian-Squeeze-Dokumentation heißt es ausdrücklich, dass kein aptitudeUpgrade von Lenny durchgeführt werden soll, obwohl dies für frühere Upgrades unterstützt wurde. Ich denke also nicht, dass es nur Trägheit ist ...
Hubert Kario
@ HubertKario - Ja, in der Tat. Ich habe meine Antwort aktualisiert.
Charles Stewart
Ich kann nur sagen, dass apt-getfast immer Fehler (Erfahrung von Ubuntu Server 12.10, 14.04) dabei aptitudesind, die tatsächlich etwas bewirken können. Ich verstehe immer noch nicht, wie es Apt-Get noch gibt.
Totty.js
20

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

aptitude search flash | grep ^i

Tatsächlich ist aptitudedie Suche bei weitem leistungsfähiger als die Weiterleitung grep, da sie die kontextbezogene Suche unterstützt:

Dies findet zB alle Pakete mit 'flash' im Paketnamen, die installiert sind:

aptitude search '~iflash'

Eine äquivalente "lange Form" der "kurzen Form" ~i:

aptitude search '?installed(flash)'

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

So finden Sie alle Pakete, deren Namen entweder 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 nützliche aptitudeFunktionen:

Zeige alle Pakete mit 'firmware' im Namen, die AUCH 'wireless' in ihrer Beschreibung haben:

aptitude search 'firmware ~dwireless'

oder lange Form:

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

(Hinweis: In der Kurzform werden durch Leerzeichen getrennte 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 ihren aktuellen Versionen 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

Zeige Pakete, die 'gcc-multilib' empfehlen

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

Erklären 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, wie verrückt es ist, seit Squeeze (?) Alle "Recommends" -Pakete zu installieren. Wenn Sie gnome-terminal installieren, müssen Sie ntfsprogs und fuse-utils installieren, egad! Ich denke, die meisten Leute wollen nur die Terminalperspektive und nicht die integrierte NTFS-Integration, die optional ist, sofern sie nicht angegeben wurde.)

Hier finden Sie alle Pakete, die den Dienst "mail-transport-agent" anbieten:

$ 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 nicht unbedingt erforderlich sind oder von 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 'Aptitude'-Betreuer).

Chris P
quelle
4
Suchfunktionen sind verfügbar apt-getüberapt-cache search NAME
EricR
@EricR wahr, aber ich fand keine Suchfunktionen wie diese
niceman
4

Laut den Debian GNU / Linux-FAQ über Paketverwaltung ist aptitude komplexer als apt-get und hängt von den weniger komplexen Paketverwaltungstools apt-get und dpkg ab.

Daher können Sie für einfachere Anforderungen die einfacheren Tools verwenden, während Sie für komplexere Anforderungen auf das ausgefeiltere Tool (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 beiden Programme zu finden sind."

Pagliuca
quelle
3

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

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

Fleischwolf
quelle
Zitieren erforderlich, aber das wäre ein zwingender Unterschied.
Kzqai
Tut apt-getdas eigentlich auch mit apt-get autoremove <package-name>. Beide apt-getund aptitudemarkiere automatisch installierte Pakete
Legionair
Aber aptitudetun aufzuräumen Auto Pakete jedes Mal verwendet wird . Während apt-getSie das explizit starten müssen.
Anders
2

Es gibt kein geeignetes Werkzeug. Sie können beide kombinieren, je nachdem, welches für die jeweilige Aufgabe am besten geeignet ist. aptitude ist ein großartiges Tool für Test- / Sid-Benutzer, aber es ist in der Regel weniger zuverlässig für die Aktualisierung von einem Stall zum nächsten. Siehe meinen Artikel apt-get, aptitude,… wähle den richtigen Paketmanager für dich .

Raphaël Hertzog
quelle