RPM簡介:
`RPM(Revolutions Per Minute)是由RedHalt公司發(fā)展而來的,它是以數(shù)據(jù)庫記錄的方式將我們所需的
軟件安裝在Linux操作系統(tǒng)上叨叙,也就是說制作者將源碼包在指定的硬件環(huán)境及操作系統(tǒng)上進行編譯媒殉,將源代碼
編譯成二進制文件,并生成默認的數(shù)據(jù)庫文件摔敛,其中記錄了安裝程序包所依賴的軟件廷蓉,最后將可執(zhí)
行文件及數(shù)據(jù)庫文件打包成RPM機制的文件,這大大的讓我們對文件管理方便起來马昙,試想一下桃犬,
如果沒有該工具,我們自己去編譯源代碼行楞,那涉及到的依賴很多攒暇,那是不是特別麻煩,卸載起來也特別的麻煩
不利于管理子房,為了解決這類問題形用,后就誕生了RPM程序包管理器,在Linux界主流的其主要有RPM及DPKG,
這里只介紹RPM程序包管理器`
RPM用法及相關命令
用法:
QUERYING AND VERIFYING PACKAGES:
rpm {-q|--query} [select-options] [query-options]
`select-options:查詢包`
` query-options:查詢配置文件证杭、版本號等`
rpm {-V|--verify} [select-options] [verify-options]
`校驗`
rpm --import PUBKEY ...
`導入密鑰認證`
rpm {-K|--checksig} [--nosignature] [--nodigest] PACKAGE_FILE...
`手動驗證包的合法性`
`選項(select):
PACKAGE_NAME:查詢指定包
-a, --all:查詢所有已經(jīng)安裝的包
-f, --file FILE:查詢文件屬于哪個包
-g, --group GROUP:查詢指定包組中含有哪些程序包
-p, --package PACKAGE_FILE:查詢?yōu)榘惭b的包包含哪些文件
--whatprovides CAPABILITY:查詢指定的包提供了哪些能力
--whatrequires CAPABILITY:查詢指定的CAPABILITY被哪些程序包所依賴
`
示例:
rpm -q httpd:查詢httpd包
rpm -qa:查詢所有安裝的程序包
rpm -qf /etc/fstab:查詢fstab配置文件屬于哪個包
rmp -pg “System Environment/Daemons”:查詢該包組包含哪些程序包
rpm -q --whatprovides httpd:查詢httpd功能是由哪個包提供的
rpm -q --whatrequires httpd:查詢httpd功能被哪個程序包依賴
`選項(query):
--changelog:查詢包的更改信息
-d, --docfiles:查詢包的文檔文件
-c, --configfiles:查詢包的配置文件
-i, --info:查詢包的基本信息田度,版本號、包名解愤、大小镇饺、描述信息等
-l, --list:查詢包的所有文件
--provides:查詢包所提供的能力
-R, --requires:查詢包的依賴關系
--scripts:查詢包所需要的執(zhí)行腳本
`
示例:
rpm -q --changelog httpd:查詢httpd包更改的信息
rpm -qd httpd:查詢httpd所提供的文檔
rpm -qc httpd:查詢httpd的配置文件
rpm -ql httpd:查詢httpd中所有的文件
rpm -qi httpd:查詢httpd包的基本信息
rpm -qR httpd:查詢httpd包的依賴關系
rpm -q --scripts:查詢httpd包內部所需要運行的腳本
`選項(VERIFY)
rpm {-V|--verify} [select-options] [verify-options]
在安裝程序包后,假如是在網(wǎng)上隨意下載的一個包進行安裝送讲,有可能這個包被人篡改過或做過
一些不好的手段奸笤,這是我們需要校驗該包惋啃,判斷該包是否被更改過,以下為檢查包更過過的說明
`
S | 檢查文件大小是否一致 |
---|---|
M | 判斷可執(zhí)行等參數(shù)是否被改變(權限监右、文件類型等) |
5 | 判斷加密的屬性是否被改變 |
D | 判斷主設備或副設備號是否匹配 |
L | 路徑是否匹配 |
U | 所屬者是否改變 |
G | 所屬組是否改變 |
T | 包創(chuàng)建的時間是否改變 |
P | 包所提供的能力是否改變 |
導入公鑰密碼
rpm --import PUBKEY ...
示例:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
`isntall(安裝)`
用法:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
`安裝`
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
`升級或安裝`
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
`升級`
rpm {-i|--install} [install-options] PACKAGE_FILE ...
Optiosn:
`
-i:安裝
-v:查看更詳細的安裝信息
-h:顯示安裝進度
--test:測試边灭,不是真正的安裝
--nodeps:忽略包依賴關系
--replacepkg:重新安裝包,如果之前包的相關文件存在則不會替換健盒,不存在則提供
--nosigature:不檢查包的簽名及包來源的合法性
--nodigest:不檢查包的完整性
--justab:由于RPM數(shù)據(jù)庫損壞或某些緣故產(chǎn)生錯誤存筏,可以使用giant選項來更新軟件在數(shù)據(jù)庫內的相關信息
preinstall:安裝過程開始之前運行的腳本,%pre味榛,--nopre
postinstall:安裝過程完成之后運行的腳本,%post予跌,--nopost
preuninstall:卸載過程真正執(zhí)行之前運行的腳本搏色,%preun ,--nopreun
postuninstall:卸載過程完成之后運行的腳本券册,%postun频轿,--nopostun
`
示例:
rpm -ivh /media/CentOS_6.10_Final/Packages/httpd-2.2.15-69.el6.centos.x86_64.rpm:安裝httpd包
rpm -ivh --test /media/CentOS_6.10_Final/Packages/httpd-2.2.15-69.el6.centos.x86_64.rpm:測試安裝
rpm -ivh --nodeps /media/CentOS_6.10_Final/Packages/httpd-2.2.15-69.el6.centos.x86_64.rpm:安裝時忽略依賴關系
rpm -ivh --nosigature /media/CentOS_6.10_Final/Packages/httpd-2.2.15-69.el6.centos.x86_64.rpm:不檢查包的簽名及來源合法性
rpm -ivh --replacepkg /media/CentOS_6.10_Final/Packages/httpd-2.2.15-69.el6.centos.x86_64.rpm:重新安裝httpd包
`rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...:升級安裝,如果程序包不存在則安裝烁焙,存在則升級`
Options:
`
-U:升級安裝
--oldpackage:降級安裝
-F:升級
--force:強制升級
`
(卸載)
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts][--notriggers] [--test] PACKAGE_NAME ...
Options:
`
-e:卸載程序包
--allmatches:卸載所有指定名稱的各程序包版本
--nodeps:忽略依賴關系
--test:測試卸載
注意:卸載安裝的過程一定要右上至下解除關系航邢,當要卸載指定的程序包時,一定要先卸載
指定的程序包骄蝇,否則會發(fā)生結構上的問題膳殷,這就好比拆房子,先拆最上面九火。
`