Was ist der Unterschied zwischen dpkg und aptitude / apt-get?


125

Werden bei der Installation einer Software über dpkg -i packageA.debdie erforderlichen Abhängigkeiten packageAautomatisch heruntergeladen und installiert? Wie unterscheidet sich dies von der Verwendung von apt-getoder aptitude?


Verwandte (insbesondere in Bezug auf Abhängigkeiten): askubuntu.com/q/40779/250300
Melebius

Antworten:


168

Nein, dpkginstalliert nur ein Paket. dpkg -i packageName.debWenn Sie dies tun, wird nur dieses Deb-Paket installiert, und Sie werden über alle Abhängigkeiten informiert, die installiert werden müssen. Es werden jedoch keine Abhängigkeiten installiert und das wird nicht konfiguriert, packageName.debweil ... die Abhängigkeiten gut sind nicht dort.

apt-getist ein Paketverwaltungssystem , das die Installation von Deb-Paketen auf Debian-basierten Linux-Distributionen übernimmt . Ein Paketverwaltungssystem besteht aus einer Reihe von Tools, mit denen Sie Pakete auf einfache Weise installieren, entfernen und ändern können. Also apt-getist wie ein schlauer dpkg.

Ich denke gerne so über die Timeline nach (im Folgenden spreche ich nur aus Erfahrung. Es soll Ihnen nur eine Vorstellung von dieser ganzen Sache geben):

  • Sie hatten die Möglichkeit, die Dateien einer Anwendung in einem "Paket" zu "speichern", damit sie einfach installiert werden kann. So wurde das Deb-Paket ( .debErweiterungsdatei ) geboren.

    Eine .debDatei enthält die Dateien, die von einer Anwendung zum Ausführen benötigt werden, sowie (wie ich es gerne nenne) "Metadaten", die andere Informationen enthalten, z. B. die Namen der Abhängigkeiten, die die Anwendung benötigt. Wenn Sie den Inhalt einer .debDatei anzeigen möchten , können Sie den Befehl verwenden dpkg -c packageName.deb, und wenn Sie diese "Metadaten" -Informationen dpkg -I pacakgeName.debanzeigen möchten , verwenden Sie den Befehl (und wenn Sie nur die Abhängigkeiten anzeigen möchten, tun Sie dies dpkg -I packageName.deb | grep Depends).

  • Sie brauchten ein Tool, um diese .debDateien zu installieren , also kamen sie auf das dpkgTool. Dieses Tool installiert jedoch nur die .debDatei, jedoch nicht deren Abhängigkeiten, da diese Dateien nicht vorhanden sind und es keinen Zugriff auf "Repositorys" hat, aus denen die Abhängigkeiten abgerufen werden können.

  • Dann kamen sie auf apt-getdie Idee, die die Probleme im vorherigen Punkt automatisiert. Unter der Haube apt-getbefindet sich im Grunde dpkg(ich stelle es mir gerne als apt-getFront-End für vor dpkg), aber ein cleveres, das nach den Abhängigkeiten sucht und diese installiert. Es werden sogar die derzeit installierten Abhängigkeiten überprüft und diejenigen ermittelt, die nicht von anderen Paketen verwendet werden, und Sie werden darüber informiert, dass Sie sie entfernen können.

aptitudedann kam mit. Es nutzt die Bibliotheken apt-getAnwendungen und tatsächlich hat eine interaktive UI (User Interface). Wenn Sie diese Benutzeroberfläche sehen möchten, geben Sie einfach aptitudedas Terminal ein. Das ist aptitude . Es nutzt die Bibliotheken, um mehr Optionen und Vorteile als zu bieten apt-get. Zum Beispiel aptitudewerden berechtigte Pakete automatisch entfernt, wobei apt-getein separater Befehl erforderlich ist, um dies zu tun. Aber am Ende sudo aptitude install packageName.debsollte es zumindest dasselbe sein wie sudo apt-get install packageName.deb. Es mag hier und da subtile Unterschiede geben, die ich nicht kenne, aber sie werden beide nach den Abhängigkeiten suchen und all diese Dinge tun. Sie können die Antwort hier lesen , um weitere Informationen zu den Unterschieden zwischen aptitudeund zu erhalten apt-get.

Hat aptitudeauch keine Super Cow Powers.

EDIT: Anscheinend tut es. aptitude -v[v[v[v[v]]]] moo.

aptitudeist möglicherweise nicht standardmäßig installiert. Um es zu installieren, führen sudo apt-get install aptitudeSie Folgendes ausInstallieren Sie aptitude oder klicken Sie darauf: aptitude .


Extra

Die folgenden Informationen beantworten " Was ist der Unterschied zwischen dpkg und aptitude / apt-get? " Nicht direkt , tragen aber zum Gesamtbild bei.


Aus dem Kommentar von Carlos Campderrós :

gdebiist ein anderes Werkzeug, das eine Art Mischung zwischen apt-getund ist aptitude. Wenn Sie damit ein .debPaket installieren ( gdebi packageName.deb), erkennt es die fehlenden Abhängigkeiten, installiert sie mit apt-getund installiert und konfiguriert das Paket schließlich mit dpkg. Es verfügt sogar über eine einfache und übersichtliche Benutzeroberfläche, die Informationen über das .debPaket, die im Paket enthaltenen Dateien und die zu installierenden Abhängigkeiten enthält. Um diese GUI zu sehen, würden Sie tun gdebi-gtk packageName.deb. Sie können es gdebiversuchen, indem Sie es mit installieren sudo apt-get install gdebioder auf FolgendesInstallieren Sie gdebi klicken: gdebi .


