Freebsd
我能弄清楚為什麼埠 X 是埠 Y 的依賴項嗎?
有沒有一種簡單的方法可以弄清楚為什麼當我嘗試在 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的建構依賴路徑