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

988ca59dc0664f55562da7a5c090accb 的头像

·

·

·

29,889 次阅读

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

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

方法一

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

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

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

$ sudo yum install yum-utils 

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

$ yumdownloader --destdir=. tcpdump 

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

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

方法二

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

$ sudo yum install yum-utils

显示目标包所依赖的包:

$ repoquery --requires --resolve <package-name> 

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

方法三

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

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

$ sudo yum install rpmreaper 

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

$ rpmreaper 

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

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

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

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

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

方法四

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

在Fedora中安装rpmdep和dotty:

$ 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):

$ rpmdep.pl -dot gzip.dot gzip
$ dot -Tpng -o output.png gzip.dot 

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


via: http://xmodulo.com/2014/07/check-rpm-package-dependencies-fedora-centos-rhel.html

译者:nd0104 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

17 条回复

  1. 微博评论 的头像
    微博评论

    yum在手,安装卸载不再愁

  2. arhool 的头像
    arhool

    对离线安装帮助挺大

    来自江门
  3. 微博评论 的头像
    微博评论

    这个配图上的齿轮,怎么越看越不对劲……

  4. 微博评论 的头像
    微博评论

    这个齿轮的特性和伪基百科(呆丸)对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V

    来自北京
  5. 微博评论 的头像
    微博评论

    哈哈哈哈我才发现图上写着 `Dependencies’ 哈哈哈哈哈//@Arthur2e5:这个齿轮的特性和伪基百科(呆丸)对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V

    来自北京
  6. 微博评论 的头像
    微博评论

    哈哈哈哈我才发现图上写着 `Dependencies’ 哈哈哈哈哈//@Arthur2e5:这个齿轮的特性和伪基百科(呆丸)对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V

    来自北京
  7. 微博评论 的头像
    微博评论

    [good]//@Arthur2e5: 这个齿轮的特性和伪基百科(呆丸)对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V

  8. 微博评论 的头像
    微博评论

    linux 包依赖基本就是图中齿轮那个样子,很多情况下都是需要强拆一个然后才能更新。。呵呵//@Linux中国: [good]//@Arthur2e5: 这个齿轮的特性和伪基百科(呆丸)对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V

  9. 微博评论 的头像
    微博评论

    //@Linux中国:[good]//@Arthur2e5: 这个齿轮的特性和伪基百科(呆丸)对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V

  10. 微博评论 的头像
    微博评论

    @我的印象笔记 //@王依依:linux 包依赖基本就是图中齿轮那个样子,很多情况下都是需要强拆一个然后才能更新。。呵呵//@Linux中国: [good]//@Arthur2e5: 这个齿轮的特性和伪基百科(呆丸)对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V

    来自北京
  11. 微博评论 的头像
    微博评论

    arch用pactree命令就好啦//@Linux中国: [good]//@Arthur2e5: 这个齿轮的特性和伪基百科(呆丸)对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V

  12. 微博评论 的头像
    微博评论

    我在学校的时候装lamp…老师说不能用yum,依赖包有个9个G的光盘可是还是一个一个查的…花了一周了都很麻烦其中也试过那个下载不安装的,可是还是用yum下载的,有没有简单完全离线依赖?我可是有的处理依赖包的方法,我记得那时候找包都是查依赖一个一个看过来的,好辛苦,就没离线简单方法?

    来自福州
  13. netb2c 的头像
    netb2c

    有用,收藏.

    来自郑州
  14. netb2c 的头像
    netb2c

    不讓你YUM是讓你好好去深入研究,學習呢.如果YUM安裝,幾條命令完成了,還有什麼意思.

    来自郑州
  15. 微博评论 的头像
    微博评论

    Mk //@Linux中国:[good]//@Arthur2e5: 这个齿轮的特性和伪基百科(呆丸)对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V

    来自宁波
  16. linux 的头像
    linux

    这么多方法,我都不知道。。

    来自北京
  17. 微博评论 的头像
    微博评论

    //@王依依:linux 包依赖基本就是图中齿轮那个样子,很多情况下都是需要强拆一个然后才能更新。。呵呵//@Linux中国: [good]//@Arthur2e5: 这个齿轮的特性和伪基百科(呆丸)对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注