Installiere nur Abhängigkeiten eines bestimmten Pakets in Debian oder Ubuntu (apt)


18

Gibt es eine bessere Möglichkeit, nur die erforderlichen Abhängigkeiten eines Pakets zu installieren, anstatt es direkt mit apt-get (oder einem anderen Frontend von dpkg) zu installieren und dann sofort zu entfernen, wobei die Abhängigkeiten weggelassen werden?

Antworten:


22

apt-cache depends pkgname zeigt die Abhängigkeiten eines Pakets an.

Wenn Sie alles in einem Befehl wollen, können Sie Schlimmeres tun als:

apt-get install `apt-cache depends pkgname | awk '/Depends:/{print$2}'`

16

apt-get bietet einen Befehl für genau das ...

apt-get build-dep <package name>

Aus den Manpages erhalten Sie

build-dep veranlasst apt-get, Pakete zu installieren / entfernen, um die Build-Abhängigkeiten für ein Quellpaket zu erfüllen. Standardmäßig sind die Abhängigkeiten erfüllt, um das Paket nativ zu erstellen. Auf Wunsch kann stattdessen eine Host-Architektur mit der Option --host-architecture angegeben werden.


9
Könnte es keinen Unterschied zwischen build dependenciesund geben dependencies? Wie in, wenn Sie normalerweise ein Programm installieren, erhalten Sie Abhängigkeiten, die es tatsächlich ausführen muss, und mit Build-Abhängigkeiten denke ich mehr über Bibliotheken, Compiler, solche Sachen nach. Also, da ich nicht sicher bin (diese Antwort hat positive Stimmen), aber es scheint mir nicht trivial zu sein, dass das Erhalten von Build-Abhängigkeiten dasselbe ist wie das Erhalten der (Run-) Abhängigkeiten, die die Pakete haben?
Nanne

1
Du hast Recht. Bei der Beantwortung dieser Frage hatte ich vor langer Zeit noch kein vollständiges Verständnis für den Unterschied zwischen Build-Abhängigkeiten (Build-Zeit) und Abhängigkeiten (Laufzeit). Vielen Dank für die Klarstellung Nanne!
Nathan Crock

4

Mit aptitude können Sie bei der Installation eine Abfrage anstelle eines Paketnamens angeben. Wenn Sie die Abhängigkeiten des genannten Pakets fooinstallieren möchten, können Sie die Pakete installieren, für die eine umgekehrte Abhängigkeit besteht foo:

aptitude install '?reverse-depends(foo)'

oder

aptitude install '~Rfoo'

Das Problem beim Installieren und Entfernen eines Pakets besteht darin, dass alle Pakete, die als Abhängigkeiten installiert werden, als "automatisch installiert" gekennzeichnet werden und bei jeder Aktion zum Installieren / Entfernen / Aktualisieren von aptitude oder beim Ausführen entfernt werden, apt-get autocleansofern Sie dies nicht tun Markieren Sie sie mit aptitude markoder dem apt-markBefehl als manuell installiert .

Dies wirft jedoch die Frage auf, warum Sie dies tun möchten. Ich gehe davon aus, dass Sie versuchen, Abhängigkeiten für eine Software zu installieren, die Sie von Hand kompilieren werden. In diesem Fall würden Sie zuerst die Build-Abhängigkeiten mit installieren apt-get build-dep packagename, aber dann sollten Sie ein Dummy-Paket mit Laufzeitabhängigkeiten (die sich im Allgemeinen von den Build-Abhängigkeiten unterscheiden) equiverstellen, indem Sie das Paket verwenden, um ein Dummy-Paket mit den richtigen Abhängigkeiten für zu erstellen Ihr manuell kompiliertes Programm. Informationen dazu finden Sie equivsim APT-HOWTO


3

Im Falle der Erstellung von pkgname aus Quellen

apt-get build-dep pkgname

1
Build-Abhängigkeiten sind keine Laufzeitabhängigkeiten
siehe

>> Wenn pkgname aus Quellen erstellt wird
eri

Ich weiß nicht, wo das garantiert / dokumentiert ist. Auch macht es immer noch nicht den gleichen Zweck. Ich benutze Build-Dep die ganze Zeit, aber ich möchte wirklich eine bessere Antwort auf die aktuelle Frage. Das brauche ich auch
sehe
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.