FreeBSD-Ports: Wie kann ich alle Abhängigkeiten für einen Port und alle Unterabhängigkeiten für diese Abhängigkeiten anzeigen?


9

Ich versuche einen Port zu bauen, der davon abhängt apache-ant.

Ich dachte, ich könnte laufen make build-depends-list, um alle Abhängigkeiten zu sehen, die von diesem Port benötigt werden:

# make build-depends-list
/usr/ports/devel/apache-ant
/usr/ports/java/jdk16
/usr/ports/math/gmp

Aber nach der Installation hatte der Port eine Abhängigkeitsliste, die eine Meile lang war:

apache-ant-1.8.1 desktop-file-utils-0.15_2 gamin-0.1.10_4 gettext-0.18.1.1 gio-fam-backend-2.26.1 glib-2.26.1_1 gmp-5.0.1 inputproto-2.0 javavmwrapper-2.3.5 kbproto-1.0.4 libX11-1.3.3_1,1 libXau-1.0.5 libXdmcp-1.0.3 libXext-1.1.1,1 libXi-1.3,1 libXtst-1.1.0 libiconv-1.13.1_1 libpthread-stubs-0.3_3 libxcb-1.7 pcre-8.12 perl-5.10.1_3 pkg-config-0.25_1 python26-2.6.6 recordproto-1.14 unzip-6.0 xextproto-7.1.1 xproto

Diese Abhängigkeitsliste ist eine grobe Überraschung, und ich würde gerne davon erfahren, bevor ich mich zur Installation eines Ports verpflichte.

Wie kann ich alle Abhängigkeiten und alle Unterabhängigkeiten für einen Port anzeigen?

Antworten:


17

Du bist sehr nah. Versuchen Sie stattdessen Folgendes:

make all-depends-list

Dadurch werden alle Abhängigkeiten wiederholt und für Sie gedruckt. Versuchen Sie Folgendes, um verschiedene Build-Szenarien und deren Auswirkungen auf die Abhängigkeitsliste zu testen:

make NOPORTDOCS=yes NOPORTEXAMPLES=yes all-depends-list

make WITHOUT_X11=yes all-depends-list

Hier ist der vollständige Satz von Abhängigkeitsdruckzielen:

all-depends-list
build-depends-list
run-depends-list
package-depends-list
pretty-print-build-depends-list
pretty-print-run-depends-list

Prost, Greg


Hallo Greg, weißt du, wo die Abhängigkeitsdruckziele dokumentiert sind? Gibt es eine bestimmte Man-Datei? Ich habe keine Frage ... Es ist nur für ein tieferes Verständnis. Vielen Dank.

Keine Ursache. Sie sind dokumentiert in man ports.

1

Sie müssten auch rekursiv alle Unterabhängigkeiten abrufen. Es gibt wahrscheinlich einige Tools dafür in der Kategorie ports-mgmt ...

Ich benutze Portmaster (8) für die Portverwaltung. Es werden immer (Unter-) Abhängigkeiten erfasst, bevor ein Port kompiliert und installiert wird:

~> portmaster --show-work devel/apache-ant
===>>> Port directory: /usr/ports/devel/apache-ant
===>>> Starting check for all dependencies
===>>> Gathering dependency list for devel/apache-ant from ports

===>>> Installed converters/libiconv
===>>> Installed devel/gettext
===>>> NOT INSTALLED            devel/gmake
===>>> Installed devel/libcheck
...

1

Die meisten Abhängigkeitslisten sind auf einen Blick schwer zu analysieren. Ich bevorzuge die Verwendung dieses Wrapper-Skripts von helmut@charlieroot.de, da es eine schöne, verschachtelte Liste mit Abhängigkeiten nach oben und unten anzeigt:

$ pkg_depends.pl ruby18-bdb-0.6.5_1
Package ruby18-bdb-0.6.5_1 depends on:
    db41-4.1.25_4
    ruby-1.8.7.248_5,1
Package ruby18-bdb-0.6.5_1 is required by:
    portupgrade-2.4.7,2

Das Ausführen ohne Argumente kann zu einer sehr langen Liste führen, da alle Abhängigkeitsketten für alle Dateien angezeigt werden. Daher empfehle ich normalerweise, es nur für einen bestimmten Port auszuführen.


1

So listen Sie Ports auf, von denen Folgendes abhängt:

pkg_info -rx "port-name"

So listen Sie Ports auf, die Folgendes erfordern:

pkg_info -Rx "port-name"

- Antwort von dieser Website: http://daemon-notes.com/tips (danke an Ross)


Danke für die Antwort. Ich muss jedoch darauf hinweisen, dass die pkg_*Werkzeuge veraltet und durch pkgng ersetzt wurden
Stefan Lasiewski

Der Befehl funktioniert; in pkgng müssen Sie nur den Unterstrich entfernen:pkg info -Rx 'port-name'
Eric
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.