我能弄清楚为什么端口 X 是端口 Y 的依赖项吗?

我能弄清楚为什么端口 X 是端口 Y 的依赖项吗?

有没有一种简单的方法可以弄清楚为什么当我尝试在 FreeBSD 中安装某个端口时,其他某个端口被列为依赖项?

具体来说,我正在尝试在我的 VPS 上安装 Webalizer 端口,并且在此过程中它想要安装 Python。我真的不想在服务器上安装任何我不会直接使用的新编程语言。我怀疑 Webalyzer(取决于某些东西)+ 依赖于 Python,希望我可以通过更改这些依赖项之一的配置设置来阻止它,但我不确定如何找到它。

我知道 pkg_info 可以找到类似的信息已安装端口,但我希望找到这个信息安装。

答案1

ports 系统提供了一个 make 目标来显示运行时和构建时依赖关系 请参阅端口手册页

所以你应该能够使用make pretty-print-run-depends-list pretty-print-build-depends-list来获取依赖项列表。

run-depends-list, build-depends-list
                  Print a list of all the compile and run dependencies,
                  and dependencies of those dependencies, by port direc-
                  tory.

 all-depends-list
                  Print a list of all dependencies for the port.

 pretty-print-run-depends-list, pretty-print-build-depends-list
                  Print a list of all the compile and run dependencies,
                  and dependencies of those dependencies, by port name and
                  version.

 missing          Print a list of missing dependencies to be installed for
                  the port.

您可以使用这些目标来制作 shell 脚本来遵循依赖关系(这是一个愚蠢的快速破解,因此可能有更好的方法)。

#!/bin/sh

printdeps() {
  local ni
  local dep
  local thisdir

  dir=$1
  port=`basename $dir`
  i=$2
  ni="${i}${port}->"

  thisdir="$dir"
  cd "$dir"
  echo ${i}$dir
  for dep in `make build-depends-list` ; do
    printdeps $dep "$ni"
  done
  cd "$thisdir"
}

printdeps $PWD

对于 webalizer,你至少会找到 python 的构建依赖路径webalizer->gd->tiff->freeglut->libGLU->libGL->/usr/ports/lang/python

相关内容