一:簡介
rpm包的命名格式:
name-version-relase.arch.rpm
version:major,minor,release,同源代碼
release:rpm自身的發行號,與程序源代碼的發行號無關,僅用於標示對rpm包不同製作的修訂;同時,release還包含此包適用的OSbash-4.2.3-3.centos5
arch:適用於的硬件平臺,
可靠的途徑:EPEL
Fedora-EPEL 額外包
rpm包的合法性驗證:
包製作者製作完成之後會附加數字簽名於包上;來源合法性;包的完整性
包的製作者使用單向加密提取原始數據的特徵碼,而後使用自己的私鑰加密這段特性碼,附加原始數據後面。
驗證過程:
前提:必須有可靠機制獲取到包製作者的公鑰;
1、使用製作者的公鑰解密加密的特徵碼,能解密則意味着來源合法;
2、使用與製作者同樣的意向加密算法提取原始數據的特徵碼,並與解密出來的特徵作對比,相同,則意味着完整性沒有問題。
二:rpm包管理器的常見使用場景:
安裝程序包
格式:
rpm [option] /path/to/package_file
-i | 安裝程序包 例如rpm -i zsh-4.3.10-7.e16.x86_64.rpm |
-v | 詳細安裝信息 注 -vv 和-vvv 可以看見更詳細和更加詳細的安裝信息 |
-ivh | 顯示安裝進度 |
--test | 僅作測試,有真正執行安裝 |
注:如果依賴於其它包:
1、解決依賴關係
2、忽略依賴關係
能卸載,但依賴於此包程序包可能會運行不正常;
強制卸載:--nodeps
三:升級程序包
新版本替換老版本 :rpm [option] /path/to/package_file
1、升級或安裝
-Uvh
2、純升級
-Fvh
升級後的版本衝突等;
強制升級:--force
注意:不應該對內核執行升級操作,而安裝系統允許多內核並存
四:查詢操作:
1、查詢某包是否安裝
rpm -q package_name...
例如: rpm -q zsh 查看2個以上 rpm -q zsh phd
2、查詢所有已經安裝的包
rpm -qa
按條件過濾:rpm -qa | grep 'PATTERN'
例如: rpm -qa | grep "^php.*m.*"
3、查詢包的描述信息
rpm -qi package_name 例如:rpm -qi zsh
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 | 列出RPM軟件包的描述信息 |
-qpl | 列出RPM軟件包內的文件信息 |
-qpc | 查看一個軟件包的配置文件 |
-qpd | 查看軟件包的文檔所在的位置 |
五:校驗:
用於檢查包安裝生成的文件屬性是否發生變化
rpm -V package_name
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
六:rpm包來源合法性及完整性檢驗:
前提:在當前系統上導入包的製作者的公鑰
導入:
rpm --import /path/to/key_file
# rpm -qa gpg-pubkey* 顯示所有已經導入的gpg格式的公鑰
# rpm -qi gpg-pubkey-NAME 顯示密鑰的詳細信息
七:檢查包:安裝過程中會自動執
rpm -K /path/to/package_file
rpm --checksig /path/to/package_file
不檢查包完整性:rpm -K --nodigest
不檢查來源合法性: rpm -K --nosignatu
八:數據庫重建:
數據庫目錄:/var/lib/rpm
重建:
rpm --initdb:初始化
如果事先沒有庫,會新建一個;如果有,則不新建;
rpm --rebuilddb: 重建
直接重建,覆蓋原有的數據庫