I have a headless FreeBSD server where some port has installed tons of X11-related packages. I would like to find out what these ports are so I can get rid of the unwanted X-related packages. Is there a way to figure this out?
The current accepted answer is out of date. FreeBSD has replaced its legacy packaging tools with pkgng.
Here's the new way to query the reverse-dependencies of a package:
pkg info -r <pkg name>
root@server:/usr/ports # pkg info -r python27 python27-2.7.6_4: python2-2_2 talloc-2.0.8 tevent-0.9.18 tdb-1.2.12,1 ldb-1.1.16 glib-2.36.3_2 xcb-proto-1.9 gobject-introspection-1.36.0_2 samba4-4.0.13
pkg_info answers questions like this. With the
-R option it expects a name of an installed port and will display all ports that depend on that port:
pkg_info -R libXfont-1.4.3,1
You can use wildcards to avoid specifying the name with the version number:
pkg_info -R libXfont-\*
Note that this does not work recursively, and thus you need to do
pkg_info -R again for each port in the resulting list until you get to the bottom of things.
Note that on servers it is often a good idea to put the following in
That will make most (all?) ports to skip dependencies to any X11 related stuff.
While accepted answer is correct, there is a more robust and feature-rich variant that can provide you with more flexibility:
# pkg query %ro python27 misc/mc devel/talloc lang/python2 lang/python devel/git devel/tevent databases/tdb devel/py-setuptools dns/py-dnspython devel/py-iso8601 net/samba48
That would give you reverse dependencies for the locally installed ports. In some cases you may want to list ALL the existing dependencies on that port, in that case
pkg rquery can give you that information:
# pkg rquery %ro python27|wc -l 3758
man pkg-query for the full list of possible query flags, those should work for
pkg-rquery as well.