Was ist der wirkliche Unterschied zwischen "apt-get" und "aptitude"? (Wie wäre es mit "Wajig"?)


256

Ich weiß, dass beide apt-getund aptitudeKommandozeilen-Paketverwaltungsoberflächen unter von Debian abgeleitetem Linux mit unterschiedlichen Optionen sind, aber ich bin immer noch etwas verwirrt. Verwenden sie nicht unter der Haube dasselbe APT-System?

Warum unterhält Debian diese parallelen Werkzeuge? ( Bonusfrage : Was um alles in der Welt ist Wajig ?)


Ich weiß, es ist nicht der richtige Beantworter für Ihre Frage, aber warum können Sie es nicht mit Synapsen versuchen? Es ist sehr benutzerfreundlich und lädt Abhängigkeiten automatisch herunter und installiert sie. Ist Gnome nicht auf Ihrem System vorhanden?
Hemant

Ich bin voreingenommen, aber ich denke, diese Frage auf der Ubuntu SE-Site könnte relevant sein.
David Z


@Wim, wegen des wajig Teils dieser Frage habe ich beschlossen, 244 in diese Frage zu integrieren, anstatt umgekehrt
Xenoterracide

1
Es ist erwähnenswert, dass aptitude in der nächsten Version von Ubuntu von der Standardinstallation entfernt werden soll (obwohl Sie es später immer mit apt-get installieren könnten)
Rob Cowell

Antworten:


223

Der offensichtlichste Unterschied besteht darin, dass aptitudeeine Terminal-Menüoberfläche bereitgestellt wird (ähnlich wie bei Synaptic in einem Terminal), wohingegen apt-getdies nicht der Fall ist.

Betrachtet man nur die Befehlszeilenschnittstellen, so sind sie sich ziemlich ähnlich, und zum größten Teil ist es wirklich egal, welche Sie verwenden. In den neuesten Versionen von beiden wird nachverfolgt, welche Pakete manuell installiert wurden und welche als Abhängigkeiten installiert wurden (und daher zum automatischen Entfernen berechtigt sind). Tatsächlich glaube ich, dass die beiden Tools in jüngerer Zeit aktualisiert wurden, um tatsächlich dieselbe Datenbank von manuell oder automatisch installierten Paketen gemeinsam zu nutzen. Daher sind Fälle, in denen Sie etwas mit apt-get installieren und dann von aptitude deinstallieren möchten, meist eine Sache von die Vergangenheit.

Es gibt ein paar kleine Unterschiede:

  • aptitude entfernt automatisch in Frage kommende Pakete, wohingegen apt-get einen separaten Befehl benötigt, um dies zu tun
  • Die Befehle für Upgrade vs. Dist-Upgrade wurden entsprechend den wahrscheinlich genaueren Bezeichnungen Safe-Upgrade bzw. Full-Upgrade umbenannt.
  • aptitude führt tatsächlich nicht nur die Funktionen von apt-get aus, sondern auch einige seiner Begleittools wie apt-cache und apt-mark.
  • aptitude hat eine etwas andere Abfragesyntax für die Suche (im Vergleich zu apt-cache)
  • aptitude verfügt über die Befehle why und why-not , mit denen Sie erfahren, welche manuell installierten Pakete eine Aktion verhindern, die Sie möglicherweise ausführen möchten.
  • Wenn die Aktionen (Installieren, Entfernen, Aktualisieren von Paketen), die Sie ausführen möchten, Konflikte verursachen, kann aptitude mehrere mögliche Lösungen vorschlagen. apt-get sagt nur "Es tut mir leid, Dave, das darfst du nicht."

Es gibt noch andere kleine Unterschiede, aber das sind die wichtigsten, die ich mir vorstellen kann.

Kurz gesagt, Aptitude gehört mit Synaptic und anderen übergeordneten Paketmanager-Frontends besser in die Kategorie. Es ist einfach so, dass es auch eine Befehlszeilenschnittstelle gibt, die apt-get ähnelt.

Bonusrunde: Was ist Wajig?

Erinnerst du dich, wie ich diese "Begleiter" -Tools wie apt-cache und apt-mark erwähnt habe? Nun, es gibt eine Menge von ihnen, und wenn Sie sie häufig verwenden, können Sie sich möglicherweise nicht erinnern, welche welche Befehle bereitstellen. Wajig ist eine Lösung für dieses Problem. Es ist im Wesentlichen ein Dispatcher, eine Hülle um all diese Werkzeuge. Es gilt auch sudo, wenn nötig. Wenn Sie sagen wajig install foo, sagt wajig "Ok, installwird von bereitgestellt apt-getund erfordert Administratorrechte" und wird ausgeführt sudo apt-get install foo. Wenn Sie sagen wajig search foo, sagt wajig "Ok, searchwird von bereitgestellt apt-cacheund erfordert keine Administratorrechte" und wird ausgeführt apt-cache search foo. Wenn Sie wajig anstelle von apt-get, apt-mark, apt-cache und anderen verwenden, wird dieses Problem nie auftreten:

$ apt-get search foo
E: Invalid operation search

Wenn Sie wissen möchten, was wajig hinter den Kulissen tut, welche Tools es verwendet, um einen bestimmten Befehl zu implementieren, verfügt es über --simulateund --teachingModi.

Zwei wajig Befehle, die ich oft benutze, sind wajig listfiles foound wajig whichpkg /usr/bin/foo.


Ein großes Problem, das ich mit aptitude hatte, ist, dass es sehr lange dauert, Tab-Vervollständigungen für Paketnamen (z. B. aptitude install linux-imtab) zu erhalten, während es für apt-get sehr schnell ist. In der Apt-Get-Familie scheint es etwas Caching zu geben, das für Eignung fehlt.
Levesque

12
aptitudeHaben aptitude searchSie auch die tolle , die Sie mit sehr leistungsfähigen Suchmustern verwenden können . Du hast aptitude reinstall. Sie können auch die ncurses (Terminal - Menü) Schnittstelle verwenden , um komplexe Paketoperationen vorbereiten wie Teil Upgrade, ein Paket entfernen, ein anderes einfrieren, diese ein Upgrade, dass Sie dann in einer einzigen Operation ausführen kann ... Oh, und es hat eine interaktiver Konfliktlöser .
Totor

3
@Totor Heilige Kuh, mit der ncurses-Schnittstelle von aptitude Befehle vorzubereiten, hat mich ein für alle Mal bei aptitude verkauft! (Nach Jahren des Denkens, dass Eignung es wert ist, getan zu werden, aber das Eingeben von Eignung aus dem Muskelgedächtnis)
TJ Ellis,

2
... und muss aptitudeauch aptitude download package-namedas Paket .deb abrufen!
Totor

2
Es ist nur eine Sache, die ich gefunden habe, die nicht drin ist, aptitudesondern drin ist apt-get, und das ist apt-get --compile source package-name. apt-get build-dep package-namegibt es aber ich denke das aptitude build-dep package-namemacht einen besseren job.
Anders

71

Ich habe mich oft gefragt. Wikipedia hebt hervor, dass das Hauptunterscheidungsmerkmal darin besteht, dass aptitude über eine Vollbild-Textmodus-Oberfläche (Curses) verfügt. Die Tatsache, dass Sie die meisten apt-getBefehlsargumente mit sich aptitudeselbst verwenden können, ist nur eine Entwurfsentscheidung, um apt-getBenutzern den Wechsel zu aptitudeund umgekehrt zu erleichtern .

Ich habe es noch nie benutzt wajig, aber die Dokumentation legt nahe, dass es nur ein Skript ist, das weiß, ob Sie ihm eine debDatei (wenn es ausgeführt wird dpkg) oder einen aptPaketnamen (wenn es apt-getstattdessen ausgeführt wird) übergeben. Könnten Sie es ausprobieren und sehen, ob es das ist, was es tut?

Der wirkliche Unterschied ist natürlich :

gaurav@fern:~$ apt-get moo
         (__) 
         (oo) 
   /------\/ 
  / |    ||   
 *  /\---/\ 
    ~~   ~~   
...."Have you mooed today?"...
gaurav@fern:~$ aptitude moo
There are no Easter Eggs in this program.

52
Nein! aptitudehat mehr. Sie haben vergessen, die endlosen -vFlaggen zu setzen moo. (Sie können nach oben gehen -vvvvvv)
Umang

12
Vergessen Sie nicht die wichtigen Superkuhkräfte, die es apt-getgibt, aptitudeaber nicht gibt. (Probieren Sie --helpbeide aus)
derobert

lmao. Das ist eine lustige Antwort zu lesen, obwohl @ Ryan Antwort weitaus aufwändiger ist;)
Michael Trouw

26

aptitude ist das bevorzugte Programm für die Paketverwaltung über die Konsole, sowohl für Paketinstallationen als auch für Paket- oder Systemupgrades in Debian.

Hier ist eine Übersicht über das Tool und die Funktionen, die es bietet: http://www.debian.org/doc/FAQ/ch-pkgtools.en.html#s-aptitude

Also, mein Rat ist, apt-get aptitude einfach zu installieren :)


2
In den Versionshinweisen heißt es, dass apt-get jetzt über aptitude empfohlen wird, damit Upgrades komprimiert werden können.
jrdioko

1
Ja, aber nur dafür. Andernfalls werden sie als gleich angesehen, aptitudeverfügen jedoch über viele erweiterte Funktionen wie die Suche und den Vollbildmodus als apt-get.
Anders

Aus irgendeinem Grund verwendet Aptitude, um Emacs zu installieren und ohne es zu sehen, entfernt GDM! Also für den Moment werde ich apt-get verwenden, bin aber sehr neugierig auf Eignung.
TomFirth

20

aptitudemerkt sich, welche Pakete explizit angefordert und welche nur aufgrund von Abhängigkeiten installiert wurden. Es werden automatisch Pakete deinstalliert, die nicht explizit angefordert wurden, wenn sie nicht mehr benötigt werden.

apt-get Behandelt explizit angeforderte Pakete und deren Abhängigkeiten gleich.

Eine bessere Verwendung aptitudeträgt dazu bei, Ihr System sauber zu halten.


4
Das war früher so, aber ich weiß, dass mein apt-get einen apt-get autoremoveBefehl zum Entfernen von Paketen hat, die nur als Abhängigkeiten installiert sind. Ich weiß nicht, wann dieses Feature hinzugefügt wurde, aber eine Website schlägt vor, dass es mit Debian Lenny (Juni 2010) geschehen sein könnte.
Gaurav

8
apt-get autoremoveEntfernt keine Pakete, die nur als Abhängigkeiten installiert wurden, sondern verwaiste Abhängigkeiten, was ein subtiler Unterschied ist. Es kann nicht sagen, ob ein 'leaf'-Paket mit Absicht oder als Abhängigkeit installiert wurde, sodass es dort verbleibt, wo aptitude es wissen und entfernen würde.
pjz

Ich bin verkauft! Es gibt noch andere nette Dinge, aptitudeaber dies ist zweifellos ein Killer-Feature.
iconoclast

12

apt-getWie auch die verschiedenen Begleittools verbrauchen sie erheblich weniger Speicher als die entsprechenden Befehlszeilenaufrufe von aptitudeund sind etwas schneller. Ich war mir dessen glücklicherweise nicht bewusst, bis ich versuchte, die Debian-Installation auf einem alten Pentium-Thinkpad mit 32 MB RAM zu aktualisieren. Es würde ein oder zwei Stunden dauern, bis das Swap-Thrashing apt-geterfolgreich abgeschlossen war. aptitudewürde scheitern, wenn ich länger nachdenke.

Diese Unterscheidung ist für alles, was einem modernen Desktop-System ähnelt, mehr oder weniger irrelevant.


9

Aufbauend auf der Antwort von @ Gaurav sind die Ostereier in den beiden Paketmanagern ziemlich lustig !:

siddhartha@siddhartha-dev:~$ apt-get  moo
             (__) 
             (oo) 
       /------\/ 
      / |    ||   
     *  /\---/\ 
        ~~   ~~   
