查软件依赖路径需先定位主程序再分析依赖关系:mac用brew deps --tree或otool -l,macports用port contents,nix用realpath;linux中apt-cache showpkg显示正向/反向依赖,yum/dnf用deplist和rpm -q --whatrequires;运行时可用lsof、/proc/pid/maps或dyld_info查看实际加载库。

直接在终端查软件安装后的依赖路径,关键不是只找“它在哪”,而是弄清“它靠谁运行”和“它被谁用”。不同系统、不同包管理器,命令逻辑差异明显,但思路一致:先定位主程序,再顺藤摸瓜看依赖树或反向引用。
Mac 上用 Homebrew / MacPorts / Nix 查依赖路径
Homebrew 默认不暴露完整依赖路径,但可通过 brew deps --tree 软件名 查依赖树(需先 brew install tree);若想确认某个二进制实际加载了哪些动态库,用 otool -L $(which 软件名),比如 otool -L $(which python3) 会列出所有 dylib 路径。
MacPorts 用户应先确认 prefix 是否生效:port prefix 应输出 /opt/local;再用 port contents 软件名 查该包安装的所有文件路径,含 bin、lib、share 等子目录。
Nix 用户切忌依赖 which,因为 profile 中全是软链;正确做法是 realpath $(which 软件名) 穿透到 store 哈希路径,如 /nix/store/8z…-jq-1.7/bin/jq,这个才是真实依赖来源。
Linux(Debian/Ubuntu)查 apt 包的依赖与被依赖
apt-cache showpkg 软件名 是核心命令,输出中包含两块关键信息:
• “Dependencies” 列出它安装时必须拉取的包(正向依赖)
• “Reverse Depends” 列出其他哪些已安装包声明了对它的依赖(被依赖关系)
若需树状展示,装 apt-rdepends 后运行 apt-rdepends 软件名 或 apt-rdepends -r 软件名(加 -r 表示反向,即查谁依赖它)。
注意:apt list --installed | grep 软件名 只确认是否装了,不提供路径或依赖细节。
Linux(RHEL/CentOS/Fedora)用 yum/dnf 查依赖路径
yum deplist 软件名(或 dnf repoquery --requires --recursive 软件名)列出所有运行时依赖项及其提供者包。
查“谁依赖它”更间接:用 rpm -q --whatrequires 软件名 可列出直接依赖它的已安装 rpm 包;若结果为空,不代表没被依赖,可能是通过虚拟提供(Provides)间接引用,此时需结合 yum deplist 输出中的 “provider” 字段交叉判断。
另外,rpm -ql 软件名 能列出该包安装的所有文件路径,包括配置、库、二进制等,属于静态依赖路径快照。
通用技巧:定位运行时实际加载的库路径
无论什么系统,只要软件正在运行,就能看到它真正加载了哪些共享库:
• Linux:用 lsof -p PID | grep '\.so' 或 cat /proc/PID/maps | grep '\.so'
• macOS:用 vmmap -w PID | grep '__TEXT.*lib' 或更直观的 dyld_info -dylibs $(ps -o comm= -p PID)
• 所有系统都可用 ldd $(which 软件名)(Linux)或 otool -L(macOS)看编译期链接的库路径,但注意这些路径未必是运行时实际加载的(可能被 LD_LIBRARY_PATH 或 rpath 覆盖)。











