教你如何在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.www58058.com/407

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

相關推薦

  • 文本處理工具及grep命令的理解與使用

    1. 文本處理工具   1.1 文件查看命令cat tac     cat命令:連接文件并在標準輸出上面顯示出來  圖 1-1   cat幫助文檔        cat [option]…[file]…     &n…

    Linux干貨 2016-08-07
  • sed命令、crontab任務、簡單腳本練習(21期網絡班第六周博客作業)

    vim使用: 直接使用sed模式空間演示,基本語法與vim命令模式類似(需注意vim默認定界為當前行,一般需要在前面加1,$定界為全文,而sed不需要) 1、 復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;      sed &#03…

    Linux干貨 2016-08-22
  • 文本處理三劍客之grep

    grep命令基本用法 1、grep正則表達式(對文本行進行搜索過濾) 格式:grep [option] PATTERN [FILE…] option: -i:忽略大小寫 -v:取反,顯示未被匹配到的pattern -n:顯示匹配的行號 -c:統計匹配的行數 -o: 只顯示匹配到的pattern -q: 靜默,不予顯示 -A#:after,匹配到的行再向后…

    Linux干貨 2017-07-19
  • Linux之網絡管理

    Linux之網絡管理     在學習linux的過程中,Linux網絡的管理和配置中是很重要的,幾乎學習的后期都離不開網絡的概念和配置,如集群中的使用,學習好Linux網絡至關重要。     Linux網絡IP地址有兩種配置方式:靜態指定和動態分配 動態分配就是利用DHCP服務器,動態的給linux主機分配IP地址。靜…

    Linux干貨 2016-09-05
  • hello 北京&Linux啟程

    北京初感&Linux啟程

    Linux干貨 2018-03-26
  • Linux第五周總結

    1、顯示當前系統上root、fedora或user1用戶的默認shell 2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello(); 3、使用echo命令輸出一個絕對路徑,使用gerp取出其基名;     擴展:取出其路徑名 4、找出ifconfig命令結果中的…

    2017-07-30
欧美性久久久久