Puertos de FreeBSD: ¿Cómo puedo ver todas las dependencias de un puerto y todas las subdependencias de esas dependencias?

9

Estoy tratando de construir un puerto que depende apache-ant.

Pensé que podía correr make build-depends-listpara ver todas las dependencias requeridas por este puerto:

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

Pero después de instalar todo, el puerto tenía una lista de dependencias que tenía una milla de largo:

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

Esta lista de dependencias es una sorpresa grosera, y me gustaría saberlo antes de comprometerme a instalar un puerto.

¿Cómo puedo ver todas las dependencias y todas las subdependencias de un puerto?

Stefan Lasiewski
fuente

Respuestas:

17

Estás muy cerca. Intenta esto en su lugar:

make all-depends-list

Eso se repetirá a través de todas las dependencias y las imprimirá por usted. Para probar diferentes escenarios de compilación y cómo afectan la lista de dependencias, intente cosas como:

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

make WITHOUT_X11=yes all-depends-list

Aquí está el conjunto completo de objetivos de impresión de dependencia:

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

Saludos, Greg

glarkin
fuente
Hola Greg, ¿sabes dónde están documentados los objetivos de impresión de dependencia? ¿Hay un archivo man específico? No tengo una pregunta ... Es solo para una comprensión más profunda. Gracias.
No importa. Están documentados en man ports.
1

Tendría que obtener recursivamente todas las subdependencias también. Probablemente hay algunas herramientas para eso en la categoría ports-mgmt ...

Yo uso portmaster (8) para la gestión de puertos. Siempre reúne (sub) dependencias antes de compilar e instalar un puerto:

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

La mayoría de las listas de dependencias son difíciles de analizar de un vistazo. Prefiero usar este script de envoltura por [email protected], porque muestra una lista agradable y anidada con dependencias tanto hacia arriba como hacia abajo:

$ 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

Ejecutarlo sin argumentos puede producir una lista muy larga, ya que muestra todas las cadenas de dependencia para todos los archivos, por lo que generalmente solo recomiendo ejecutarlo para un puerto en particular.

Royce Williams
fuente
1

Para enumerar los puertos de los que depende:

pkg_info -rx "port-name"

Para enumerar los puertos que requieren:

pkg_info -Rx "port-name"

- Respuesta de este sitio web: http://daemon-notes.com/tips (gracias a Ross)

Usuario final
fuente
Gracias por la respuesta. Sin embargo, debo señalar que las pkg_*herramientas quedaron en desuso y se reemplazaron con pkgng
Stefan Lasiewski
El comando funciona; en el paquete solo tienes que eliminar el guión bajo:pkg info -Rx 'port-name'
Eric