Freebsd

我能弄清楚為什麼埠 X 是埠 Y 的依賴項嗎?

  • December 2, 2013

有沒有一種簡單的方法可以弄清楚為什麼當我嘗試在 FreeBSD 中安裝某個埠時,其他某個埠被列為依賴項?

具體來說,我正在嘗試在我的 VPS 上安裝 Webalizer 埠,並且在安裝 Python 的過程中。我真的不想在我不會直接使用的伺服器上安裝任何新的程式語言。我懷疑 Webalyzer 是(取決於某些東西)+ 取決於 Python,希望我可以通過更改其中一個依賴項的配置設置來阻止這種情況,但我不確定如何找到它。

我知道 pkg_info 可以找到已安裝埠的類似資訊,但我希望在安裝之前找到這些資訊。

ports 系統提供了一個 make 目標來顯示執行時和建構時依賴關係 請參閱ports 手冊頁

所以你應該可以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的建構依賴路徑

引用自:https://unix.stackexchange.com/questions/102685