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

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

我正在尝试构建一个依赖于 的端口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

这个依赖列表令人大吃一惊,在决定安装端口之前我想了解一下它。

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

答案1

您已经非常接近了。请尝试以下方法:

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

干杯,格雷格

答案2

列出所依赖的端口:

pkg_info -rx "port-name"

列出需要的端口:

pkg_info -Rx "port-name"

——来自该网站的回答:http://daemon-notes.com/tips(感谢罗斯)

答案3

您还必须递归获取所有子依赖项。端口管理类别...

我用港口管理员(8)用于 port 管理。它总是在编译和安装 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
...

答案4

几年后……

我的解决方案是安装软件包(用于备份目的)

我有针对 FreeBSD 12+ (bash) 的解决方案

for i in $( cd /usr/ports/databases/mysql80-server/ && make run-depends-list); do pkg create -o /root/packages $( echo $i | rev | cut -d '/' -f1 | rev ); done

但是您可以将 pkg 命令从 create 更改为 install,并将 run 更改为 build

for i in $( cd /usr/ports/databases/mysql80-server/ && make build-depends-list); do pkg install $( echo $i | rev | cut -d '/' -f1 | rev ); done

相关内容