首頁 > linux教程 > Linux軟件安裝 閱讀:0更新時間:2020-03-28 00:57:23

Linux rpm命令查詢軟件包(-q、-qa、-i、-p、-l、-f、-R)

《rpm 命令安裝、升級和卸載 RPM 包》一節介紹了使用 rpm 命令安裝、升級和卸載 RPM 軟件包,rpm 命令還可用來對 RPM 軟件包做查詢操作,具體包括:
  • 查詢軟件包是否已安裝;
  • 查詢系統中所有已安裝的軟件包;
  • 查看軟件包的詳細信息;
  • 查詢軟件包的文件列表;
  • 查詢某系統文件具體屬于哪個 RPM 包。

使用 rpm 做查詢命令的格式如下:

[root@localhost ~]# rpm 選項 查詢對象

下面教大家使用 rpm 命令一一實現以上查詢操作。

rpm -q:查詢軟件包是否安裝

用 rpm 查詢軟件包是否安裝的命令格式為:

[root@localhost ~]# rpm -q 包名

-q 表示查詢,是 query 的首字母。

例如,查看 linux 系統中是否安裝 apache,rpm 查詢命令應寫成:

[root@localhost ~]# rpm -q httpd
httpd-2.2.15-15.el6.centos.1.i686

注意這里使用的是包名,而不是包全名。因為已安裝的軟件包只需給出包名,系統就可以成功識別(使用包全名反而無法識別)。

rpm -qa:查詢系統中所有安裝的軟件包

使用 rpm 查詢 Linux 系統中所有已安裝軟件包的命令為:

[root@localhost ~]# rpm -qa
libsamplerate-0.1.7-2.1.el6.i686
startup-notification-0.10-2.1.el6.i686
gnome-themes-2.28.1-6.el6.noarch
fontpackages-filesystem-1.41-1.1.el6.noarch
gdm-libs-2.30.4-33.el6_2.i686
gstreamer-0.10.29-1.el6.i686
redhat-lsb-graphics-4.0-3.el6.centos.i686
…省略部分輸出…

此外,這里還可以使用管道符查找出需要的內容,比如:

[root@localhost ~]# rpm -qa | grep httpd
httpd-devel-2.2.15-15.el6.centos.1.i686
httpd-tools-2.2.15-15.el6.centos.1.i686
httpd-manual-2.2.15-15.el6.centos.1.noarch
httpd-2.2.15-15.el6.centos.1.i686

相比rpm -q 包名命令,采用這種方式可以找到含有包名的所有軟件包。

rpm -qi:查詢軟件包的詳細信息

通過 rpm 命令可以查詢軟件包的詳細信息,命令格式如下:

[root@localhost ~]# rpm -qi 包名

-i 選項表示查詢軟件信息,是 information 的首字母。

例如,想查看 apache 包的詳細信息,可以使用如下命令:

[root@localhost ~]# rpm -qi httpd
Name : httpd Relocations:(not relocatable)
#包名
Version : 2.2.15 Vendor:CentOS
#版本和廠商
Release : 15.el6.centos.1 Build Date: 2012年02月14日星期二 06時27分1秒
#發行版本和建立時間
Install Date: 2013年01月07日星期一19時22分43秒
Build Host:
c6b18n2.bsys.dev.centos.org
#安裝時間
Group : System Environment/Daemons Source RPM:
httpd-2.2.15-15.el6.centos.1.src.rpm
#組和源RPM包文件名
Size : 2896132 License: ASL 2.0
#軟件包大小和許可協議
Signature :RSA/SHA1,2012年02月14日星期二 19時11分00秒,Key ID
0946fca2c105b9de
#數字簽名
Packager:CentOS BuildSystem <http://bugs.centos.org>
URL : http://httpd.apache.org/
#廠商網址
Summary : Apache HTTP Server
#軟件包說明
Description:
The Apache HTTP Server is a powerful, efficient, and extensible web server.
#描述

除此之外,還可以查詢未安裝軟件包的詳細信息,命令格式為:

[root@localhost ~]# rpm -qip 包全名

-p 選項表示查詢未安裝的軟件包,是 package 的首字母。

注意,這里用的是包全名,且未安裝的軟件包需使用“絕對路徑+包全名”的方式才能確定包。

rpm -ql:命令查詢軟件包的文件列表

通過前面的學習我們知道,rpm 軟件包通常采用默認路徑安裝,各安裝文件會分門別類安放在適當的目錄文件下。使用 rpm 命令可以查詢到已安裝軟件包中包含的所有文件及各自安裝路徑,命令格式為:

[root@localhost ~]# rpm -ql 包名

-l 選項表示列出軟件包所有文件的安裝目錄。

例如,查看 apache 軟件包中所有文件以及各自的安裝位置,可使用如下命令:

[root@localhost ~]# rpm -ql httpd
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
…省略部分輸出…

同時,rpm 命令還可以查詢未安裝軟件包中包含的所有文件以及打算安裝的路徑,命令格式如下:

[root@localhost ~]# rpm -qlp 包全名

-p 選項表示查詢未安裝的軟件包信息,是 package 的首字母。

注意,由于軟件包還未安裝,因此需要使用“絕對路徑+包全名”的方式才能確定包。

比如,我們想查看 bing 軟件包(未安裝,絕對路徑為:/mnt/cdrom/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm)中的所有文件及各自打算安裝的位置,可以執行如下命令:

[root@localhost ~]# rpm -qlp /mnt/cdrom/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm
/etc/NetworkManager/dispatcher.d/13-named
/etc/logrotate.d/named
/etc/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
…省略部分輸出…

rpm -qf:命令查詢系統文件屬于哪個RPM包

rpm -ql 命令是通過軟件包查詢所含文件的安裝路徑,rpm 還支持反向查詢,即查詢某系統文件所屬哪個 RPM 軟件包。其命令格式如下:

[root@localhost ~]# rpm -qf 系統文件名

-f 選項的含義是查詢系統文件所屬哪個軟件包,是 file 的首字母。

注意,只有使用 RPM 包安裝的文件才能使用該命令,手動方式建立的文件無法使用此命令。

例如,查詢 ls 命令所屬的軟件包,可以執行如下命令:

[root@localhost ~]# rpm -qf /bin/ls
coreutils-8.4-19.el6.i686

rpm -qR:查詢軟件包的依賴關系

使用 rpm 命令安裝 RPM 包,需考慮與其他 RPM 包的依賴關系。rpm -qR 命令就用來查詢某已安裝軟件包依賴的其他包,該命令的格式為:

[root@localhost ~]# rpm -qR 包名

-R(大寫)選項的含義是查詢軟件包的依賴性,是 requires 的首字母。

例如,查詢 apache 軟件包的依賴性,可執行以下命令:

[root@localhost ~]# rpm -qR httpd
/bin/bash
/bin/sh
/etc/mime.types
/usr/sbin/useradd
apr-util-ldap
chkconfig
config(httpd) = 2.2.15-15.el6.centos.1
httpd-tods = 2.2.15-15.el6.centos.1
initscripts >= 8.36
…省略部分輸出…

同樣,在此命令的基礎上增加 -p 選項,即可實現查找未安裝軟件包的依賴性。

例如,bind 軟件包尚未安裝(絕對路徑為: /mnt/cdrom/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm),查看此軟件包的依賴性可執行如下命令:

[root@localhost ~]# rpm -qRp /mnt/cdrom/Packages/bind-9.8.2-0.10.rc1.el6.i686.rpm
/bin/bash
/bin/sh
bind-libs = 32:9.8.2-0.10.rc1.el6
chkconfig
chkconfig
config(bind) = 32:9.8.2-0.10.rc1.el6
grep
libbind9.so.80
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
…省略部分輸出…

注意,這里使用的也是“絕對路徑+包全名”的方式。

beylze編程學院,一個分享編程知識和seo優化知識的網站。跟著beylze一起學習,每天都有進步。

通俗易懂,深入淺出,一篇文章只講一個知識點。

文章不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以閱讀,隨時隨地漲姿勢。

文章不涉及代碼,不燒腦細胞,人人都可以學習。

當你決定關注beylze(公眾號:beylze),你已然超越了90%的其他從業者!

相關文章

優秀教程

国产亚洲欧美日韩