---
author: ''
category: 技术
comments_data:
- date: '2014-08-16 16:33:01'
  message: yum在手，安装卸载不再愁
  postip: 66.249.79.173
  username: 微博评论
- date: '2014-08-16 17:01:55'
  message: 对离线安装帮助挺大
  postip: 183.236.250.145
  username: arhool
- date: '2014-08-16 17:03:01'
  message: mark
  postip: 37.58.100.172
  username: 微博评论
- date: '2014-08-16 17:33:00'
  message: '@我的印象笔记'
  postip: 37.58.100.132
  username: 微博评论
- date: '2014-08-16 17:33:00'
  message: 这个配图上的齿轮，怎么越看越不对劲......
  postip: 37.58.100.132
  username: 微博评论
- date: '2014-08-16 18:33:00'
  message: mark
  postip: 37.58.100.184
  username: 微博评论
- date: '2014-08-16 20:03:00'
  message: 这个齿轮的特性和伪基百科（呆丸）对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V
  postip: 220.181.108.182
  username: 微博评论
- date: '2014-08-16 20:03:00'
  message: 哈哈哈哈我才发现图上写着 `Dependencies\' 哈哈哈哈哈//@Arthur2e5:这个齿轮的特性和伪基百科（呆丸）对 Linux
    依赖的特性描述非常相近。好图。切题。@比尔盖子V
  postip: 220.181.108.182
  username: 微博评论
- date: '2014-08-16 23:03:03'
  message: '[good]//@Arthur2e5: 这个齿轮的特性和伪基百科（呆丸）对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V'
  postip: 37.58.100.85
  username: 微博评论
- date: '2014-08-16 23:03:03'
  message: 'linux 包依赖基本就是图中齿轮那个样子，很多情况下都是需要强拆一个然后才能更新。。呵呵//@Linux中国: [good]//@Arthur2e5:
    这个齿轮的特性和伪基百科（呆丸）对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V'
  postip: 37.58.100.85
  username: 微博评论
- date: '2014-08-16 23:03:03'
  message: '//@Linux中国:[good]//@Arthur2e5: 这个齿轮的特性和伪基百科（呆丸）对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V'
  postip: 37.58.100.85
  username: 微博评论
- date: '2014-08-16 23:33:01'
  message: '//@Linux中国:[good]//@Arthur2e5: 这个齿轮的特性和伪基百科（呆丸）对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V'
  postip: 220.181.108.84
  username: 微博评论
- date: '2014-08-16 23:33:01'
  message: '@我的印象笔记 //@王依依:linux 包依赖基本就是图中齿轮那个样子，很多情况下都是需要强拆一个然后才能更新。。呵呵//@Linux中国:
    [good]//@Arthur2e5: 这个齿轮的特性和伪基百科（呆丸）对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V'
  postip: 220.181.108.84
  username: 微博评论
- date: '2014-08-17 00:03:01'
  message: 'arch用pactree命令就好啦//@Linux中国: [good]//@Arthur2e5: 这个齿轮的特性和伪基百科（呆丸）对 Linux
    依赖的特性描述非常相近。好图。切题。@比尔盖子V'
  postip: 66.249.79.199
  username: 微博评论
- date: '2014-08-17 03:33:00'
  message: 我在学校的时候装lamp…老师说不能用yum，依赖包有个9个G的光盘可是还是一个一个查的…花了一周了都很麻烦其中也试过那个下载不安装的，可是还是用yum下载的，有没有简单完全离线依赖？我可是有的处理依赖包的方法，我记得那时候找包都是查依赖一个一个看过来的，好辛苦，就没离线简单方法？
  postip: 220.200.48.158
  username: 微博评论
- date: '2014-08-17 06:54:10'
  message: 有用,收藏.
  postip: 171.8.135.11
  username: netb2c
- date: '2014-08-17 06:57:59'
  message: 不讓你YUM是讓你好好去深入研究,學習呢.如果YUM安裝,幾條命令完成了,還有什麼意思.
  postip: 171.8.135.11
  username: netb2c
- date: '2014-08-17 07:03:00'
  message: 'Mk //@Linux中国:[good]//@Arthur2e5: 这个齿轮的特性和伪基百科（呆丸）对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V'
  postip: 122.245.123.54
  username: 微博评论
- date: '2014-08-17 21:45:18'
  message: 这么多方法，我都不知道。。
  postip: 123.120.82.65
  username: linux
- date: '2014-08-18 15:33:00'
  message: '//@王依依:linux 包依赖基本就是图中齿轮那个样子，很多情况下都是需要强拆一个然后才能更新。。呵呵//@Linux中国: [good]//@Arthur2e5:
    这个齿轮的特性和伪基百科（呆丸）对 Linux 依赖的特性描述非常相近。好图。切题。@比尔盖子V'
  postip: 192.168.10.6
  username: 微博评论
count:
  commentnum: 20
  favtimes: 8
  likes: 0
  sharetimes: 17
  viewnum: 29648
date: '2014-08-16 15:59:00'
editorchoice: false
excerpt: 我们都知道，在基于红帽的Linux系统中，一个RPM包，需要把先将它依赖的其他包安装好才能正常的工作。对于终端用户，RPM的安装、更新、删除中存在的依赖关系已经被工具透明化了（如
  yum或 DNF等)。但如果你是系统管理员或者RPM包的管理员，你需要谙熟RPM包的依赖关系，以便及时更新、删除适当的包来保证系统的正常运行。 在本教程中，我将教大家如何检查RPM包的依赖关系。无论这个包是否已经安装进操作系统中，我们都有一些办法来检查它们的依赖性。  方法一
  使用RPM命令可以列出目标包所依赖的所有包，如下： $ rpm -qR  注意，这种方法只
fromurl: http://xmodulo.com/2014/07/check-rpm-package-dependencies-fedora-centos-rhel.html
id: 3621
islctt: true
largepic: /images/p/201408/16/155907nwwqghcl9l4jn9aq.jpg
permalink: /article-3621-1.html
pic: /images/p/201408/16/155907nwwqghcl9l4jn9aq.jpg.thumb.jpg
related: []
reviewer: ''
selector: ''
summary: 我们都知道，在基于红帽的Linux系统中，一个RPM包，需要把先将它依赖的其他包安装好才能正常的工作。对于终端用户，RPM的安装、更新、删除中存在的依赖关系已经被工具透明化了（如
  yum或 DNF等)。但如果你是系统管理员或者RPM包的管理员，你需要谙熟RPM包的依赖关系，以便及时更新、删除适当的包来保证系统的正常运行。 在本教程中，我将教大家如何检查RPM包的依赖关系。无论这个包是否已经安装进操作系统中，我们都有一些办法来检查它们的依赖性。  方法一
  使用RPM命令可以列出目标包所依赖的所有包，如下： $ rpm -qR  注意，这种方法只
tags:
- RPM
- 依赖关系
thumb: false
title: 教你如何在Fedora,CentOS,RHEL中检查RPM包的依赖性
titlepic: false
translator: nd0104
updated: '2014-08-16 15:59:00'
---

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


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


![](/images/p/201408/16/155907nwwqghcl9l4jn9aq.jpg)


### 方法一


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


![](/images/p/201408/16/155913ydy4hntth9dajphh.png)


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


要下载一个 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> 

```

![](/images/p/201408/16/155915fyi33syj71yitk18.png)


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


### 方法三


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


安装rpmrepater，在CentOS中，你需要先[设置好EPEL库](http://xmodulo.com/2013/03/how-to-set-up-epel-repository-on-centos.html)



```
$ sudo yum install rpmreaper 

```

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



```
$ rpmreaper 

```

![](/images/p/201408/16/160026rw3546mwfcfzw53u.jpg)


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 

```

![](/images/p/201408/16/160611rf63cq51sw3w1swf.jpg)


教程到这个地方，我们用到了几种办法来检查包的依赖关系。如果您想知道如何在居于Debian的系统中检查.deb的包依赖关系，请阅读另外一篇[文档](http://xmodulo.com/2013/07/how-to-check-package-dependencies-on-ubuntu-or-debian.html)。




---


 


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


译者：[nd0104](https://github.com/nd0104) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](http://linux.cn/) 荣誉推出