Wie finde ich die Build-Abhängigkeiten eines Pakets?

48

Ich möchte herausfinden, welche Pakete

sudo apt-get build-dep <package>

würde installieren (wenn ich bereits einige Abhängigkeiten installiert habe, würde ich diese auch gerne sehen → so dass das Ausführen oder Simulieren der obigen nicht ausreicht). Befehlszeile bevorzugt.

Drehmoment
quelle
1
Ich bin verwirrt. Zeigt sudo apt-get build-dep <package>die Liste der Pakete nicht an (wenn das Paket Build-Abhängigkeiten aufweist), wird es installiert.
Jesaja,
1
Leider werden nur Pakete angezeigt, die nicht installiert sind.
htorque

Antworten:

45

Für eine vollständige Liste der Abhängigkeiten, einschließlich der Abhängigkeiten der Abhängigkeiten, können Sie Folgendes verwenden:

apt-rdepends --build-depends openoffice.org

Der Befehl erinnert Sie möglicherweise daran, zuerst zu installieren apt-rdepends.

Mit dem folgenden Befehl können Sie nur diejenigen anzeigen, die nicht installiert sind:

apt-rdepends --build-depends --print-state openoffice.org | grep NotInstalled

Sehen Sie apt-rdepends --helpfür alle Optionen.

Hinweis : Dadurch wird eine umfangreiche Liste erstellt.
apt-rdepends -b xtermBeispielsweise werden 8773 Ausgabezeilen generiert, was einige Zeit in Anspruch nimmt.

Wenn Sie nur die Pakete anzeigen möchten, die zum Erstellen des obersten Pakets erforderlich sind, dh was muss ich installieren, um nautilus zu erstellen? Führen Sie Folgendes aus:

apt-rdepends --build-depends --follow=DEPENDS nautilus

Dies entspricht in etwa Carsten Thiels answer ( The following NEW packages will be installed), das Ausgabeformat ist jedoch etwas besser. Es wird auch nur das oberste Paket angezeigt, wohingegen simuliertes apt-get auch Pakete anzeigt, die als Abhängigkeiten von diesen installiert wurden.

Hier werden auch die installierten Pakete angezeigt. Möglicherweise werden jedoch auch Pakete angezeigt, die standardmäßig installiert sind. Leider ist keine der beiden Methoden hilfreich, wenn Sie versuchen, Ihr System nach dem Ausführen von apt-get build-dep zu bereinigen . Soweit ich weiß, gibt es keine zuverlässige Methode, um herauszufinden, welche installiert wurden, außer in der apt-Protokolldatei unter /var/log/apt/history.log.

Stefano Palazzo
quelle
1
Danke, die Version mit --follow=DEPENDSist genau das, wonach ich gesucht habe. Sie können diese Build-Abhängigkeiten auch in Launchpad finden, z. für Nautilus: launchpad.net/ubuntu/natty/+source/nautilus ( Bildlauf nach unten).
htorque
17

Die Option -s( --simulate) gibt alles aus, was getan werden würde, ohne etwas zu tun. Sie benötigen dafür nicht einmal Root-Rechte.

apt-get -s build-dep <package>
Carsten Thiel
quelle
6
Siehe meinen Kommentar oben - hier werden keine bereits installierten Pakete angezeigt. Es tut mir leid, dass ich in meiner Frage nicht genau bin.
htorque
Funktioniert nicht - schlägt fehl mitE: Unable to find a source package for inkscape
anatoly techtonik
17
apt-cache showsrc <pkgname> | grep ^Build-Depends

showsrcZeigt die Debian- / Steuerdatei für ein bestimmtes Quellpaket an. Wir suchen dann nach den Zeilen, die mit 'Build-Depends' beginnen und die Liste der Pakete enthalten, die zum Erstellen aus dem Quellcode benötigt werden.

anonym
quelle
+1 wenn du erklärst was apt-cache showsrcund was | grepmacht. Trotzdem gute Antwort. Vielen Dank, dass Sie sich die Zeit genommen haben, es zur Verfügung zu stellen.
MadMike
sudo apt-cache showsrc inkscapefunktioniert nicht inkscapein Ubuntu 18.10 - gibtW: Unable to locate package inkscape N: No packages found
anatoly techtonik
@anatolytechtonik gerade auf Ubuntu 18.10 in Docker getestet, funktioniert bei mir. Hast du apt-get updatezuerst?
Stéphane Gourichon
Dies sollte die akzeptierte Antwort sein, da es das erforderliche Tool bereitstellt und kein zusätzliches Paket benötigt.
Stéphane Gourichon