基于Red Hat的系统上的典型RPM软件包需要安装其所有相关软件包才能正常运行。对于最终用户,在包安装/升级/删除过程期间,包管理器(例如,yum或DNF)隐藏了这种RPM依赖性的复杂性。但是,如果您是系统管理员或RPM维护人员,则需要精通RPM依赖关系以维护系统的运行时环境或推出最新的RPM规范。
在本教程中,我将展示如何检查RPM包依赖项。根据是否安装了软件包,有几种方法可以识别其RPM依赖项。
方法一
找出特定包的RPM依赖关系的一种方法是使用rpm命令。以下命令列出目标程序包的所有依赖程序包。
$ rpm -qR
请注意,仅当已安装目标程序包时,此命令才有效。如果要检查任何已卸载软件包的软件包依赖关系,首先需要在本地下载RPM软件包(无需安装)。
要在不安装RPM软件包的情况下下载它,请使用名为yumdownloader的命令行实用程序。按如下方式安装yumdownloader。
$ sudo yum install yum-utils
现在让我们检查一个未安装的软件包的RPM依赖性(例如,tcpdump)。首先使用yumdownloader下载当前文件夹中的包:
$ yumdownloader --destdir =。tcpdump的
然后使用带有“-qpR”选项的rpm命令列出下载的包的依赖关系。
#rpm -qpR tcpdump-4.4.0-2.fc19.i686.rpm
方法二
您还可以使用repoquery工具获取RPM包的依赖项列表。无论是否安装目标包,repoquery都有效。该工具包含在yum-utils包中。
$ sudo yum install yum-utils
要显示特定包的所有必需包:
$ repoquery --requires --resolve
要使repoquery正常工作,您的计算机需要网络连接,因为repoquery从Yum存储库中提取信息。
方法三
显示RPM包依赖关系的第三种方法是使用rpmreaper工具。最初开发此工具是为了清理不必要的包及其对基于RPM的系统的依赖性。 rpmreaper有一个基于ncurses的直观界面,用于浏览已安装的包及其依赖树。
要安装rpmrepater,请使用yum命令。在CentOS上,您需要先设置EPEL repo。
$ sudo yum install rpmreaper
要浏览RPM依赖关系树,只需运行:
$ rpmreaper
该rpmrepater界面会显示所有已安装包的列表。您可以使用向上/向下箭头键导航列表。在突出显示的包上按“r”以显示其依赖项。您可以通过递归按下各个依赖包上的“r”键来扩展整个依赖关系树。“L”标志表示给定的包是“叶子”,这意味着没有其他包依赖于此包。“o”标志意味着给定的包位于依赖链的中间。在这样的包装上按“b”将显示其他包装需要突出显示的包装。
方法四
在基于RPM的系统上显示包依赖关系的另一种方法是使用rpmdep,它是一个命令行工具,用于生成任何已安装的RPM包的完整包依赖关系图。该工具分析RPM依赖关系,并从拓扑排序中生成部分排序的包列表。该工具的输出可以输入到点图形可视化工具中以生成依赖图形图像。
要安装rpmdep和疯疯癫癫在Fedora:
$ sudo yum install rpmorphan graphviz
要在CentOS上安装相同的工具:
$ wgethttp://downloads.sourceforge.net/project/rpmorphan/rpmorphan/1.14/rpmorphan-1.14-1.noarch.rpm
$ sudo rpm -ivh rpmorphan-1.14-1.noarch.rpm
$ sudo yum install graphviz
要生成并绘制特定已安装软件包的依赖关系图(例如,gzip):
$ rpmdep.pl -dot gzip.dot gzip
$ dot -Tpng -o output.png gzip.dot
转自