Was ist der Unterschied zwischen apt-get und aptitude?

56

Ich verstehe nicht, warum es zwei verschiedene Programme in einer Minimalinstallation gibt, um Software zu installieren. Tun sie nicht dasselbe? Gibt es einen großen Unterschied? Ich habe überall gelesen, wie man Aptitude gegenüber Apt-Get einsetzt, aber ich kenne den Unterschied immer noch nicht

Thomaschaaf
quelle

Antworten:

48

aptitude ist wie apt-get / apt-cache ein Wrapper für dpkg, aber es ist ein One-Stop-Shop-Tool zum Suchen / Installieren / Entfernen / Abfragen. Einige Beispiele, die apt möglicherweise nicht liefert:

$ aptitude why libc6
i   w64codecs Depends libc6 (>= 2.3.2)
$ aptitude why-not libc6
Unable to find a reason to remove libc6.

$ aptitude show libc6
Package: libc6
State: installed
Automatically installed: no
Version: 2.9-4ubuntu6
Priority: required
Section: libs
Maintainer: Ubuntu Core developers <[email protected]>
Uncompressed Size: 12.1M
Depends: libgcc1, findutils (>= 4.4.0-2ubuntu2)
Suggests: locales, glibc-doc
Conflicts: libterm-readline-gnu-perl (< 1.15-2), 
tzdata (< 2007k-1), tzdata-etch, nscd (< 2.9)
Replaces: belocs-locales-bin
Provides: glibc-2.9-1
Description: GNU C Library: Shared libraries
 Contains the standard libraries that are used by nearly all programs 
 on the system. This package includes shared versions of the standard 
 C library and the standard math library, as well as many others.
katriel
quelle
10
ganz zu schweigen von: $ aptitude
changelog
Andere Tricks, von denen bekannt ist aptitude, dass sie selbst die neuesten aptnicht können: aptitude search '~i linux'Suche nach Paketen mit linuxNamen oder Beschreibung, die installiert sind; aptitude search '~o'listet veraltete Pakete auf (installierte Pakete, die von keinem Repository mehr bereitgestellt werden); aptitude search '!~M ~i'Zeigt Pakete an, die nicht als automatisch installiert markiert sind. aptitude search '~i lib.*-dev'zeigt Entwicklungsbibliotheken installiert und Sie können ersetzen searchmit markautooder unmarkautodiese Pakete als automatisch oder manuell installiert zu markieren.
Mikko Rantalainen
44
mikeage@linode ~$ aptitude -h | tail -n 1
              This aptitude does not have Super Cow Powers.
mikeage@linode ~$ apt-get -h | tail -n 1
                   This APT has Super Cow Powers.
mikeage@linode ~$ aptitude moo
    There are no Easter Eggs in this program.
mikeage@linode ~$ apt-get moo
         (__)
         (oo)
   /------\/
  / |    ||
 *  /\---/\
    ~~   ~~
...."Have you mooed today?"...
mikeage@linode ~$ aptitude -v moo
There really are no Easter Eggs in this program.
mikeage@linode ~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
mikeage@linode ~$ aptitude -vvv moo
Stop it!
mikeage@linode ~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
mikeage@linode ~$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
mikeage@linode ~$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course. 
Mikeage
quelle
19

Das offizielle Tool, das derzeit im Debian-Installer verwendet und in den Versionshinweisen empfohlen wird, ist aptitude.

Aptitude bietet eine Curses-Schnittstelle (wenn es ohne Parameter ausgeführt wird) und eine Befehlszeilenschnittstelle, die fast alles kann, was apt-cache/ kann apt-get. Es hat auch einen besseren Abhängigkeits-Resolver, mit dem Sie zwischen mehreren Lösungen wechseln können. Selbst wenn Sie die Befehlszeilenversion verwenden, können Sie mit der vorgeschlagenen Lösung interagieren und zusätzliche Anweisungen oder Hinweise geben (z. B. das Installieren oder Entfernen eines Pakets, das von einem anderen empfohlen wird).

Aptitude basiert jedoch auf der libapt-Bibliothek (es ist kein direkter Wrapper von dpkg) und hängt als solche vom aptPaket ab, sodass aptitude nicht ohne apt-get installiert werden kann (was auch im apt-Paket enthalten ist).

