Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I'm trying to build a port which depends on apache-ant.

I thought I could run make build-depends-list to see all dependencies required by this port:

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

But after installing everything, the port had a dependency list which was a mile long:

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

This dependency list is a rude surprise, and I would like to know about it before I commit to installing a port.

How can I see all dependencies, and all subdependencies for a port?

share|improve this question

4 Answers 4

up vote 10 down vote accepted

You are very close. Try this instead:

make all-depends-list

That will recurse through all dependencies and print them for you. To test different build scenarios and how they affect the dependency list, try things like:

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

make WITHOUT_X11=yes all-depends-list

Here is the full set of dependency print targets:

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

Cheers, Greg

share|improve this answer
    
Hi Greg, do you know where the dependency print targets are documented? Is there a specific man file? I don't have a question ... It's just for a deeper understanding. Thanks. –  Tom Dworzanski Sep 21 at 7:19
    
Nevermind. They are documented in man ports. –  Tom Dworzanski Sep 25 at 8:40

You would have to recursively get all subdependencies as well. There probably are some tools for that in the ports-mgmt category...

I use portmaster(8) for port management. It always gathers (sub)dependencies before compiling and installing a 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
...
share|improve this answer

Most dependency lists are hard to parse at a glance. I prefer using this wrapper script by helmut@charlieroot.de, because it displays a nice, nested list with both upward and downward dependencies:

$ 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

Running it without arguments can produce a very long list, because it shows all dependency chains for all files, so I usually only recommend running it for a particular port.

share|improve this answer

To list ports on which depends:

pkg_info -rx "port-name"

To list ports which require :

pkg_info -Rx "port-name"

-- Answer from this website:http://daemon-notes.com/tips (thanks to Ross)

share|improve this answer
    
Thanks for the response. However, I need to point out that the pkg_* tools were deprecated and replaced with pkgng –  Stefan Lasiewski Dec 9 at 19:29

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.