..."Have you mooed today?"...

siddhartha@siddhartha-dev:~$ aptitude  moo
There are no Easter Eggs in this program.
siddhartha@siddhartha-dev:~$ aptitude -v moo
There really are no Easter Eggs in this program.
siddhartha@siddhartha-dev:~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
siddhartha@siddhartha-dev:~$ aptitude -vvv moo
Stop it!
siddhartha@siddhartha-dev:~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
siddhartha@siddhartha-dev:~$ aptitude -vvvvv moo
All right, you win.

                               /----\
                       -------/      \
                      /               \
                     /                |
   -----------------/                  --------\
   ----------------------------------------------
siddhartha@siddhartha-dev:~$ aptitude -vvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.
siddhartha@siddhartha-dev:~$ aptitude -vvvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.
siddhartha@siddhartha-dev:~$ aptitude -vvvvvvvv moo
What is it?  It's an elephant being eaten by a snake, of course.

und so weiter.



7

Wie bereits erwähnt , ist die Verwendung der Befehlszeilenschnittstelle unter http://pthree.org/2007/08/12/aptitude-vs-apt-get/aptitude wesentlich einfacher.

Verwenden sie nicht unter der Haube dasselbe APT-System? Ja.

Das zugrunde liegende System ist nicht nur apt, sondern dpkg. Dieses System ist genauso doof wie RPM, es kann nur die Installation und Verwaltung einzelner Pakete übernehmen. Es wird nachverfolgt, welche installierten Dateien zu welchem ​​Paket gehören.

aptübernimmt das Herunterladen von Repositorys, das Verfolgen von Abhängigkeiten usw. für alle einzelnen Pakete, die dann mithilfe von installiert werden dpkg. aptitudetut dasselbe mit einer anderen Schnittstelle.


6

Apt-get und aptitude hängen von der APT-Bibliothek ab, ja.

Siehe meine Antwort auf serverfault.com .

Debian ist keine monolithische Einheit, es gibt Leute mit unterschiedlichen Meinungen, und der Aptitude-Betreuer entschied, dass apt-get einige Mängel hatte und etwas Besseres mit Aptitude bauen wollte. Er verbesserte die Logik, um Lösungen für komplexe Upgrade-Szenarien zu finden, fügte eine GUI für die Konsole hinzu usw. Und es gibt mehr als nur apt-get und aptitude, siehe meinen Artikel apt-get, aptitude,… wähle den richtigen Paketmanager für dich .


6

Ich bin mir nicht sicher, ob dies noch gilt, aber der neueste Debian-Entwickler Joey Hess pflegte immer, die Eignung gegenüber apt-get zu vertreten. Natürlich müssen die Dinge geändert werden, wenn sich Software weiterentwickelt. Apt-get verarbeitet Abhängigkeiten jetzt besser als früher. Von http://lists.debian.org/debian-user/2004/04/msg03138.html

Datum: Di, 20. April 2004 22:27:12 -0400 Von: Joey Hess

Neun Gründe, warum Sie aptitude anstelle von apt-get oder dselect verwenden sollten.

  1. Eignung kann genauso aussehen wie apt-get

    Wenn Sie 'aptitude update' oder 'aptitude upgrade' oder 'aptitude install' ausführen, sieht es mit ein paar Verbesserungen genauso aus und funktioniert genauso wie apt-get. Es gibt also keine Lernkurve.

    (Wenn Sie ein selektierter Benutzer sind, ist die Lernkurve offensichtlich nicht eines Ihrer Probleme.)

  2. aptitude verfolgt automatisch installierte Pakete

    Sorgen Sie sich nicht mehr darum, nicht verwendete Bibliotheken und Support-Pakete von Ihrem System zu entfernen. Wenn Sie aptitude verwenden, um alles zu installieren, wird protokolliert, welche Pakete nur von Abhängigkeiten abgerufen werden, und diese Pakete werden entfernt, wenn sie nicht mehr benötigt werden.

  3. Aptitude behandelt sanft empfiehlt

    Ein langjähriger Misserfolg von apt-get war der Mangel an Unterstützung für die Recommends-Beziehung. Was ein Problem ist, weil viele Pakete in Debian auf Empfehlungen beruhen, um Software einzuspielen, die der durchschnittliche Benutzer im Allgemeinen mit dem Paket verwendet. Dies ist eine nicht seltene Ursache für Probleme, auch wenn apt-get in letzter Zeit zumindest empfohlene Pakete erwähnen konnte, ist es leicht, die Warnungen zu übersehen.

    Aptitude unterstützt standardmäßig Empfehlungen und kann so konfiguriert werden, dass auch Vorschläge unterstützt werden. Im Befehlszeilenmodus werden sogar empfohlene Pakete installiert.

  4. Verwenden Sie aptitude als normalen Benutzer und vermeiden Sie es, Ihr System zu beschmutzen

    Vielleicht wussten Sie nicht, dass Sie als normaler Benutzer Aptitude im GUI-Modus ausführen können. Nehmen Sie die Änderungen vor, die Sie ausprobieren möchten. Wenn Sie in ein echtes Durcheinander geraten, können Sie 'q' drücken und den Vorgang beenden. Ihre Änderungen werden nicht gespeichert. (Mit Aptitude können Sie auch die Tastenkombination Strg-U verwenden, um Änderungen rückgängig zu machen.) Da das Programm als normaler Benutzer ausgeführt wird, können Sie Ihr System erst dann mit einem Schlauch füllen, wenn Sie aptitude auffordern, etwas zu tun. An diesem Punkt werden Sie zur Eingabe Ihres Root-Kennworts aufgefordert.

  5. aptitude verfügt über eine leistungsstarke Benutzeroberfläche und Suchfunktionen

    Zwischen dem kategorialen Browser von aptitude und seiner großartigen Unterstützung für das Filtern und Durchsuchen von Paketen nach Name, Beschreibung, Betreuer, Abhängigkeiten usw. im Mutt-Stil sollten Sie in der Lage sein, Pakete schneller als je zuvor zu finden, bevor Sie aptitude verwenden.

  6. aptitude macht es einfach, veraltete Software im Auge zu behalten

    Wenn Debian die Verteilung eines Pakets einstellt, belässt apt es auf unbestimmte Zeit auf Ihrem System, ohne Warnungen und ohne Upgrades. Aptitude listet solche Pakete im Abschnitt "Veraltete und lokal erstellte Pakete" auf, damit Sie über das Problem informiert werden und etwas dagegen unternehmen können.

  7. aptitude hat eine Schnittstelle zum Debian-Task-System

    Mit Aptitude können Sie das Task-System von Debian so verwenden, wie es entwickelt wurde. Sie können die verfügbaren Aufgaben durchsuchen, eine Aufgabe für die Installation auswählen und dann darin suchen und Teile der Aufgabe abwählen, die Sie nicht möchten. apt-get unterstützt keine Aufgaben, und aptitude ist sogar besser als spezielle Tools wie tasksel.

  8. Aptitude unterstützt mehrere Quellen

    Wenn Ihre sources.list so konfiguriert ist, dass mehrere Versionen eines Pakets verfügbar sind, können Sie mit aptitude einen Drilldown durchführen, um die verfügbaren Versionen anzuzeigen und eine nicht standardmäßige Version für die Installation auszuwählen. Wenn ein Paket instabil wird, setzen Sie es einfach auf die getestete Version zurück.

  9. Aptitude protokolliert seine Aktionen

    Das Aptitude-Protokollpaket wird installiert, aktualisiert und nach / varlog / aptitude entfernt. Dies kann hilfreich sein, um herauszufinden, warum nach dem gestrigen Upgrade Probleme aufgetreten sind oder wann Sie ein Partiticlar-Paket entfernt haben.

- siehe schüchterne jo

=================== ab 2010 gibt es hier auch eine neuere Diskussion https://superuser.com/questions/93437/aptitude-vs-apt-get-which- ist-das-empfohlene-aka-das-richtige-Tool-für- StackExchange.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.