Linux命令之rpm


  rpm是一個包管理器,用於生成、安裝、查詢、核實、更新以及卸載單個軟件包。一個包通常包括一個文件存檔以及元數據,用於安裝和刪除存檔文件。元數據包括助手腳本、文件屬性和包的描述信息。

  必選選擇以下基本模式之一:查詢,驗證,安裝/升級/刷新/重新安裝,卸載,設置所屬主/所屬組,顯示查詢標簽和顯示配置。

查詢和驗證包:

rpm {-q|--query} [select-options] [query-options]

rpm {-V|--verify} [select-options] [verify-options]

安裝/升級/卸載包:

rpm {-i|--install} [install-options] PACKAGE_FILE …

rpm {-U|--upgrade} [install-options] PACKAGE_FILE …

rpm {-F|--freshen} [install-options] PACKAGE_FILE …

rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME …

雜項:

rpm {--querytags|--showrc}

rpm {--setperms|--setugids} PACKAGE_NAME …

(1).軟件包的類型

rpm二進制包,已經使用gcc編譯。

tar源碼包,需要編譯。

1)rpm包的獲取方式:

         1.光盤或系統鏡像

         2.網站rpmfind.net

         3.部分軟件可以去它的官網下載,如mysql、nginx等

2)rpm包格式說明:

zsh     -5             .0           .2   -28    .el7                     .x86_64.rpm

軟件名-主版本號.次版本號.修訂-發布.操作系統版本.軟件包位數

  說明:修訂表示第幾次修改bug。發布表好似第幾次發布。發布可能只對軟件安裝的默認參數做了修改而沒有其他改動。

3)rpm使用時,什么情況下用全名,什么情況下用軟件名?

  在安裝和更新時使用全名。對已經安裝過的軟件包進行操作時使用軟件名,比如查找已經安裝的某個包或卸載包。

  注意:當一個rpm包安裝到系統上,安裝信息通常會保存在本地的/var/lib/rpm/目錄下

4)rpm在安裝完成后,相關文件會復制到不同的目錄下,一般默認分布如下(具體由打包人員設置):

  /etc  存放配置文件

  /bin/sbin  一些可執行文件

  /lib  /lib64  一些庫文件

  /usr/include  一些頭文件

  /usr/share/doc  使用手冊幫助文件

  /usr/share/man  man手冊

(2).常用選項

1)前置模式選擇選項

-q,--query 查詢指定格式的包信息。
-V,--verify 驗證將比較包中已安裝文件的信息與從存儲在rpm數據庫中的包的元數據中獲取的文件信息。
-i,--install 安裝一個新軟件包。
-U,--upgrade 升級或安裝較新的軟件包。與install類似,但會刪除其他所有版本。
-F,--freshen 僅升級,必須存在早期版本的軟件包。
-e,--erase 卸載

2)一般選項

-v 打印詳細信息,通常會顯示常規進度消息。
--version 打印包含正在使用的rpm版本號的單行

3)包選擇選項(select-options)

-a,--all 指定所有文件
-f,--file FILE 指定文件所屬的包
-p,--package PACKAGE_FILE 指定未安裝的包文件,可以是ftp或http的URL。

4)包查詢選項(query-options)

-i,--info 顯示包的名稱、版本和說明。如果指定了--queryformat ,則使用它。
-l,--list 列出包內所有文件
-R,--requires 列出包的依賴信息(關聯軟件包)

5)安裝選項(install-options)

-h,--hash 打開包存檔時打印50個散列標記(#),與-v或--verbose一起使用可以獲得更好的顯示效果
--prefix=<dir> 把軟件包安裝到指定目錄下

(3).實例

1)從本地安裝軟件

[root@xuexi ~]# rpm -ivh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm 
警告:/mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID f4a80eb5: NOKEY
准備中...                          ################################# [100%]
正在升級/安裝...
   1:zsh-5.0.2-28.el7                 ################################# [100%]
[root@xuexi ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
/bin/zsh

2)從網上下載直接安裝CentOS epel擴展yum源

  注:epel源是對CentOS7系統中自帶的base源的擴展。針對有依賴關系的包安裝,建議直接使用yum安裝。

[root@xuexi ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
獲取http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
警告:/var/tmp/rpm-tmp.Wl3pdy: 頭V3 RSA/SHA256 Signature, 密鑰 ID 352c64e5: NOKEY
准備中...                          ################################# [100%]
正在升級/安裝...
   1:epel-release-7-11                ################################# [100%]

3)查詢指定包是否安裝

[root@xuexi ~]# rpm -q zsh
zsh-5.0.2-28.el7.x86_64
[root@xuexi ~]# rpm -qa zsh
zsh-5.0.2-28.el7.x86_64

4)查看所有已安裝包

[root@xuexi ~]# rpm -qa
[root@xuexi ~]# rpm -qa | grep vim      //查詢所有已安裝包中帶vim關鍵字的包
vim-filesystem-7.4.160-5.el7.x86_64
vim-enhanced-7.4.160-5.el7.x86_64
vim-minimal-7.4.160-5.el7.x86_64
vim-common-7.4.160-5.el7.x86_64

