FreeBSD端口:如何查看端口的所有依赖关系以及这些依赖关系的所有子依赖关系?


9

我正在尝试建立一个依赖的端口apache-ant

我以为我可以运行make build-depends-list以查看此端口所需的所有依赖项:

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

但是在安装所有组件之后,该端口具有一个一英里长的依赖项列表:

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

这个依赖关系列表是一个无礼的惊喜,在我想安装端口之前,我想了解一下它。

如何查看端口的所有依赖关系和所有子依赖关系?

Answers:


17

你很亲密 尝试以下方法:

make all-depends-list

这将遍历所有依赖项并为您打印它们。要测试不同的构建方案及其对依赖项列表的影响,请尝试以下操作:

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

make WITHOUT_X11=yes all-depends-list

这是完整的依赖项打印目标集:

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

干杯,格雷格


嗨,格雷格,您知道相关性打印目标的记录位置吗?是否有特定的人工文件?我没有问题……只是为了加深了解。谢谢。

没关系。它们记录在中man ports

1

您还必须递归地获取所有子依赖项。ports-mgmt类别中可能有一些用于此目的的工具...

我使用portmaster(8)进行端口管理。在编译和安装端口之前,它总是会收集(子)依赖项:

~> 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
...

1

大多数依赖项列表很难一目了然。我更喜欢使用helmut@charlieroot.de的包装器脚本,因为它显示了一个很好的嵌套列表,同时具有向上和向下的依赖性:

$ 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

不带参数运行它会产生一个很长的列表,因为它显示了所有文件的所有依赖关系链,所以我通常只建议针对特定端口运行它。


1

列出依赖的端口:

pkg_info -rx "port-name"

列出需要的端口:

pkg_info -Rx "port-name"

-来自此网站的答案:http : //daemon-notes.com/tips(感谢Ross)


感谢您的回复。但是,我需要指出,这些pkg_*工具已过时,已替换为pkgng
Stefan Lasiewski 2014年

该命令有效;在pkgng中,您只需要删除下划线即可:pkg info -Rx 'port-name'
Eric
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.