二進位制RPM包查詢命令詳解

2021-10-06 21:45:50 字數 4771 閱讀 9308

rpm包管理系統是非常強大和方便的包管理系統,它比原始碼包的方便之處就在於可以使用命令查詢、公升級和解除安裝。在在查詢的時候,其實是在查詢/var/lib/rpm/這個目錄下的資料庫檔案,那為什麼不直接檢視這些檔案呢?你可以嘗試使用vim檢視這些檔案,會發現都是亂碼。也就是說,這些檔案其實都是二進位制檔案,不能直接用編輯器檢視,所以才需要使用命令檢視。

查詢命令的格式

rpm查詢命令採用如下格式:

[root@localhost ~]

# rpm 選項 查詢物件

選項

說明-q

查詢query;

-a所有軟體包all;

-i軟體包資訊information;

-p主要指沒有安裝的軟體包package;

-l軟體包檔案列表list;

-f查詢系統檔案屬於哪個軟體包file;

-r軟體包依賴性requires;

在查詢中,q選項為必須選項,p為查詢未安裝軟體包選項,可自由進行組合查詢已安裝或未安裝軟體包資訊,常見的組合見下表:

組合選項

說明-q 包名

查詢是否安裝該軟體包;

-qa列出已安裝所有軟體包;

-qi 包名

查詢已軟體包的詳細資訊;

-qip 全包名

查詢沒有安裝軟體包詳細資訊;

-ql 包名

列出已安裝軟體包檔案列表;

-qlp 全包名

查詢沒有安裝的軟體包檔案列表;

-qf通過系統檔案查詢該檔案屬於哪個軟體包;

-qr 包名

檢視已安裝軟體的依賴軟體包;

-qrp 全包名

檢視沒有安裝的軟體包的依賴包;

查詢軟體包是否安裝

可以查詢軟體包是否安裝,命令格式如下:

[root@localhost ~]

# rpm -q 包名

選項

說明-q

查詢例如,想檢視一下apache包是否安裝,可以執行如下命令:

[root@localhost ~]

# rpm -q httpd

因為apache是已經安裝完成的包,所以只需要給出「包名」,系統就可以識別。而沒有裝的包就必須使用「絕對路徑+包全名」格式才可以確定包。前面一直強調的包名和包全名不能寫混亂就是這個原因。

查詢系統中的所有安裝軟體包

可以查詢linux 系統中所有已經安裝的軟體包,命令格式如下:

[root@localhost ~]

# rpm -qa

setup-2.8.14-20.el6_4.1.noarch

basesystem-10.0-4.el6.noarch

tzdata-2016c-1.el6.noarch

nss-softokn-freebl-3.14.3-23.el6_7.x86_64

ncurses-libs-5.7-4.20090207.el6.x86_64

libattr-2.4.44-7.el6.x86_64

...省略部分輸出

當然,可以使用管道符來檢視所需的內容,比如:

[root@localhost ~]

# rpm -qa | grep httpd

你會發現,使用「rpm -q 包名」只能檢視這個包是否安裝,但是使用「rpm -qa |grep 包名」會把包含包名稱的所有包都列出來。

查詢軟體包的詳細資訊

可以查詢已經安裝的某個軟體包的詳細資訊,命令格式如下:

[root@localhost ~]

# rpm -qi 包名

選項

說明-i

查詢軟體資訊(infomation)

例如,檢視apache包的安裝資訊,可以使用一下命令:

#包名version :

2.2.15 vendor: centos

#版本和廠商

release :

69.el6.centos build date: tue 19 jun 2018

11:45:51 pm cst

#發行版本和建立時間

install date: mon 23 mar 2020 07:15:07 pm cst build host: x86-01.bsys.centos.org

#安裝時間

#組合源rpm包檔名

size :

3170514 license: asl 2.0

#軟體大小和許可協議

signature : rsa/sha1, wed 20 jun 2018 07:36:47 pm cst, key id 0946fca2c105b9de

#數字簽名

packager : centos buildsystem <>

url :

#廠商**

#軟體包說明

#描述通過這條命令可以看到包名、版本、發行版本、安裝時間、軟體包大小等資訊,也可以查詢還沒有安裝的軟體包的詳細資訊,命令格式如下:

[root@localhost ~]

# rpm -qip 包全名

選項

說明-p

查詢沒有安裝的軟體包(package)

注意:沒有安裝的軟體包是存放在光碟中的,而且因為沒有安裝,所以需要使用全包名。

查詢軟體包中的檔案列表

可以查詢已經安裝的軟體包中的檔案列表和安裝的完整目錄,命令格式如下:

[root@localhost ~]

# rpm -ql 包名

選項

說明-l

列出軟體包中所有的檔案列表和軟體所安裝的目錄(list)

那麼,可以查詢還沒有安裝的軟體包中的檔案列表和打算安裝的位置嗎?答案是可以的,命令格式如下:

[root@localhost ~]

# rpm -qlp 全包名

選項

說明-p

查詢沒有安裝的軟體包的資訊(package)

查詢系統檔案屬於哪個rpm包

既然可以知道每個rpm包中的檔案的安裝位置,那麼可以查詢系統檔案屬於哪個rpm包嗎?當然可以,不過需要注意的是,手工建立的檔案是不能查詢的,因為這些檔案不是通過rpm包安裝的,當然不能反向查詢它屬於哪個rpm包,命令格式如下:

[root@localhost ~]

# rpm -qf 系統檔名

選項

說明-f

查詢系統檔案屬於哪個軟體包(file)

例如,我想查詢下ls命令是由哪個軟體包提供的,可以執行如下命令:

[root@localhost ~]

# whereis ls

ls: /bin/ls /usr/share/man/man1/ls.1.gz

#先使用whereis命令查詢ls命令的二進位制檔案位址

[root@localhost ~]

# rpm -qf /bin/ls

coreutils-8.4-43.el6.x86_64

查詢軟體包所依賴的軟體包

查詢系統中和已經安裝的軟體包郵依賴關係的軟體包,命令格式如下:

[root@localhost ~]

# rpm -qr 包名

選項

說明-r

查詢軟體包的依賴性(requires)

例如,想查詢一下apache包的依賴包,可以執行如下命令:

...省略部分輸出...可以查詢沒有安裝的軟體包的依賴性嗎?加「-p」選項即可,例如,檢視一下還沒有安裝的bind軟體包的依賴性,可以執行如下命令:

[root@localhost ~]

# rpm -qrp /mnt/cdrom/packages/bind-9.8.2-0.47.rc1.el6.x86_64.rpm

RPM二進位製包

linux 軟體包管理大致可分為二進位製包 原始碼包,使用的工具也各不相同。linux 常見軟體包分為兩種,分別是源 包 source code 二進位製包 binary code 源 包是沒有經過編譯的包,需要經過 gcc c 編譯器環境編譯或解壓才能執行,二進位製包無需編譯,可以直接安裝使用。通...

製作二進位制rpm包

directory under rpmbuild build buildroot rpms sources specs srpms abc localhost rpmbuild tree build pythontest 1.1.1 100.x86 64 doc readme test1.py py...

Centos rpm二進位製包安裝 rpm

rpm 軟體包管理器 rpm包命名規範 mysql community server 5.7.21 1.el7.x86 64.rpm 軟體名稱mysql community server 軟體版本5.7.21 更新發行次數1 適合系統版本el7 cpu和系統架構x86 64 副檔名rpm rpm包安...