it-swarm.com.de

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

Vor einiger Zeit habe ich gelesen, dass aptitude das 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 apt-get zu bevorzugen - 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
Vokuhila-Oliba

aptitude und apt-get funktionieren für viele Aufgaben gleich, aber für die schwierigsten Fälle, wie z. B. Distributions-Upgrades (apt-get dist-upgrade vs. 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-get über aptitude sehen, ist größtenteils die Trägheit: aptitude war so lange nicht das empfohlene Front-End für APT, so dass ein Großteil der vorhandenen Dokumentation nicht aktualisiert wurde und es gibt Viele Leute, die die Vorteile von aptitude gegenüber apt-get erkennen, aber apt-get reflexiv verwenden.

Ich habe kürzlich den Punkt erreicht, an dem ich apt normalerweise mit einer i und nicht mit einem - folge, wenn ich tippe.

Postscript Beachten Sie, dass die in apt-get und aptitude verwendeten Regeln bewegliche Ziele sind - wie Hubert in Kommentaren bemerkt, verwendet der von Debian Lenny empfohlene Upgrade-Pfad jetzt apt-get, nicht aptitude. Dies spiegelt die Tatsache wider, dass apt-get weniger Statusinformationen zum aktuellen Paket als aptitude enthält und sich daher keine Sorgen darüber machen muss, dass der APT -Status nicht "sauber" ist und dass apt-get-Regeln intelligenter sind als früher Sein. Ich verwende und empfehle weiterhin aptitude über apt-get, aber es ist eine differenziertere Empfehlung

72
Charles Stewart

Mit aptitude können Sie bequem anzeigen, welche Programme in einer Suche bereits auf dem System installiert sind (mithilfe von grep):

aptitude search flash | grep ^i

Tatsächlich ist die Suche in aptitude weitaus leistungsfähiger als die Suche in grep, da sie die kontextbezogene Suche unterstützt:

dies findet z. B. alle Pakete, die 'flash' im Paketnamen enthalten und 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 '^' (Stringanfang) und/oder '$' (Stringende) verwenden.

So finden Sie alle Pakete, deren Namen entweder mit 'ttf' oder 'font' beginnen:

aptitude search '(^ttf|^font)'

(Hinweis: Dies ist eine Problemumgehung für einen Fehler in aptitude, da die korrekte Regex von '^(ttf|font)' nicht ordnungsgemäß funktioniert. Es werden Pakete gefunden, deren Namen mit 'ttf' beginnen oder enthalten .) Schriftart'.)

Andere raffinierte aptitude Funktionen:

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 'Fuse-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).

20
Chris P

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

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."

4
pagliuca

aptitude markiert 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.

3
Fleshgrinder

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 .

2