Porty FreeBSD: Jak mogę zobaczyć wszystkie zależności dla portu i wszystkie zależności zależne dla tych zależności?

9

Próbuję zbudować port, który zależy od apache-ant.

Myślałem, że mogę uruchomić, make build-depends-listaby zobaczyć wszystkie zależności wymagane przez ten port:

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

Ale po zainstalowaniu wszystkiego port miał listę zależności o długości mili:

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

Ta lista zależności jest niegrzeczną niespodzianką i chciałbym o niej wiedzieć, zanim zdecyduję się zainstalować port.

Jak mogę zobaczyć wszystkie zależności i wszystkie zależności zależne od portu?

Stefan Lasiewski
źródło

Odpowiedzi:

17

Jesteś bardzo blisko Spróbuj zamiast tego:

make all-depends-list

Spowoduje to powtórzenie wszystkich zależności i wydrukowanie ich dla Ciebie. Aby przetestować różne scenariusze kompilacji i ich wpływ na listę zależności, wypróbuj następujące rzeczy:

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

make WITHOUT_X11=yes all-depends-list

Oto pełny zestaw celów drukowania zależności:

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

Pozdrawiam, Greg

glarkin
źródło
Cześć Greg, czy wiesz, gdzie są udokumentowane cele drukowania zależności? Czy istnieje konkretny plik man? Nie mam pytania ... To tylko dla głębszego zrozumienia. Dzięki.
Nieważne. Są udokumentowane w man ports.
1

Będziesz musiał rekurencyjnie uzyskać również wszystkie zależności. Prawdopodobnie jest kilka narzędzi do tego w kategorii porty-mgmt ...

Używam portmaster (8) do zarządzania portem. Zawsze gromadzi (pod) zależności przed skompilowaniem i zainstalowaniem portu:

~> 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
...
mschuett
źródło
1

Większość list zależności jest trudna do przeanalizowania na pierwszy rzut oka. Wolę używać tego skryptu otoki przez [email protected], ponieważ wyświetla on ładną, zagnieżdżoną listę z zależnościami w górę i w dół:

$ 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

Uruchomienie go bez argumentów może dać bardzo długą listę, ponieważ pokazuje wszystkie łańcuchy zależności dla wszystkich plików, dlatego zwykle polecam uruchomienie go tylko dla określonego portu.

Royce Williams
źródło
1

Aby wyświetlić listę portów, od których zależy:

pkg_info -rx "port-name"

Aby wyświetlić listę portów, które wymagają:

pkg_info -Rx "port-name"

- Odpowiedź z tej strony: http://daemon-notes.com/tips (dzięki Rossowi)

Użytkownik końcowy
źródło
Dzięki za odpowiedzi. Muszę jednak zaznaczyć, że pkg_*narzędzia były przestarzałe i zastąpione przez pkgng
Stefan Lasiewski
Komenda działa; w pkgng musisz tylko usunąć podkreślenie:pkg info -Rx 'port-name'
Eric