Ports FreeBSD: Comment puis-je voir toutes les dépendances pour un port et toutes les sous-dépendances pour ces dépendances?

9

J'essaie de construire un port qui dépend apache-ant.

Je pensais pouvoir exécuter make build-depends-listpour voir toutes les dépendances requises par ce port:

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

Mais après avoir tout installé, le port avait une liste de dépendances longue d'un kilomètre:

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

Cette liste de dépendances est une grossière surprise, et j'aimerais en savoir plus avant de m'engager à installer un port.

Comment puis-je voir toutes les dépendances et toutes les sous-dépendances d'un port?

Stefan Lasiewski
la source

Réponses:

17

Tu es très proche. Essayez plutôt ceci:

make all-depends-list

Cela récursif à travers toutes les dépendances et les imprimera pour vous. Pour tester différents scénarios de génération et comment ils affectent la liste de dépendances, essayez des choses comme:

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

make WITHOUT_X11=yes all-depends-list

Voici l'ensemble complet des cibles d'impression de dépendance:

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

À la vôtre, Greg

glarkin
la source
Salut Greg, savez-vous où les cibles d'impression de dépendance sont documentées? Existe-t-il un fichier man spécifique? Je n'ai pas de question ... C'est juste pour une compréhension plus profonde. Merci.
Ça ne fait rien. Ils sont documentés dans man ports.
1

Vous devriez également obtenir récursivement toutes les sous-dépendances. Il existe probablement des outils pour cela dans la catégorie ports-mgmt ...

J'utilise portmaster (8) pour la gestion des ports. Il rassemble toujours les (sous-) dépendances avant de compiler et d'installer un port:

~> 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
la source
1

La plupart des listes de dépendances sont difficiles à analyser d'un coup d'œil. Je préfère utiliser ce script wrapper par [email protected], car il affiche une belle liste imbriquée avec des dépendances à la hausse et à la baisse:

$ 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

L'exécuter sans arguments peut produire une très longue liste, car il affiche toutes les chaînes de dépendance pour tous les fichiers, donc je recommande généralement de l'exécuter uniquement pour un port particulier.

Royce Williams
la source
1

Pour répertorier les ports dont dépend:

pkg_info -rx "port-name"

Pour répertorier les ports qui nécessitent:

pkg_info -Rx "port-name"

- Réponse sur ce site: http://daemon-notes.com/tips (merci à Ross)

Utilisateur final
la source
Merci pour la réponse. Cependant, je dois souligner que les pkg_*outils ont été dépréciés et remplacés par pkgng
Stefan Lasiewski
La commande fonctionne; en pkgng il suffit de supprimer le trait de soulignement:pkg info -Rx 'port-name'
Eric