如果您使用的是基于 Red Hat 的发行版之一,那么通常的反应是展示如何使用 yum 来查找依赖项。 OpenSUSE 不使用yum,但提供了类似的工具zypper。
如前所述,列表会很有帮助。如果我跑
zypper search --requires xterm
只显示了十几个包:
S | Name | Summary
--+---------------------------------+------------------------------------------------
i | codelite | Powerful open-source, cross platform code editor
| eaglemode | Eagle Mode the deep application Cosmos
| leechcraft-shaitan | LeechCraft Shaitan Module
i | lxterminal-lang | Languages for package lxterminal
| package-lists-openSUSE-GNOME-cd | Patterns for Installation (full ftp tree)
| package-lists-openSUSE-KDE-cd | Patterns for Installation (full ftp tree)
| package-lists-openSUSE-X11-cd | Patterns for Installation (full ftp tree)
| package-lists-openSUSE-images | Patterns for Installation (full ftp tree)
i | xdg-menu | XDG Menus for WindowMaker and other Window Manager
i | xdm | X Display Manager
i | xinit | X Window System initializer
i | xterm | X terminal emulator (development version)
但xorg-x11-fonts 的相同命令显示了超过 200 个包,包括 xorg-x11-server。
然而,以这种方式查看依赖关系只给出了故事的一个方面:它显示了删除给定包的效果。实际提出的问题是:添加哪些包作为添加这两个包的副作用。该列表通常会比--requires 选项显示的列表短(通常很多短)。
例如,如果你真的只希望xterm 在一台机器上可用,这样你就可以ssh 进入服务器并在本地机器上运行xterm,你不需要在远程机器。需要的是xterm 使用的字体和运行时库。您可以(粗略地)了解这些库正在使用什么
rpm -qR xterm
例如:
/bin/bash
/bin/sh
/bin/sh
/bin/sh
aaa_base
libICE.so.6()(64bit)
libX11.so.6()(64bit)
libXaw.so.7()(64bit)
libXft.so.2()(64bit)
libXmu.so.6()(64bit)
libXpm.so.4()(64bit)
libXt.so.6()(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.15)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libfontconfig.so.1()(64bit)
libtinfo.so.5()(64bit)
libutempter.so.0()(64bit)
luit
perl
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsLzma) <= 4.4.6-1
这些是xterm 包的直接文件 依赖项。由于rpm 跟踪依赖项的方式,您可能会注意到列表中有一些明显的重复。但是这个列表相当于十几个软件包(一些已经安装了)。
可以编写一个脚本,向zypper --provides 询问每个文件,并通过在裸机服务器上安装xterm 来获取将被拉入的包列表。这将给出最终列表的第一个近似值。但是,这不会显示必须作为副作用安装的软件包。越过这一点更难——这就是zypper 的用途。
如果您从没有安装xterm 的配置开始,请让zypper 安装xterm 包更简单(以获取添加包的简短列表),然后取消安装。