Ich möchte niemanden verwirren, aber um Ihnen einen weiteren Teil des Bildes zu zeigen, gibt es ein anderes populäres Linux-Paketformat namens RPM, dessen Dateien die .rpmErweiterung haben. Dieses Paketformat wird auf RPM-basierten Linux-Distributionen (wie Red Hat, CentOS und Fedora) verwendet. Sie benutzen den Befehl rpm, um ein Paket zu installieren, und es yumist das Front-End dafür, es ist das clevere. Ihre .rpmDateien sind also unsere .debDateien, ihr rpmWerkzeug ist unser dpkgWerkzeug und ihr yumist unser apt-get.

Von Paddy Landau ‚s Kommentar unten :

alienist ein Tool, das zwischen .rpmund .debPakete konvertiert . Wenn Sie also jemals in die Situation geraten, dass Sie ein .rpmPaket haben und es auf Ihrem Ubuntu (oder einer anderen Debian-basierten Distribution) installieren möchten, können Sie es mit dem Befehl alien rpm_packageName.rpmkonvertieren .debund anschließend mit installieren dpkg. Sie können das Umkehren (Konvertieren .debin .rpm) mit ausführen alien -r packageName.deb.


5
Das war sehr nützlich und genau das, wonach ich gesucht habe. Tx!
Aniket Thakur

4
Sie können auch gdebi( apt-get install gdebi-core) verwenden, das apt-get/ aptitudemit mischt dpkg. Sie rufen es mit auf gdebi some_package.debund es analysiert seine Abhängigkeiten, ruft apt-getauf, um die fehlenden zu installieren, und wenn alle Abhängigkeiten erfüllt sind, ruft es dpkgauf, um Ihr Paket endgültig zu installieren.
Carlos Campderrós

2
@Alaa Unter Extra können Sie auch erwähnen, dass alienPakete zwischen .rpmund konvertiert werden .deb. Dies ist nützlich für Pakete, die für RPM verfügbar sind, jedoch nicht für DEB (oder umgekehrt). Zum Beispiel, alien packagename.rpmum es für Ubuntu nutzbar zu machen.
Paddy Landau

1
@AlaaAli aptitudeist kein Frontend für apt-get. Beide Programme sind Frontends für die libapt-pkgBibliothek.
Eliah Kagan

1
@edwardtorvalds AskUbuntu ist eine Frage- und Antwortseite. Suchen Sie hier auf der Website nach Ihrer Antwort aus den Tausenden von alten Fragen. Wenn Sie sie nicht finden, stellen Sie Ihre eigene Frage. Mehr erfahrene Leute als ich werden sie hoffentlich auch beantworten.
Alaa Ali

5

passend

Die Paketverwaltung über apt-getläuft Hand in Hand mit der /etc/apt/sources.listDatei.

apt-get install <package_name> installiert ein neues Paket auf Ihrem Computer.

apt-get build-dep <package_name> Dieser Befehl durchsucht die Repositorys und installiert die Build-Abhängigkeiten für. Befindet sich das Paket nicht in den Repositorys, wird ein Fehler zurückgegeben.

apt-get install <package1_name> <package2_name> <package3_name> apt-get ermöglicht die Installation mehrerer Pakete. Trennen Sie die Pakete mit einem Leerzeichen.

auto-apt run <command_string> Beim Aufrufen des Befehls auto-apt werden Pakete bei fehlendem Dateizugriff automatisch installiert. Wenn ein Programm versucht, auf eine Datei zuzugreifen, von der bekannt ist, dass sie zu einem deinstallierten Paket gehört, installiert auto-apt das Paket mithilfe von apt-get. Für diese Funktion sind apt und sudo erforderlich.

Besuchen Sie die apt-get-Anweisungsseite

Eignung

aptitudebietet die Funktionalität von dselectund apt-getsowie viele zusätzliche Funktionen, die in keinem der beiden Programme zu finden sind.

aptitude hat eine eigene Shell, die per Tastatur oder Maus aktiviert ist und in einem Terminalfenster ausgeführt wird

aptitude build-dep <package> - Installieren Sie die Build-Abhängigkeiten von Paketen, dh die Pakete, die zum Kompilieren (oder Erstellen ) des Quellpakets erforderlich sind . Beispielsweise müssen viele Pakete erstellt debhelperoder erstellt autotoolswerden, aber sie müssen nicht ausgeführt werden.

Besuchen Sie die Eignungsanweisungsseite

dpkg

ist ein Tool zum Installieren, Erstellen, Entfernen und Verwalten von Debian-Paketen. Verknüpfung

dpkg -i <package.deb>installiert ein Debian-Paket auf Ihrem Computer. Es werden keine Abhängigkeiten installiert, soweit ich dies anhand der Hilfedateien feststellen kann.

Für Details geben Sie dpkg --helpin ein Terminalfenster ein.

Guides

Eine Anleitung zur Dateiverwaltung finden Sie hier


0

Ich denke, das Wichtigste und auch der Unterschied ist, dass Sie das apt-getTool zum Installieren von Paketen verwenden sollten. ( aptoder aptitudeist auch in Ordnung).

Dies liegt daran, dpkgdass Pakete installiert werden sollen, ohne abhängige Pakete zu installieren. Aus diesem Grund kann die Installation eines Pakets mit dpkgzu einem späteren Problem führen, bei dem die Auflösung von Abhängigkeiten zu einem Systemausfall führen kann.

Sie sollten die Befehlszeile apt-getoder apt(seit 14.04) das Tool verwenden, um Pakete zu installieren. Diese Tools werden dpkgfür Sie verwendet und enthalten gleichzeitig den Mechanismus zur Auflösung von Abhängigkeiten.

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.