Portas do FreeBSD: Como posso ver todas as dependências para uma porta e todas as subdependências para essas dependências?

9

Estou tentando construir uma porta que depende apache-ant.

Eu pensei que poderia correr make build-depends-listpara ver todas as dependências exigidas por esta porta:

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

Mas, depois de instalar tudo, a porta tinha uma lista de dependências com uma milha de comprimento:

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

Essa lista de dependências é uma surpresa grosseira, e eu gostaria de saber antes de me comprometer a instalar uma porta.

Como posso ver todas as dependências e todas as subdependências de uma porta?

Stefan Lasiewski
fonte

Respostas:

17

Você está muito perto. Tente isso:

make all-depends-list

Isso ocorrerá através de todas as dependências e as imprimirá para você. Para testar diferentes cenários de compilação e como eles afetam a lista de dependências, tente coisas como:

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

make WITHOUT_X11=yes all-depends-list

Aqui está o conjunto completo de destinos de impressão por dependência:

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

Cheers, Greg

Glarkin
fonte
Olá Greg, você sabe onde os destinos de impressão de dependência estão documentados? Existe um arquivo man específico? Eu não tenho uma pergunta ... É apenas para uma compreensão mais profunda. Obrigado.
Deixa pra lá. Eles estão documentados man ports.
1

Você precisaria obter recursivamente todas as subdependências também. Provavelmente existem algumas ferramentas para isso na categoria ports-mgmt ...

Eu uso o portmaster (8) para gerenciamento de portas. Ele sempre reúne (sub) dependências antes de compilar e instalar uma 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
...
mschuett
fonte
1

A maioria das listas de dependência é difícil de analisar rapidamente. Prefiro usar este script wrapper por [email protected], porque exibe uma lista agradável e aninhada com dependências para cima e para baixo:

$ 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

Executá-lo sem argumentos pode produzir uma lista muito longa, porque mostra todas as cadeias de dependência de todos os arquivos, portanto, geralmente recomendo executá-lo para uma porta específica.

Royce Williams
fonte
1

Para listar as portas das quais depende:

pkg_info -rx "port-name"

Para listar portas que requerem:

pkg_info -Rx "port-name"

- Resposta deste site: http://daemon-notes.com/tips (graças a Ross)

Usuário final
fonte
Obrigado pela resposta. No entanto, eu preciso salientar que as pkg_*ferramentas foram obsoleto e foi substituído com pkgng
Stefan Lasiewski
O comando funciona; no pkgng você só precisa remover o sublinhado:pkg info -Rx 'port-name'
Eric