centos8平台使用rpm管理軟件包


一,什么是rpm

rpm是redhat package manager 

redhat的軟件包管理器

 

說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest

         對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/

 說明:作者:劉宏締 郵箱: 371125307@qq.com

 

二,查看rpm命令所屬的包

[root@blog ~]$ whereis rpm
rpm: /usr/bin/rpm /usr/lib/rpm /etc/rpm /usr/share/man/man8/rpm.8.gz

[root@blog ~]$ rpm -qf /usr/bin/rpm
rpm-4.14.2-11.el8_0.x86_64

 

三,查看rpm的版本和幫助

1,查看版本

[root@blog ~]# rpm --version
RPM version 4.14.2

 

2,查看幫助

[root@blog ~]# rpm --help 

 

四,rpm的用法例子之一:查詢已安裝rpm包

說明:查詢已安裝rpm包時一律使用 -q

 

1,查詢某個rpm包是否已安裝

#如已安裝,會顯示完整的包名稱

#如未安裝,會給出提示

[root@blog ~]# rpm -q openresty
openresty-1.15.8.2-6.el8.x86_64

[root@blog ~]# rpm -q nginx
package nginx is not installed

 

2,查詢系統中所有安裝的rpm包

# -q:query 查詢

# -a:query/verify all packages   所有包

[root@blog ~]# rpm -qa 

#因為系統中的rpm包較多,建議使用管道傳遞給more或less

[root@blog ~]# rpm -qa | more 

 

3,查詢一個文件屬於哪個rpm包?

# -q:query 查詢

#-f:    Query package owning FILE,查詢哪個rpm包包含指定文件

[root@blog ~]# rpm -qf /usr/bin/rpm
rpm-4.14.2-11.el8_0.x86_64

 

#如果查詢的文件不屬於rpm包,則會給出提示

[root@blog ~]# rpm -qf /root/echo.sh
file /root/echo.sh is not owned by any package

 

4,列出一個rpm中包含哪些文件?

# -q:query 查詢

# -l : List files in package   列出包中的文件

[root@blog ~]# rpm -ql openresty
/usr/bin/openresty 
...

 

5,顯示一個rpm包的信息

# -q:query 查詢

#-i:    Display package information  顯示包信息

[root@blog ~]# rpm -qi openresty
Name        : openresty
Version     : 1.15.8.2
Release     : 6.el8
Architecture: x86_64
Install Date: Thu 05 Mar 2020 10:19:52 AM CST
Group       : System Environment/Daemons
Size        : 3562830
License     : BSD
Signature   : RSA/SHA256, Sun 08 Sep 2019 08:12:43 AM CST, Key ID 97db7443d5edeb74
Source RPM  : openresty-1.15.8.2-6.el8.src.rpm
Build Date  : Sun 08 Sep 2019 08:12:40 AM CST
Build Host  : rhel8-pkg
Relocations : (not relocatable)
Packager    : Yichun Zhang (agentzh) <yichun@openresty.com>
URL         : https://openresty.org/
Summary     : OpenResty, scalable web platform by extending NGINX with Lua
Description :
This package contains the core server for OpenResty. Built for production
uses.

 

6,查詢rpm包的配置文件

#-c: 列出配置文件的位置

[root@blog ~]# rpm -qc openresty
/usr/local/openresty/nginx/conf/fastcgi.conf
...

 

7,查詢rpm包的文檔

#-d: 列出man或doc的位置

[root@blog ~]# rpm -qd systemd 

 

8,查詢指定的rpm包所依賴的軟件包及文件

# -R, --requires   List capabilities on which this package depends.

[root@blog ~]# rpm -qR openresty
/bin/sh
/bin/sh
/bin/sh
openresty-openssl >= 1.1.0h-1
openresty-pcre >= 8.42-1
openresty-zlib >= 1.2.11-3
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
systemd

 

五,rpm的用法例子之二:對未安裝軟件包文件的查詢:

使用 -qp參數
#-p, --package PACKAGE_FILE Query  an  (uninstalled)  package PACKAGE_FILE. 

 

1,查詢未安裝軟件包的信息

#-i:顯示包信息

[root@blog source]# rpm -qpi ImageMagick-6.9.10.86-1.el8.x86_64.rpm
Name        : ImageMagick
Epoch       : 0
Version     : 6.9.10.86
Release     : 1.el8
Architecture: x86_64
...

 

2,列出未安裝軟件包中包含的文件:

# -l: 列出包中的文件

[root@blog source]# rpm -qpl ImageMagick-6.9.10.86-1.el8.x86_64.rpm
/usr/bin/animate
/usr/bin/compare
/usr/bin/composite
/usr/bin/conjure
/usr/bin/convert 
...

 

3,查詢未安裝rpm包中包含的文檔

#-d:列出man或doc的位置

