Website-Suche

Was ist APT und Aptitude? und was ist der wirkliche Unterschied zwischen ihnen?


Aptitude und apt-get sind zwei der beliebtesten Werkzeuge, die die Paketverwaltung übernehmen. Beide sind in der Lage, alle Arten von Aktivitäten an Paketen zu bewältigen, einschließlich Installation, Entfernung, Suche usw. Dennoch gibt es Unterschiede zwischen den beiden Tools, die dazu führen, dass Benutzer das eine dem anderen vorziehen. Was die Unterschiede sind, die dazu führen, dass diese beiden Tools getrennt betrachtet werden müssen, ist der Umfang dieses Artikels.

Was ist Apt

Apt oder Advanced Packaging Tool ist eine kostenlose Open-Source-Software, die die Installation und Deinstallation von Software reibungslos handhabt. Ursprünglich wurde es für Debians .deb Pakete entwickelt, aber es wurde mit dem RPM Package Manager kompatibel gemacht.

Apt ist eine ganze Befehlszeile ohne GUI. Wann immer es von der Befehlszeile aus aufgerufen wird, zusammen mit der Angabe des Namens des zu installierenden Pakets, findet es dieses Paket in der konfigurierten Liste der Quellen, die in '/etc/apt/sources.list' angegeben sind, zusammen mit der Liste der Abhängigkeiten für dieses Paket, sortiert sie und installiert sie automatisch zusammen mit dem aktuellen Paket, so dass der Benutzer sich keine Sorgen um die Installation von Abhängigkeiten machen muss.

Es ist sehr flexibel und ermöglicht es dem Benutzer, verschiedene Konfigurationen einfach zu steuern, wie z.B.: Hinzufügen einer neuen Quelle zur Suche nach Paketen, apt-pinning, d.h. das Markieren eines Pakets als nicht verfügbar während des System-Upgrades, wodurch die aktuelle Version die endgültige installierte Version ist, ein "intelligentes" Upgrade, d.h. das Aktualisieren der wichtigsten Pakete und das Belassen der am wenigsten wichtigen.

Was ist Aptitude?

Aptitude ist ein Front-End für ein fortschrittliches Paketierungstool, das der Funktionalität eine Benutzeroberfläche hinzufügt, die es einem Benutzer ermöglicht, interaktiv nach einem Paket zu suchen und es zu installieren oder zu entfernen. Ursprünglich für Debain entwickelt, erweitert Aptitude seine Funktionalität auch auf RPM-basierte Distributionen.

Die Benutzeroberfläche basiert auf der ncurses-Bibliothek, die verschiedene Elemente hinzufügt, die häufig in GUIs zu sehen sind. Eines der Highlights ist, dass es die meisten Befehlszeilenargumente von apt-get emulieren kann.

Alles in allem ist Aptitude ein Paketmanager auf höherer Ebene, der Details auf niedriger Ebene abstrahiert und sowohl im textbasierten interaktiven UI-Modus als auch im nicht-interaktiven Befehlszeilenmodus arbeiten kann.

Wenn Sie die Verwendung von APT und Aptitude anhand von Beispielen aus der Praxis kennenlernen möchten, sollten Sie sich die folgenden Artikel ansehen.

  1. Lernen Sie 25 nützliche Beispiele zu APT-GET und APT-CACHE kennen
  2. Lernen Sie Linux-Paketverwaltung mit Aptitude und Dpkg

Was sind die Unterschiede zwischen APT und Aptitude?

Abgesehen davon, dass der Hauptunterschied darin besteht, dass Aptitude ein Paketmanager auf höherer Ebene ist, während APT ein Paketmanager auf niedrigerer Ebene ist, der von anderen Paketmanagern auf höherer Ebene verwendet werden kann, sind weitere wichtige Highlights, die diese beiden Paketmanager voneinander trennen:

  1. Aptitude ist umfangreicher in der Funktionalität als apt-get und integriert die Funktionalitäten von apt-get und seinen anderen Varianten, einschließlich apt-mark und apt-cache.

Während apt-get die gesamte Paketinstallation, das Upgrade, das System-Upgrade, das Löschen von Paketen, das Auflösen von Abhängigkeiten usw. übernimmt, kümmert sich Aptitude um viel mehr Dinge als apt, einschließlich der Funktionen von apt-mark und apt-cache, d.h. das Suchen nach einem Paket in der Liste der installierten Pakete, das Markieren eines Pakets als automatisch oder manuell installiert, das Halten eines Pakets, das es für ein Upgrade nicht verfügbar macht und so weiter.

  1. Während apt-get keine Benutzeroberfläche hat, hat Aptitude eine reine Text- und interaktive Benutzeroberfläche