5)查詢文件或命令屬於哪個安裝包

[root@xuexi ~]# rpm -qf /usr/bin
filesystem-3.2-25.el7.x86_64
[root@xuexi ~]# which find      //查看find命令的路徑
/usr/bin/find
[root@xuexi ~]# rpm -qf /usr/bin/find
findutils-4.5.11-6.el7.x86_64

6)查詢包的詳細信息或作用

  注意:沒有安裝才使用-p選項

[root@xuexi ~]# rpm -qpi /mnt/Packages/php-mysql-5.4.16-45.el7.x86_64.rpm //沒有安裝
警告:/mnt/Packages/php-mysql-5.4.16-45.el7.x86_64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID f4a80eb5: NOKEY
Name        : php-mysql
Version     : 5.4.16
Release     : 45.el7
Architecture: x86_64
Install Date: (not installed)
Group       : Development/Languages
Size        : 237547
License     : PHP
Signature   : RSA/SHA256, 2018年04月25日 星期三 19時36分39秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : php-5.4.16-45.el7.src.rpm
Build Date  : 2018年04月13日 星期五 03時12分53秒
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.php.net/
Summary     : A module for PHP applications that use MySQL databases
Description :
The php-mysql package contains a dynamic shared object that will add
MySQL database support to PHP. MySQL is an object-relational database
management system. PHP is an HTML-embeddable scripting language. If
you need MySQL support for PHP applications, you will need to install
this package and the php package.
[root@xuexi /]# rpm -qi zsh		//已經安裝
Name        : zsh
Version     : 5.0.2
Release     : 28.el7
Architecture: x86_64
Install Date: 2019年01月10日 星期四 13時12分01秒
Group       : System Environment/Shells
Size        : 5855982
License     : MIT
Signature   : RSA/SHA256, 2017年08月11日 星期五 04時28分17秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : zsh-5.0.2-28.el7.src.rpm
Build Date  : 2017年08月02日 星期三 18時52分37秒
Build Host  : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://zsh.sourceforge.net/
Summary     : Powerful interactive shell
Description :
The zsh shell is a command interpreter usable as an interactive login
shell and as a shell script command processor.  Zsh resembles the ksh
shell (the Korn shell), but includes many enhancements.  Zsh supports
command line editing, built-in spelling correction, programmable
command completion, shell functions (with autoloading), a history
mechanism, and more.

7)查詢包生成或將會生成的文件

[root@xuexi /]# rpm -ql zsh     //已安裝
[root@xuexi /]# rpm -qpl /mnt/Packages/php-mysql-5.4.16-45.el7.x86_64.rpm       //未安裝
警告:/mnt/Packages/php-mysql-5.4.16-45.el7.x86_64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID f4a80eb5: NOKEY
/etc/php.d/mysql.ini
/etc/php.d/mysqli.ini
/etc/php.d/pdo_mysql.ini
/usr/lib64/php/modules/mysql.so
/usr/lib64/php/modules/mysqli.so
/usr/lib64/php/modules/pdo_mysql.so

8)驗證軟件包內容是否被修改,實際應用於驗證命令有沒有被黑客修改

[root@xuexi ~]# rpm -Va     //驗證所有包
[root@xuexi ~]# which find
/usr/bin/find
[root@xuexi ~]# rpm -qf /usr/bin/find
findutils-4.5.11-6.el7.x86_64
[root@xuexi ~]# rpm -Vf /usr/bin/find
[root@xuexi ~]# echo aaa >> /usr/bin/find
[root@xuexi ~]# rpm -Vf /usr/bin/find       //通過文件檢查
S.5....T.    /usr/bin/find
[root@xuexi ~]# rpm -V findutils        //通過包檢查
S.5....T.    /usr/bin/find

  注:如果出現的全是點,表示測試通過。出現下面的字符代表某項測試失敗:

5   MD5校驗和是否改變,也看成文件內容是否改變
S   文件長度,大小是否改變
L   符號鏈接,文件路徑是否改變
T   文件修改日期是否改變
D   設備
U   用戶
G   用戶組
M   模式
?  不可讀文件

  后面c文件名,表示的是文件類型

c   配置文件
d   普通文件
g   不該出現的文件,意思是包不含這個文件
l   授權文件(licase file)
r   描述文件

  注意:驗證時參考了/var/lib/rpm目錄下的rpm數據庫信息。

9)卸載

[root@xuexi ~]# rpm -e zsh

  注意:--nodeps忽略依賴,但不建議在卸載時使用rpm去卸載有依賴關系的包,應該用yum。

10)不存在就安裝,存在就升級

[root@xuexi ~]# rpm -Uvh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
警告:/mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID f4a80eb5: NOKEY
准備中...                          ################################# [100%]
正在升級/安裝...
   1:zsh-5.0.2-28.el7                 ################################# [100%]

 (4).擴展

srpm源碼包(.src.rpm),私人定制rpm。安裝rpmbuild --rebuild XXX.arc.rpm。很少使用,用興趣可以了解下。


免責聲明!

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



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