一、 RPM功能描述
l 打包
l 安裝
l 卸載
l 升級
l 校驗
l 數據庫管理
二、 RPM包命名格式
1. 命名格式舉例
name-version-relase.arch.rpm
例如:bash-4.2.3-3.centos5.x86_64.rpm
2. 分段描述
包名 |
版本號 |
RPM發行號 |
系統信息 |
平臺信息 |
后綴 |
bash |
4.2.3(同打包的源代碼一致) |
3(rpm自身的發行號,與程序源碼的發行號無關,僅用于標識對rpm包不同制作的修訂) |
Centos5(此包適用的OS) |
X86_64( 適用于的硬件平臺) 舉例: x86: i386, i486, i586, i686等; x86_64: x86_64 powerpc: ppc noarch: 依賴于虛擬機 |
.rpm |
三、 RPM分包機制
RPM包管理器在對源碼包編譯時根據功能性差異,對要編譯的程序包進行了分包處理。
常見分包形式
主包 |
bash-4.2.3-3.centos7.x86_64.rpm |
命名與源程序一致 |
子包 |
bash-a-4.2.3-3.centos7.x86_64.rpm bash-b-4.2.3-3.centos7.x86_64.rpm bash-devel-4.2.3-3.centos7.x86_64.rpm |
例如:開發包 |
三、 RPM包獲取途徑
1、發行的光盤或站點服務器
鏡像:
http://mirrors.163.com
http://mirrors.sohu.com
2、項目的官網
源代碼
rpm包
3、很多第三方機構或個人制作并公開發布許多rpm包
http://rpmfind.net
http://rpm.pbone.net
4、可靠的途徑:EPEL
Fedora-EPEL
四、 rpm包的合法性驗證
linux源程序包制作者制作完成之后會附加數字簽名于包上,保證了包的來源合法性和完整性。
l 加密過程
包的制作者使用單向加密提取原始數據的特征碼,而后使用自己的私鑰加密這段特性碼,附加原始數據后面。
l 驗證過程
前提:必須有可靠機制獲取到包制作者的公鑰;
1、使用制作者的公鑰解密加密的特征碼,能解密則意味著來源合法;
2、使用與制作者同樣的意向加密算法提取原始數據的特征碼,并與解密出來的特征作比對,相同,則意味著完整性沒問題;
五、 RPM包管理器使用
1. 安裝程序包
命令 |
選項參數 |
文件名 |
Rpm |
-ivh:常用組合 |
/path/to/package_file |
Rpm |
-vvv:安裝時顯示更詳細信息 |
/path/to/package_file |
Rpm |
–test:測試是否可正常安裝 |
/path/to/package_file |
Rpm |
–nodeps:忽略依賴關系安裝,安裝后可能無法正常運行 |
/path/to/package_file |
Rpm |
–replacepkgs:重新安裝(如果原有配置文件作了修改,很有可能不執行替換,而是將應該安裝生成的配置文件重命名為 .rpmnew) |
/path/to/package_file |
2. 卸載程序包
命令 |
選項參數 |
文件名 |
Rpm |
-e:卸載程序包 |
package-_name |
Rpm |
–nodeps:忽略依賴關系將依賴于此包的所有包一并卸載,但依賴于此包的程序包可能會運行不正常。 |
package-_name |
Rpm |
–replacepkgs:重新安裝(如果原有配置文件作了修改,很有可能不執行替換,而是將應該安裝生成的配置文件重命名為 .rpmnew) |
package-_name |
注意:如果包的配置文件安裝后曾被改動過,卸載時,此文件將不會卸載,而是被重命名并保留,例如:warning: /etc/zprofile saved as /etc/zprofile.rpmsave
3. 升級程序包
命令 |
選項參數 |
文件名 |
Rpm |
-Uvh:升級或安裝 |
/path/to/package_file |
Rpm |
-Fvh:純升級(若升級的程序包與其他程序包存在依賴關系,升級后其他程序包會運行異常,存在版本沖突問題;) |
/path/to/package_file |
Rpm |
–force:強制升級 |
/path/to/package_file |
注意:不應該對內核執行升級操作,而是安裝。系統允許多內核并存。
4. 查詢操作
1、查詢某包是否安裝
rpm -q package_name…
2、查詢所有已經安裝的包
rpm -qa
按條件過濾:rpm -qa | grep 'PATTERN'
3、查詢包的描述信息
rpm -qi package_name
4、查詢某包安裝生成了哪些文件
rpm -ql package_name
(1) 查詢某包安裝生成了哪些配置文件
rpm -qc package_name
(2) 查詢某包安裝生成了哪些幫助文件
rpm -qd package_name
(3) 查詢程序包的相關腳本
rpm -q –scripts package_name
腳本有四類:
preinstall:安裝前腳本
postinstall: 安裝后腳本
preuninstall: 卸載前腳本
postuninstall: 年前后腳本
5、查詢某文件是由哪個包安裝生成的
rpm -qf /path/to/some_file
6、對尚未安裝的包執行查詢
rpm [option] /path/to/package_file
-qpi:查詢包的描述信息
-qpl:查詢某包安裝會生成哪些文件
-qpc:查詢某包安裝會生成哪些配置文件
-qpd:查詢某包安裝會生成哪些幫助文件
六、 幾種常見使用場景
1. Rpm包安裝后生成的文件屬性是否發生改變,是否被惡意更改?
標準語句:rpm -V package_name
舉例:以zsh程序包為例
1)修改其配置文件,新增“#NEWLINE”行;
2)rpm –V zsh 檢測;
3)S代表文件大小,新增5字節且修改時間有改變;
注意:某屬性無變化,顯示為 .
各字符代表的意義:
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ
2. 包來源合法性及完整性檢驗
此處以檢測光盤程序包檢測為例;
1)導入前,安裝程序包時提示無密鑰
2)導入包的制作者的公鑰
rpm –import /media/CentOS/RPM-GPG-KEY-CentOS-6
3) 顯示所有已經導入的gpg格式的公鑰
4)顯示密鑰的詳細信息
5)再次安裝zsh程序包,無提示信息(檢查包:安裝過程中會自動執行)
6)手動檢查操作,兩種辦法如圖(來源合法性和完整性)
7)手動檢查操作(來源合法性)
8)手動檢查操作(包完整性)
9)其他命令
清除已導入的密鑰:rpm -e gpg-pubkey-NAME
3. Rpm程序管理器數據庫重建
rpm數據庫目錄:/var/lib/rpm
rpm數據庫重建操作:
rpm –initdb: 初始化(如果事先沒有庫,會新建一個;如果有,則不新建;)
rpm –rebuilddb: 重建(直接重建,覆蓋原有的數據庫)
原創文章,作者:晚明傷哥,如若轉載,請注明出處:http://www.www58058.com/8425