Apt-get ist ein Paketmanager auf niedrigerer Ebene und beschränkt sich nur auf die Befehlszeile, während Aptitude als übergeordnetes Tool über eine standardmäßige interaktive Textschnittstelle verfügt, zusammen mit der Option der Befehlszeilenbedienung durch Eingabe der erforderlichen Befehle.

  1. Aptitude hat eine bessere Paketverwaltung als apt-get

In vielen Situationen, in denen es um die Installation, Entfernung und Konfliktlösung von Paketen geht, bewährt sich Aptitude anstelle von apt-get. Einige der Situationen sind:

1. Beim Entfernen eines installierten Pakets entfernt Aptitude automatisch unbenutzte Pakete, während apt-get den Benutzer dazu verpflichtet, dies explizit anzugeben, indem er entweder die zusätzliche Option '—auto-remove' hinzufügt oder 'apt-get autoremove' angibt.4

2. Um weiter zu untersuchen, warum eine bestimmte Aktion blockiert wird oder warum oder warum eine bestimmte Aktion nicht ausgeführt werden sollte, bietet Aptitude die Befehle "Warum" und "Warum nicht" an.

Wie: Aptitude kann Ihnen den Grund für die Installation eines bestimmten Pakets finden, indem es in der Liste der installierten Pakete nachschaut und überprüft, ob eines der vorgeschlagenen Pakete eine Abhängigkeit hat oder eine ihrer Abhängigkeiten auf dieses Paket hindeutet oder so weiter.

$ aptitude why yaws-wiki
i   doc-base  Suggests   dhelp | dwww | doc-central | yelp | khelpcenter4
p   dwww      Depends    apache2 | httpd-cgi
p   yaws      Provides   httpd-cgi
p   yaws      Suggests   yaws-wiki

Wie hier wurde nach dem Grund für die Installation eines Pakets mit dem Namen 'yaws-wiki' gesucht, dass es von einer Abhängigkeit (yaws) vorgeschlagen wird, die ein virtuelles Paket (httpd-cgi) bereitstellt, von dem das Paket (dwww) abhängig ist, und das Paket (dwww) wird von einem der installierten Pakete mit dem Namen 'doc-base' vorgeschlagen.

Diese Funktion fehlt in apt-get.

3. Während apt-get wahrscheinlich im Falle einer widersprüchlichen Aktion bezüglich der Installation oder Entfernung eines Pakets mit einer Nachricht aussterben würde, kann Aptitude mögliche Maßnahmen vorschlagen, um diesen Konflikt zu beseitigen.

Aptitude bietet eine leistungsfähige Suche, mit der fast jedes Paket nicht nur auf dem System, sondern auch im gesamten Projektarchiv durchsucht werden kann.

Während apt-get eine andere apt-Variante, d.h. apt-cache, benötigt, um nach einem Paket zu suchen, bietet Aptitude eine viel einfachere und effizientere Möglichkeit, nach einem Paket zu suchen, das entweder installiert oder im Repository vorhanden ist, aber noch installiert werden muss.

Durchsuchen eines Pakets mit apt-cache vs. Aptitude

$ apt-cache search 'python' | head -n4
kate - powerful text editor
kcachegrind-converters - format converters for KCachegrind profiler visualisation tool
kig - interactive geometry tool for KDE
python-kde4 - Python bindings for the KDE Development Platform

$ aptitude search 'python' | head -n4
i   bpython                         - fancy interface to the Python interpreter 
p   bpython-gtk                     - fancy interface to the Python interpreter 
p   bpython-urwid                   - fancy interface to the Python interpreter 
p   bpython3                        - fancy interface to the Python3 interpreter

Hier suchen sowohl apt-cache als auch aptitude standardmäßig nach einem Paket in der gesamten Liste der Pakete im Repository, aber die Ausgabe von aptitude zeigt an, ob das Paket auf dem System installiert ist oder nicht, indem ein Pro-Paket-Flag ausgegeben wird, das hier 'p' ist, was anzeigt, dass das Paket vorhanden, aber nicht installiert ist, und 'i' Dies zeigt an, dass das Paket installiert ist, während apt-cache nur das Paket und seine einzeiligen Details auflistet, ohne zu sagen, ob das Paket installiert ist oder nicht.

Einige andere Beispiele für die erweiterte Paketsuche mit Aptitude

1. Suche nach einem Paket im Repository mit 'python2.7' im Namen des Pakets und '2.7' in seiner Beschreibung.

