教你如何在Fedora,CentOS,RHEL中检查RPM包的依赖性

我们都知道,在基于红帽的Linux系统中,一个RPM包,需要把先将它依赖的其他包安装好才能正常的工作。对于终端用户,RPM的安装、更新、删除中存在的依赖关系已经被工具透明化了(如 yum或 DNF等)。但如果你是系统管理员或者RPM包的管理员,你需要谙熟RPM包的依赖关系,以便及时更新、删除适当的包来保证系统的正常运行。

在本教程中,我将教大家如何检查RPM包的依赖关系。无论这个包是否已经安装进操作系统中,我们都有一些办法来检查它们的依赖性。

教你如何在Fedora,CentOS,RHEL中检查RPM包的依赖性

方法一

使用RPM命令可以列出目标包所依赖的所有包,如下: $ rpm -qR

教你如何在Fedora,CentOS,RHEL中检查RPM包的依赖性

注意,这种方法只适用于已安装的包。如果你需要检查一个未安装包的依赖关系,你首先需要把这个包先下载到本地来(不需要安装)。

要下载一个 RPM 包而不安装,可以使用叫做’yumdownloader’的工具,下面我们先安装yumdownloader:

  1. $ sudo yum install yumutils

现在我们来检查一个未安装的RPM包的依赖关系(本例使用 tcpdump)。首先,我们使用yumdownloader把tcpdump的RPM包下载下来

  1. $ yumdownloader destdir=. tcpdump

然后再使用 “-qpR”参数显示该包的依赖关系。

  1. # rpm -qpR tcpdump-4.4.0-2.fc19.i686.rpm

方法二

你可以使用repoquery工具来罗列包的依赖关系,它与包是否安装无关,这个工具包含在yum-utils中。

  1. $ sudo yum install yumutils

显示目标包所依赖的包:

  1. $ repoquery requires resolve <packagename>

教你如何在Fedora,CentOS,RHEL中检查RPM包的依赖性

为让repoquery正常的工作,需要保持网络的畅通,应为repoquery需要在Yum库中查找信息。

方法三

第三个方法是使用rpmreaper工具。这个工具本来是用作清理系统中无用以及它们所依赖的包,rpmreaper有很直观的ncurses界面来展示已安装的包和它们依赖关系的树形图。

安装rpmrepater,在CentOS中,你需要先设置好EPEL库

  1. $ sudo yum install rpmreaper

只需运行rpmreaper就可以看到RPM包的依赖关系:

  1. $ rpmreaper

教你如何在Fedora,CentOS,RHEL中检查RPM包的依赖性

rpmrepater会向用户显示已安装包的列表,你可以使用上/下箭头来滚动屏幕。

你可以在指定包上使用”r”键来显示其依赖关系,循环在指定包上按下”r”键可以展示出余下的信息。

“L”标志的意思是说这个包是一片“孤叶”,意思说说没有任何包依赖它。

“o”标志是说这个包是整个依赖链的中间部分。

按下”b”键会显示其他依赖于该包的其他包。

方法四

还有一个办法是使用rpmdep工具,rpmdep是一个命令行工具,可以显示已安装包的完整包依赖关系图。该工具会分析RPM包的依赖性,从完整的排完序的拓扑图中摘取部分包的信息,形成列表展示给用户。该工具的输出结果可以直接使用到Dotty(可视化展示工具)中去。

在Fedora中安装rpmdep和dotty:

  1. $ sudo yum install rpmorphan graphviz

在CentOs中安装: $ wget http://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):

  1. $ rpmdep.pl dot gzip.dot gzip
  2. $ dot Tpng o output.png gzip.dot

教你如何在Fedora,CentOS,RHEL中检查RPM包的依赖性

教程到这个地方,我们用到了几种办法来检查包的依赖关系。如果您想知道如何在居于Debian的系统中检查.deb的包依赖关系,请阅读另外一篇文档

原创文章,作者:追马,如若转载,请注明出处:http://www.178linux.com/407

(0)
追马追马
上一篇 2015-02-10
下一篇 2015-02-11

相关推荐

  • 8.16

    for 循环是相对比较简单的循环,任何一个循环里面都可以嵌套循环,用for可以解决简单逻辑上的任何循环 。 有两种基本格式:for i in " ";do         或者dor((i=0;i<=9;i++))可以嵌套if或者while等循环 if循环。最重要的是判断的条件,if意为如果什…

    Linux干货 2016-08-19
  • 8月9日vim作业

    复制/etc/rc.d/init.d/functions文件至/tmp目录;替换/tmp/functions文件中的/etc/sysconfig/init为/var/log; :%s@/etc/sysconfig@/var/log@ 删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号 :%s@^#\([[:spac…

    Linux干货 2016-08-10
  • 系统基础之shell脚本编程详解及练习题

    shell脚本编程: 编程基础  程序:指令+数据 编程语言的分类:根据运行方式    编译运行:源代码–>编译器(编译)–>程序文件    解释运行:源代码–>运行时启动解释器,由解释器边解释边运行; 根据其编程过程中功能的实现是调用库还是调用外部的程序…

    Linux干货 2016-08-15
  • SHELL编程之数组运用及YUM软件包管理

    SHELL编程中,当要引用到多个值的时候,一个一个地进行变量赋值会让我们的脚本变得繁琐,不利于代码的优化,所以,就需要通过数组进行定义,优化代码,减少不必要的定义和命令操作。 SHELL中的数组:存储多个元素的连续内存空间 数组名:整个属组只有一个名字 数组索引: 编号从0开始   数组名[索引]   ${array_name[index…

    Linux干货 2016-08-24
  • 记录Linux入门3天,每天的点点滴滴记录

        Linux 文件系统的特性:      1、文件名严格区分字符大小写      2、文件名可以使用除了 /  意外任意的字符,但不建议使用特殊字符      3、文件名长度不能超过255个字符     &nbsp…

    Linux干货 2017-05-21
  • yum前端软件包管理器

    yum是什么     Yum (Yellow dog Updater, Modified) 由Duke University团队,修改Yellow Dog Linux的Yellow Dog Updater开发而成,是一个基于 RPM 包管理的字符前端软件包管理器。能够从指定的服务器自动下载…

    Linux干货 2015-05-13