$ dpkg --status aptitude| grep Depends
Depends: libapt-pkg-libc6.9-6-4.7, [...]
$ dpkg --status apt|grep Provides
Provides: libapt-pkg-libc6.9-6-4.7
$ dpkg --search /usr/lib/libapt-pkg-libc6.9-6.so.4.7 /usr/bin/apt-get
apt: /usr/lib/libapt-pkg-libc6.9-6.so.4.7
apt: /usr/bin/apt-get

Um mehr über die Interaktion von apt / dpkg / aptitude zu erfahren, können Sie das Diagramm von Daniel Burrows (Hauptautor von aptitude) überprüfen . In einem anderen Diagramm werden die Informationen dargestellt, die von den verschiedenen Paketverwaltungstools gespeichert werden: Eine Zuordnung der Statusdateien apt und dpkg .

Sie können auch meinen Artikel apt-get, aptitude, ... lesen. Wählen Sie den richtigen Paketmanager für Sie aus

Raphaël Hertzog
quelle
7

aptitudemerkt sich, welche Pakete Sie absichtlich installiert haben und welche automatisch installiert wurden, um Abhängigkeiten zu erfüllen. Nach dem Entfernen eines Pakets entfernt aptitude diese automatisch installierten Pakete, um Ihr System aufgeräumt zu halten. apt-getist das nicht schlau?

aptitudewird schnell zu einem unverzichtbaren Werkzeug, wenn Sie verschiedene Repositorys mit verschiedenen Versionen eines Pakets verwenden. Stellen Sie sich vor, Sie arbeiten mit backports.org oder inoffiziellen Repositories wie debian-multimedia.org . Anschließend aptitudewird (am unteren Rand der Detailseite eines bestimmten Pakets) die verfügbare Versionsnummer angezeigt und Sie können eine auswählen.

Wenn Sie in eine Situation geraten, in der Programme aufgrund der Verwendung inoffizieller Repositorys in Konflikt geraten, wird oben die Meldung "Defekt: ..." angezeigt. Sie können l ~ b (limit / flag / broken) eingeben und erhalten nur eine Liste von Paketen, die miteinander in Konflikt stehen. Erleichtert die manuelle Lösung des Konflikts erheblich.

Außerdem können Sie ldie Paketliste mit " " einschränken. Stellen Sie sich vor, Sie suchen nach Paketen, die mit " openoffice " beginnen, drücken dann " l" und geben " ^openoffice" ein (es ist ein regulärer Ausdruck), und Sie sehen nur diese Pakete. Wählen Sie eine "Pauschalpaketliste" aus dem Menü und Sie werden Ihr Ziel schnell erreichen.

Das komplette Handbuch ist sehr umfangreich und bietet Ihnen viele weitere Filter und Möglichkeiten. Auch wenn Sie sie nicht kennen, aptitudeist sie ein praktischer Ersatz für apt-getund Sie können sie mit den folgenden Parametern verwenden:

aptitude install ... (install or upgrade a package)
aptitude remove ... (remove the binary portions of a package but preserve your /etc configuration)
aptitude purge ... (remove the package completely including your configuration)
Signum
quelle
2
Tatsächlich verfolgt apt-get ab Lenny auch Pakete, die nur als Abhängigkeiten von etwas installiert wurden, nach dem Sie explizit gefragt haben. Ich benutze aptitude selbst, apt-get autoremoveentferne aber jetzt Pakete, die als Abhängigkeiten eines Pakets installiert wurden, das seitdem entfernt wurde.
Telemachus
Nowdays Sie auch nur verwenden können , aptund es kann eine Mischung von Sachen tun , die apt-getund apt-cacheverwendet zu tun. Beispielsweise apt search foowerden Pakete aufgelistet, die einen fooNamen oder eine Beschreibung enthalten. apt install fooInstalliert das aufgerufene Paket, foofalls verfügbar, und apt policy foolistet die aktuell installierte Version und alle verfügbaren Versionen des Pakets auf foo.
Mikko Rantalainen
Das aptitudekann noch mehr als aptaber schlicht aptgeht oft viel schneller.
Mikko Rantalainen
5

Abgesehen von der Bereitstellung einer hübschen Konsolenbenutzeroberfläche, wenn Sie aptitudeohne Argumente ausgeführt werden, werden die verschiedenen apt-*Befehle (und dselect) in einem Dienstprogramm zusammengefasst.

So suchen Sie mit apt-get nach einem Paket und installieren es:

apt-cache search somepkg
apt-get install somepkg

..aber mit Eignung ist es das gleiche Kommando:

aptitude search somepkg
aptitude install somepkg

aptitudehat einige zusätzliche Funktionen, wie aptitude changelog somepkgund Dinge wie das Halten von Paketen (um zu verhindern, dass sie aktualisiert werden) - nichts, was Sie mit anderen Befehlen / Methoden nicht erreichen könnten, es ist nur einheitlicher und benutzerfreundlicher.

dbr
quelle
3
Schade, dass es keine entsprechende "Apt-Cache-Richtlinie" gibt.
Hayalci
4

Wie Sie wissen, wenn Sie ein Paket installieren, werden auch andere Pakete (Abhängigkeiten) heruntergeladen und installiert. aptitude verfolgt zum Zeitpunkt der Installation die Pakete, die mit dem installierten Paket geliefert werden. Wenn Sie also das letztere entfernen, werden Sie aufgefordert, die anderen (jetzt nicht verwendeten) "verwaisten" Abhängigkeiten zu entfernen. apt-get hält sie still in Ihrem System, wenn Sie das "Haupt" -Paket entfernen.

Es sieht so aus, als ob die neuesten Versionen von apt-get eine ähnliche Funktionalität haben: http://www.psychocats.net/ubuntu/aptitude

gpilotino
quelle
aptitudeoder aptführt tatsächlich keine Liste der Pakete, die als Abhängigkeiten für ein bestimmtes Paket installiert wurden. Es wird einfach nachverfolgt, ob ein Paket manuell oder automatisch installiert wurde. Und wenn ein Paket als automatisch installiert markiert wurde und kein anderes Paket davon abhängt oder empfiehlt, wird es mit apt autoremoveoder entfernt aptitude dist-upgrade.
Mikko Rantalainen
3

Der größte Unterschied besteht darin, dass aptitude so konzipiert ist, dass es interaktiv ist, wenn die apt-Tools besser für die Skripterstellung geeignet sind. Sie können das letztere, dh die apt-Tools, interaktiv und mit viel mehr Aufwand verwenden, um die gleichen Ergebnisse zu erzielen, die aptitude liefert. Wenn Sie sich aus irgendeinem Grund nur für das eine oder andere Tool entscheiden mussten, müssen Sie entscheiden, wie viel Aufwand Sie in Ihre Paketverwaltung investieren möchten.

user3146
quelle
1

Einer der größten Vorteile von aptitude ist die Fähigkeit, Abhängigkeiten zu berechnen. Erstens kann es komplizierte gegenseitige Abhängigkeiten bewältigen, ohne dass Sie selbst eingreifen müssen, was häufig fehlschlägt. Aber wenn Ihnen die vorgestellte Lösung nicht gefällt (und Sie eine eigene Lösung finden, die zeigt, wie gut sie ist), können Sie sie auffordern, eine andere Lösung zur Lösung des Konflikts zu finden.

Es macht wirklich ein paar großartige Paketverwaltung.

Coops
quelle
1

Der größte Unterschied ist: Geben Sie "aptitude" ohne Parameter ein.

Es bietet Ihnen eine textbasierte Benutzeroberfläche. Sie können mithilfe der Tastenkombination suchen / navigieren usw. Informationen zu Abhängigkeiten, umgekehrten Abhängigkeiten und allen verfügbaren Versionen eines Pakets anzeigen und von diesem Bildschirm aus beliebige Paketmanageroperationen ausführen.

Sie können "g" drücken, um die Änderungen zu überprüfen, die Paketzusätze und -entfernungen bei Bedarf zu ändern und alle ausstehenden Vorgänge anzuwenden.

Eine großartige visuelle Möglichkeit der Paketverwaltung über eine SSH-Verbindung oder ein einfaches altes Terminal.

hayalci
quelle