$ aptitude search '~npython2.7 ~d2.7'
p   idle-python2.7                   - IDE for Python (v2.7) using Tkinter       
i   libpython2.7                     - Shared Python runtime library (version 2.7
p   libpython2.7:i386                - Shared Python runtime library (version 2.7
p   libpython2.7-dbg                 - Debug Build of the Python Interpreter (ver
p   libpython2.7-dbg:i386            - Debug Build of the Python Interpreter (ver
i A libpython2.7-dev                 - Header files and a static library for Pyth
p   libpython2.7-dev:i386            - Header files and a static library for Pyth
i   libpython2.7-minimal             - Minimal subset of the Python language (ver
p   libpython2.7-minimal:i386        - Minimal subset of the Python language (ver
i   libpython2.7-stdlib              - Interactive high-level object-oriented lan
p   libpython2.7-stdlib:i386         - Interactive high-level object-oriented lan
p   libpython2.7-testsuite           - Testsuite for the Python standard library 
i   python2.7                        - Interactive high-level object-oriented lan
p   python2.7:i386                   - Interactive high-level object-oriented lan
p   python2.7-dbg                    - Debug Build of the Python Interpreter (ver
p   python2.7-dbg:i386               - Debug Build of the Python Interpreter (ver
i A python2.7-dev                    - Header files and a static library for Pyth
p   python2.7-dev:i386               - Header files and a static library for Pyth
p   python2.7-doc                    - Documentation for the high-level object-or
p   python2.7-examples               - Examples for the Python language (v2.7)   
i   python2.7-minimal                - Minimal subset of the Python language (ver
p   python2.7-minimal:i386           - Minimal subset of the Python language (ver

Hier steht '~n' für den Namen und '~d' für die Beschreibung. Eine andere Form desselben Befehls ist:

$ aptitude search '?name(python2.7) ?description(2.7)'
Einige andere Flags sind:
  1. ~i oder ?installed(): Sucht nur in der Liste der installierten Pakete nach einem Paket.
  2. ~U oder ~Upgradable: Listet alle Pakete auf, die mit ihren neuesten verfügbaren Versionen aktualisiert werden können.
  3. ~E oder ? Essential(): Die Pakete, die entweder installiert oder verfügbar sind und die essentiell sind.
$ aptitude versions '?Upgradable' | head -n 12
Package apache2:
ph  2.4.7-1ubuntu4                                trusty                    500 
ph  2.4.7-1ubuntu4.5                              trusty-security           500 
ih  2.4.7-1ubuntu4.8                                                        100 
ph  2.4.7-1ubuntu4.9                              trusty-updates            500 

Package apache2-bin:
p A 2.4.7-1ubuntu4                                trusty                    500 
p A 2.4.7-1ubuntu4.5                              trusty-security           500 
i A 2.4.7-1ubuntu4.8                                                        100 
p A 2.4.7-1ubuntu4.9                              trusty-updates            500 

Wie eine hier gezeigte kurze Liste von 3 Paketen mit installierter Version (gekennzeichnet mit 'i') und deren aktualisierbarer Version vorhanden (gekennzeichnet mit 'p').

2. Finden Sie alle Pakete, die einen bestimmten Service anbieten

Um alle Pakete zu finden, die einen SMTP-Dienst anbieten:

$ aptitude search '?provides(smtp)'
p   libghc-smtpclient-dev            - Simple Haskell SMTP client library        
p   libghc-smtpclient-dev:i386       - Simple Haskell SMTP client library        
p   libghc-smtpclient-prof           - Simple Haskell SMTP client library; profil
p   libghc-smtpclient-prof:i386      - Simple Haskell SMTP client library; profil
p   syslog-ng-mod-smtp               - Enhanced system logging daemon (SMTP plugi
p   syslog-ng-mod-smtp:i386          - Enhanced system logging daemon (SMTP plugi

3. Alle Pakete finden, die ein bestimmtes Paket vorschlagen

Wie hier listen wir alle Pakete auf, die das Paket 'gcc' vorschlagen.

$ aptitude search '~DSuggests:gcc' | head -n10
p   bochs                           - IA-32 PC emulator                         
p   bochs:i386                      - IA-32 PC emulator                         
p   cpp-4.4                         - GNU C preprocessor                        
p   cpp-4.4:i386                    - GNU C preprocessor                        
p   cpp-4.6                         - GNU C preprocessor                        
p   cpp-4.6:i386                    - GNU C preprocessor                        
p   cpp-4.7                         - GNU C preprocessor                        
p   cpp-4.7:i386                    - GNU C preprocessor                        
p   cpp-4.7-arm-linux-gnueabi       - GNU C preprocessor                        
p   cpp-4.7-arm-linux-gnueabi:i386  - GNU C preprocessor 

Schlussfolgerung

In den meisten Fällen wird die Syntax von Aptitude also fast die gleiche wie die von apt-get beibehalten, um den Benutzern von apt-get weniger Schmerzen bei der Migration zu Aptitude zu bereiten, aber zusätzlich dazu sind viele leistungsstarke Funktionen in Aptitude integriert, die es zu der zu wählenden machen. Abgesehen von diesen Unterschieden, die wir hervorgehoben haben, sollten Sie weitere interessante Unterschiede zwischen diesen beiden Paketmanagern finden, erwähnen Sie diese in Ihren Kommentaren.

Verwandte Artikel: