linux下RPM工具的使用:RPM安裝/查詢/查看/卸載/升級軟件包


一.關於軟件包

​ 在linux中安裝軟件是需要安裝包的,軟件的安裝包有各種類型:.zip,.rar,.rpm,.tar.gz,.tar。軟件包還可以分為源代碼包和二進制

包,源代碼包是沒有經過編譯的包,需要經過GCC、C++編譯器環境編譯才能運行。二進制包無需編譯,可以直接安裝使用。區分是否為

源代碼包還是二進制包還得基於軟件包里面的文件來判斷,包含.h、.c、.cpp、.cc等結尾的源碼文件,稱之為源代碼包,而軟件包里面存

在bin目錄(bin目錄里有可執行文件),稱之為二進制包。源碼包高度可定制,可以自由選擇自己需要的功能。

二.RPM軟件包

​ RPM是RPM Package Manager(RPM軟件包管理器)的縮寫,這一文件格式名稱雖然打上了RedHat的標志,但是其原始設計理念是

開放式的,現在包括OpenLinux、SUSE以及Turbo Linux等Linux的分發版本都有采用,可以算是公認的行業標准了。RPM包是二進制包

可以直接使用。

​ rpm包的獲取方式:Centos系統鏡像光盤;網站http://rpmfind.net/;各種軟件的官網下載。

三.RPM包通用的命名規則

RPM包的一般命名規則為:name-version-arch.rpm或者name-version-arch.src.rpm。

  • ​ name就是軟件包的名稱
  • ​ version是軟件的版本號,版本號的格式通常為“主版本號.次版本號.修正號”,也有發布版本號,表示這個RPM包是第幾次編譯生成的
  • ​ arch表示軟件包適用的硬件平台,目前RPM支持的平台有:i386,i586,i686、sparc,alpha,x86_64等等
  • ​ .rpm或.src.rpm,是RPM包類型的后綴,.rpm是編譯好的二進制包,可用rpm命令直接安裝;.src.rpm表示是源代碼包,需要編譯之后才可以使用
  • ​ el* 表示這個軟件包的發行商版本,el7表示這個軟件包是在RHEL 7.x/CentOS 7.x下使用
  • ​ devel:表示這個RPM包是軟件的開發包
  • ​ noarch:說明這樣的軟件包可以在任何平台上安裝,不需要特定的硬件平台。在任何硬件平台上都可以運行
  • ​ manual 手冊文檔
httpd-2.2.3-29.el5.i386.rpm
軟件名稱httpd|軟件版本號2.2.3|發布版本號29|el5軟件包是在RHEL 5.x/CentOS 5.x下使用|包適用的硬件平台i386|RPM包的類型

四.RPM工具的使用

RPM工具可以進行安裝、查詢、驗證、更新、刪除等操作。

4.1 rpm安裝軟件的功能

1.RPM的命令格式:rpm [參數] 軟件包,rpm的安裝參數有:

  • ​ -i 是install的意思, 安裝軟件包
  • ​ -v 顯示附加信息,提供更多詳細信息
  • ​ -V 校驗,對已經安裝的軟件進行校驗
  • ​ -h --hash 安裝時輸出####標記

2.使用rpm時,什么情況使用軟件包全名,什么時候使用軟件包名?

答:1.在安裝和更新升級時候使用全名;2.對已經安裝過的軟件包進行操作時,比如查找已經安裝的某個包,卸載包等 ,使用包名。

3.當我們使用rpm查找某個rpm安裝包的信息時,默認去目錄/var/lib/rpm下面進行搜索。當一個 rpm 包安裝到系統上之后,安裝信息通常

會保存在本地的 /var/lib/rpm/目錄下。

[root@node5 ~]# ls /var/lib/rpm
Basenames  Conflictname  __db.001  __db.002  __db.003  Dirnames  Group  Installtid  Name  Obsoletename  Packages  Providename  Requirename  Sha1header  Sigmd5  Triggername

4.從本地安裝rpm安裝包

[root@node5 ~]# rpm -ivh telnet-0.17-64.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:telnet-1:0.17-64.el7             ################################# [100%]

5.從網上下載centos epel擴展源,然后安裝

#注釋:epel源是對centos7系統中自帶的 base源的擴展。
[root@node5 ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Retrieving http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:epel-release-7-12                ################################# [100%]

6.安裝rpm包的時候,有時候需要解決依賴關系,這時候根據提示,優先安裝依賴包,再次安裝即可。

[root@node5 ~]# rpm -ivh mariadb-server-5.5.56-2.el7.x86_64.rpm 
警告:/mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID f4a80eb5: NOKEY
錯誤:依賴檢測失敗:
	mariadb(x86-64) = 1:5.5.56-2.el7 被 mariadb-server-1:5.5.56-2.el7.x86_64 需要
	perl-DBD-MySQL 被 mariadb-server-1:5.5.56-2.el7.x86_64 需要
解決:
[root@node5 ~]# rpm -ivh /mnt/Packages/mariadb-5.5.56-2.el7.x86_64.rpm 
[root@node5 ~]# rpm -ivh /mnt/Packages/perl-DBD-MySQL-4.023-5.el7.x86_64.rpm 
[root@node5 ~]# rpm -ivh /mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm 

4.2 rpm查詢的功能

1.rpm查詢語法:rpm -q(query),常與下面參數組合使用

  • ​ -a(all) 查詢所有已安裝的軟件包
  • ​ -f(file)查詢系統文件名(查詢系統文件所屬哪個軟件包),反向查詢
  • ​ -i 顯示已經安裝的rpm軟件包信息,后面直接跟包名
  • ​ -l(list) 查詢軟件包中文件安裝的位置
  • ​ -p 查詢未安裝軟件包的相關信息,后面要跟軟件的全名
  • ​ -R 查詢軟件包的依賴性
#查詢zsh包是否安裝
[root@node5 ~]# rpm -q zsh
zsh-5.0.2-34.el7_8.2.x86_64

#查詢所有已安裝的軟件包
[root@node5 ~]# rpm -qa 
......
libX11-1.6.7-2.el7.x86_64
kernel-3.10.0-693.el7.x86_64
setup-2.8.71-7.el7.noarch
......

#查詢所有已安裝包中帶rest關鍵字的包
[root@node5 ~]# rpm -qa | grep rest
rest-0.8.1-2.el7.x86_64

#查看find命令的路徑
[root@node5 ~]# which find
/usr/bin/find

#查看find命令的路徑
[root@node5 ~]# whereis find
find: /usr/bin/find /usr/share/man/man1/find.1.gz

#查詢文件或命令屬於哪個安裝包
[root@node5 ~]# rpm -qf /usr/bin/find
findutils-4.5.11-5.el7.x86_64

#查詢已經安裝的rpm包的詳細信息或作用
[root@node5 ~]# rpm -qi hardlink
Name        : hardlink
Epoch       : 1
Version     : 1.0
Release     : 19.el7
Architecture: x86_64
Install Date: Fri 26 Apr 2019 05:10:21 PM CST
Group       : System Environment/Base
Size        : 16545
License     : GPL+
Signature   : RSA/SHA256, Fri 04 Jul 2014 09:53:40 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : hardlink-1.0-19.el7.src.rpm
Build Date  : Tue 10 Jun 2014 02:26:04 PM CST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://pkgs.fedoraproject.org/gitweb/?p=hardlink.git
Summary     : Create a tree of hardlinks
Description :
hardlink is used to create a tree of hard links.
It's used by kernel installation to dramatically reduce the
amount of diskspace used by each kernel package installed.

#查詢沒有安裝的rpm包的詳細信息或作用
[root@node5 ~]# rpm -qpi telnet-0.17-64.el7.x86_64.rpm
Name        : telnet
Epoch       : 1
Version     : 0.17
Release     : 64.el7
Architecture: x86_64
Install Date: (not installed)
Group       : Applications/Internet
Size        : 115888
License     : BSD
Signature   : RSA/SHA256, Fri 11 Aug 2017 04:04:43 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : telnet-0.17-64.el7.src.rpm
Build Date  : Fri 04 Aug 2017 04:00:38 AM CST
Build Host  : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://web.archive.org/web/20070819111735/www.hcs.harvard.edu/~dholland/computers/old-netkit.html
Summary     : The client program for the Telnet remote login protocol
Description :
Telnet is a popular protocol for logging into remote systems over the
Internet. The package provides a command line Telnet client

#查看rpm安裝后,將生成哪些文件
[root@node5 ~]# rpm -qpl telnet-0.17-64.el7.x86_64.rpm 
/usr/bin/telnet
/usr/share/doc/telnet-0.17
/usr/share/doc/telnet-0.17/README
/usr/share/man/man1/telnet.1.gz

#查看已安裝的命令,生成了哪些文件
[root@node5 ~]# rpm -ql telnet
/usr/bin/telnet
/usr/share/doc/telnet-0.17
/usr/share/doc/telnet-0.17/README
/usr/share/man/man1/telnet.1.gz

4.3 rpm查看軟件包內容是否被修改

1.語法:rpm -V包名 或者 rpm -Vf 文件路徑

[root@node5 ~]# which telnet
/usr/bin/telnet

[root@node5 ~]# rpm -qf /usr/bin/telnet
telnet-0.17-64.el7.x86_64

#查看telnet命令內容是否被修改,沒有輸出,則沒有被修改
[root@node5 ~]# rpm -Vf /usr/bin/telnet

[root@node5 ~]# echo aaa >> /usr/bin/telnet

[root@node5 ~]# rpm -Vf /usr/bin/telnet
S.5....T.    /usr/bin/telnet

[root@node5 ~]# rpm -V telnet
S.5....T.    /usr/bin/telnet

#注釋:如果執行rpm -V 包名  出現的全是點,表示測試通過,命令內容沒有被修改
#出現下面的字符代表測試的失敗,即是命令內容被修改
5 — MD5 校驗和是否改變,你也看成文件內容是否改變
S — 文件長度,大小是否改變
L — 符號鏈接,文件路徑是否改變
T — 文件修改日期是否改變
D — 設備
U — 用戶,文件的屬主
G — 用戶組
M — 模式 (包含許可和文件類型)
? — 不可讀文件
#文件類型
c 配置文件
d 普通文件
g 不該出現的文件,意思就是這個文件不該被這個包所包含
l 授權文件(license file)
r 描述文件

2.查看系統中所有的rpm包及安裝的文件有沒有被黑客修改過?

#注釋:檢查時參考了/var/lib/rpm 目錄下的rpm數據庫信息
[root@node5 ~]# rpm -Va > rpm_check.txt
 
[root@node5 ~]# ll rpm_check.txt -h
-rw-r--r-- 1 root root 629 Oct 19 21:34 rpm_check.txt
                                                                                                          
[root@node5 ~]# cat rpm_check.txt 
.......T.  c /etc/httpd/conf/httpd.conf
S.5....T.  c /etc/sysconfig/authconfig
....L....  c /etc/pam.d/fingerprint-auth
....L....  c /etc/pam.d/password-auth
....L....  c /etc/pam.d/postlogin
....L....  c /etc/pam.d/smartcard-auth
....L....  c /etc/pam.d/system-auth
S.5....T.  c /etc/security/limits.conf
missing     /var/run/wpa_supplicant
S.5....T.  c /etc/vsftpd/vsftpd.conf
.....UG..    /var/ftp/pub
S.5....T.  c /etc/sysconfig/iptables
.......T.    /usr/aarch64-linux-gnu/include/rpc/netdb.h
S.5....T.    /usr/bin/telnet
S.5....T.  c /etc/rc.d/rc.local
.M.......    /etc/rc.d/init.d/functions
S.5....T.  c /etc/sysctl.conf

4.4 rpm卸載軟件的功能

1.卸載軟件的語法:rpm -e(erase) 包名

[root@node5 ~]# rpm -q telnet
telnet-0.17-64.el7.x86_64

[root@node5 ~]# rpm -e telnet
[root@node5 ~]# rpm -q telnet
package telnet is not installed

#有時候卸載的軟件包有依賴關系,所以加上--nodeps強制卸載軟件
[root@node5 ~]# rpm -e --nodeps lrzsz

4.5 rpm升級軟件的功能

1.語法:rpm -Uvh 包名

[root@node5 ~]# rpm -Uvh telnet-0.17-64.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:telnet-1:0.17-64.el7             ################################# [100%]


免責聲明!

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



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