Porte di FreeBSD: Come posso vedere tutte le dipendenze per una porta e tutte le dipendenze per quelle dipendenze?


9

Sto cercando di costruire una porta da cui dipende apache-ant.

Pensavo di poter correre make build-depends-listper vedere tutte le dipendenze richieste da questa porta:

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

Ma dopo aver installato tutto, la porta aveva un elenco di dipendenze lungo un miglio:

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

Questo elenco di dipendenze è una brutta sorpresa e vorrei conoscerlo prima di impegnarmi a installare una porta.

Come posso vedere tutte le dipendenze e tutte le sottodipendenze per una porta?

Risposte:


17

Sei molto vicino Prova questo invece:

make all-depends-list

Ciò farà ricorso a tutte le dipendenze e le stamperà per te. Per testare diversi scenari di build e il modo in cui influenzano l'elenco delle dipendenze, provare cose come:

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

make WITHOUT_X11=yes all-depends-list

Ecco il set completo di target di stampa delle dipendenze:

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

Saluti, Greg


Ciao Greg, sai dove sono documentate le destinazioni di stampa delle dipendenze? Esiste un file man specifico? Non ho una domanda ... È solo per una comprensione più profonda. Grazie.

Non importa. Sono documentati in man ports.

1

Dovresti ottenere ricorsivamente anche tutte le sottodipendenze. Probabilmente ci sono alcuni strumenti per questo nella categoria porti-mgmt ...

Uso portmaster (8) per la gestione delle porte. Raccoglie sempre (sotto) dipendenze prima di compilare e installare una porta:

~> 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

La maggior parte degli elenchi di dipendenze sono difficili da analizzare a colpo d'occhio. Preferisco usare questo script wrapper di helmut@charlieroot.de, perché mostra un bel elenco nidificato con dipendenze sia verso l'alto che verso il basso:

$ 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

Eseguirlo senza argomenti può produrre un elenco molto lungo, perché mostra tutte le catene di dipendenze per tutti i file, quindi di solito consiglio di eseguirlo solo per una determinata porta.


1

Per elencare le porte dalle quali dipende:

pkg_info -rx "port-name"

Per elencare le porte che richiedono:

pkg_info -Rx "port-name"

- Risposta da questo sito Web: http://daemon-notes.com/tips (grazie a Ross)


Grazie per la risposta. Tuttavia, devo sottolineare che gli pkg_*strumenti sono stati deprecati e sostituiti con pkgng
Stefan Lasiewski,

Il comando funziona; in pkgng devi solo rimuovere il carattere di sottolineatura:pkg info -Rx 'port-name'
Eric
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.