[root@blog source]# rpm -qpd ImageMagick-6.9.10.86-1.el8.x86_64.rpm
/usr/share/doc/ImageMagick/AUTHORS.txt
/usr/share/doc/ImageMagick/ChangeLog
...

 

4,查詢未安裝軟件包中包含的配置文件

#-c:列出配置文件的路徑

[root@blog source]# rpm -qpc ImageMagick-6.9.10.86-1.el8.x86_64.rpm

 

5,列出未安裝rpm包所依賴的軟件包及文件

#-R: requires:  rpm包所需要的文件

[root@blog source]# rpm -qpR ImageMagick-6.9.10.86-1.el8.x86_64.rpm
ImageMagick-libs(x86-64) = 0:6.9.10.86-1.el8
libICE.so.6()(64bit)
libMagickCore-6.Q16.so.6()(64bit)
...

 

六,rpm的用法例子之三:安裝

1,安裝rpm包

下載安裝包

[root@blog source]# wget http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/zsh-5.5.1-6.el8.x86_64.rpm

 

安裝

#-i:  安裝 install

#-v: 顯示詳細信息 verbose

#-h: 顯示軟件安裝進度

[root@blog source]# rpm -ivh zsh-5.5.1-6.el8.x86_64.rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.5.1-6.el8                  ################################# [100%]

 

2,也可以通過網絡在線安裝

[root@blog source]# rpm -ivh http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/zsh-5.5.1-6.el8.x86_64.rpm 

 

3,只檢查依賴關系,不真正安裝

# --test : 測試

[root@blog source]# rpm -ivh --test zsh-5.5.1-6.el8.x86_64.rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]

 

4,安裝時忽略依賴關系:

#--nodeps:   忽略依賴關系,強制安裝

[root@blog source]# rpm -ivh --nodeps zsh-5.5.1-6.el8.x86_64.rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.5.1-6.el8                  ################################# [100%]

 

七,rpm的用法例子之四:升級

1,升級一個rpm包

#-U:升級軟件

[root@blog source]# rpm -Uvh zsh-5.5.1-6.el8_1.2.x86_64.rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.5.1-6.el8_1.2              ################################# [ 50%]
Cleaning up / removing...
   2:zsh-5.5.1-6.el8                  ################################# [100%]

 

2,降級安裝到低版本的rpm包

# --oldpackage:   安裝低版本的軟件包

[root@blog source]# rpm -Uvh --oldpackage zsh-5.5.1-6.el8.x86_64.rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.5.1-6.el8                  ################################# [ 50%]
Cleaning up / removing...
   2:zsh-5.5.1-6.el8_1.2              ################################# [100%]

 

八,rpm的用法例子之五:卸載

1,刪除一個rpm包

#-e :卸載軟件

[root@blog source]# rpm -e zsh

 

2,刪除一個rpm包時忽略依賴關系

 #--nodeps: 忽略依賴關系強制卸載

[root@blog source]# rpm -e --nodeps zsh

 

九,rpm的用法例子之六:校驗

1,校驗rpm包的安裝

#-V 用來檢查已安裝rpm包的完整性

[root@blog source]# rpm -V zsh

說明:如果沒有輸出,表示無問題

 

2,已安裝rpm包的文件有被修改時的輸出:

[root@blog source]# rpm -V openresty
S.5....T.  c /usr/local/openresty/nginx/conf/nginx.conf

上面的這個配置文件被修改過(這里只是舉例子,屬於正常修改)

 

3,輸出格式的說明:

SM5DLUGT c

S:表示對應文件的大小(Size)不一致;

M:表示對於文件的mode不一致;

5:表示對應文件的MD5不一致;

D:表示文件的major和minor號不一致;

L:表示文件的符號連接內容不一致;

U:表示文件的owner不一致;

G:表示文件的group不一致;

T:表示文件的修改時間不一致;

c:只有文件是一個配置文件時才會有此標志,可以用這種方法快速定位rpm包的配置文件安裝位置。(不是說只有文件不一致情況下才會顯示嗎?沒錯,但是配置文件通常會被修改,所以通常都會被檢測出不一致)

 

注意:校驗功能的主要作用不是用來檢查配置文件,而是檢查rootkit,

          如果我們的二進制程序被修改過,可以被這個功能檢驗出來。

         對於安全的檢測非常重要

 

十,從rpm包中提取文件

1,創建工作目錄:

[root@blog source]# mkdir zshfile
[root@blog source]# mv zsh-5.5.1-6.el8.x86_64.rpm zshfile/
[root@blog source]# cd zshfile/

 

2,用rpm2cpio提取rpm包中的文件

[root@blog zshfile]# rpm2cpio zsh-5.5.1-6.el8.x86_64.rpm | cpio -div
[root@blog zshfile]# ls
etc  usr  zsh-5.5.1-6.el8.x86_64.rpm

提取后的文件保存在 etc和usr 兩個目錄下面

 

十一,查看centos的版本

[root@blog ~]$ cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM