it-swarm.com.de

Wie installiere ich eine Deb-Datei, von dpkg -i oder von apt?

Ich habe ein Deb-Paket zur Installation.

Soll ich mit dpkg -i my.deb Oder mit apt installieren?

Werden beide das Problem der Softwareabhängigkeit gut bewältigen?

Wenn von apt, wie kann ich von der deb von apt installieren?

728
Tim

Wenn Sie apt verwenden, um ein Paket zu installieren, nter der Haube verwendet es dpkg. Wenn Sie ein Paket mit apt installieren, wird zunächst eine Liste aller Abhängigkeiten erstellt und aus dem Repository heruntergeladen.

Sobald der Download abgeschlossen ist, wird dpkg aufgerufen, um alle diese Dateien zu installieren und alle Abhängigkeiten zu erfüllen.

Wenn Sie also eine .deb - Datei haben, können Sie diese installieren durch:

  1. Verwenden von:

    Sudo dpkg -i /path/to/deb/file
    Sudo apt-get install -f
    
  2. Verwenden von:

    Sudo apt install ./name.deb
    

    Oder

    Sudo apt install /path/to/package/name.deb
    

    Bei alten apt-get - Versionen müssen Sie zuerst Ihre Deb-Datei in das Verzeichnis /var/cache/apt/archives/ Verschieben. Für beide wird nach Ausführung dieses Befehls automatisch die Abhängigkeit heruntergeladen.

  3. Installieren Sie zuerst gdebi und öffnen Sie dann Ihre .deb-Datei damit ( Rechtsklick -> Öffnen mit). Es wird Ihr .deb-Paket mit all seinen Abhängigkeiten installieren.

    Hinweis : APT verwaltet den Paketindex, bei dem es sich um eine Datenbank verfügbarer Pakete handelt, die in repo verfügbar sind, definiert in /etc/apt/sources.list und im Verzeichnis /etc/apt/sources.list.d. Alle diese Methoden erfüllen die Softwareabhängigkeit nicht, wenn die für das Deb erforderlichen Abhängigkeiten nicht im Paketindex vorhanden sind.


Warum Sudo apt-get install -f Nach Sudo dpkg -i /path/to/deb/file Verwenden (wie in Methode 1 erwähnt)?

Von man apt-get:

 -f, --fix-broken
           Fix; attempt to correct a system with broken dependencies in place.

Wenn dpkg ein Paket installiert und eine Paketabhängigkeit nicht erfüllt ist, bleibt das Paket in einem "nicht konfigurierten" Zustand und dieses Paket wird als fehlerhaft betrachtet.

Der Befehl Sudo apt-get install -f Versucht, dieses fehlerhafte Paket durch Installieren der fehlenden Abhängigkeit zu beheben.

939
g_p

Installieren Sie Ihr foo.deb Datei mit dpkg -i foo.deb. Wenn bei ungelösten Abhängigkeiten Fehler auftreten, führen Sie apt-get install -f danach.

95
ihor_dvoretskyi

Hier ist der beste Weg, um ein .deb Datei unter Ubuntu in der Kommandozeile:

Sudo gdebi skype.deb

Wenn Sie gdebi noch nicht installiert haben, installieren Sie es mit Sudo apt install gdebi-core.

Warum gdebi?

gdebi sucht nach allen Abhängigkeiten des .deb Datei und installiert sie, bevor versucht wird, die .deb Datei. Ich finde das viel besser als Sudo dpkg -i skype.deb && Sudo apt install -f. Letzterer ist viel zu bemüht, Abhängigkeiten in bestimmten Situationen zu beseitigen. Als ich beispielsweise versuchte, Skype zu installieren, wurde versucht, 96 (!) Pakete zu entfernen, einschließlich Pakete wie compiz und unity! gdebi gab eine viel klarere Fehlermeldung:

 $ Sudo gdebi skype.deb
 Cannot install 'libqtgui:i386'

(Hier ist übrigens die Lösung für dieses spezielle Problem .)

66
Flimm

Sie können ein lokales .deb-Paket installieren, indem Sie:

Sudo apt install ./foo.deb

Stellen Sie sicher, dass Sie einen lokalen relativen oder absoluten Pfad angeben (./ Im aktuellen Verzeichnis), da sonst in den Remote-Repos nach foo.deb Gesucht wird und ein Fehler auftritt.

60
wisbucky

Überprüfen Sie die Abhängigkeiten mit dpkg -I my.deb Und apt-get install Mit den Abhängigkeiten vor dpkg -i my.deb.

Vielleicht können Sie den my.deb In /var/cache/apt/archives Kopieren und direkt mit apt-get Installieren, aber ich habe es nie versucht. Funktioniert nicht, apt-get Und dpkg suchen nach Paketen, die in Archiven aufgeführt sind.

15
Alex

Die einfachste Antwort wäre, dpkg zu verwenden, indem Sie dpkg -i packagename.deb Ausführen. Sie können es dann deinstallieren, indem Sie dpkg -r packagename.deb Ausführen.
apt-get Ist ein übergeordnetes Installationsprogramm, das auf dpkg basiert, und als solches könnten Sie apt-get install packagename.deb.
Es wäre vorteilhaft, es Ihrem apt-get-Archivverzeichnis (/var/cache/apt/archives) Hinzuzufügen, damit Sie es als Paket mit Abhängigkeiten und nicht als eigenständiges .deb-Archiv referenzieren können.
Durch Hinzufügen zu Ihrem Archivverzeichnis von apt-get haben Sie außerdem die Möglichkeit, Abhängigkeiten mit apt-get install packagename Zu verwenden. Auf diese Weise können Sie es mit manuell hinzugefügten Abhängigkeiten anstelle des eigenständigen archivbasierten Systems von dpkg installieren.

6
Interesting...

Modernes apt-get kann verwendet werden, um ein Paket einfach mit apt-get install /path/to/package/name.deb Zu installieren.

(sollte als Bearbeitung der obersten Antwort erfolgen, wurde jedoch abgelehnt - siehe https://unix.stackexchange.com/posts/159114/edit )

5