前言
Linux平臺上常見的軟件包格式主要有三種,分別是源碼格式包、通用二進制格式包和rpm格式包本文主要講解rpm格式包安裝及管理。RPM是Redhat Package Manager的縮寫,是由Redhat公司開發的Linux軟件包管理具,因其便捷的管理方式與開源思想,逐漸被其他Linux發行商所采用,現已成Linux平臺下通用的軟件包管理方式。
rpm包的命名格式
name-version-release.arch.rpm
name:軟件包名字
version:由主版本號.次版本號.發行號組成(同源代碼包)
主版本號改變:重大改進
次版本號改變:某個子功能發生重大變化
發行號改變:修正了部分bug,調整了一點功能
release:rpm自身的發行號,與程序源碼的發行號無關,僅用于標識對rpm包不同制作的修訂;同時,release還包含此包適用的OS
arch:適用硬件平臺
例如:httpd-2.2.15-39.el6.x86_64.rpm
一個程序有20個功能:常用功能有8個,特殊A:3個,特殊B:6個,二次開發相關功能:3個,而rpm包可能只包含其中的幾個,所以如果有需要還需手動編譯,在此略提一下。
分包機制
核心包,主包命名方式與源程序一致:
例如:httpd-2.2.15-39.el6.x86_64.rpm
子包:httpd-tools-2.2.15-39.el6.x86_64.rpm
OS Vendor: 系統發行商提供的包
獲取rpm包的途徑
1、發行的光盤或站點服務器
鏡像:
http://mirrors.163.com
http://mirrors.sohu.com
2、項目的官網
源代碼
rpm包
3、第三方機構或個人制作并公開發布的rpm包
http://rpmfind.net
http://rpm.pbone.net
可靠的途徑:EPEL
Fedora-EPEL
rpm包的合法性驗正
包的制作者使用單向加密提取原始數據的特征碼,而后使用自己的私鑰加密這段特性碼,附加原始數據后面。通過驗證可得知:rpm包來源合法性和完整性。
驗正過程:
前提:必須通過可靠途徑獲取到包制作者的公鑰。
1、使用制作者的公鑰解密加密的特征碼,能解密則意味著來源合法。
2、使用與制作者同樣的單向加密算法提取原始數據的特征碼,并與解密出來的特征作比對,相同,則意味著軟件包完整。
導入: 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 --nosignature #不檢查來源合法性[object Object]
RPM管理之安裝
命令格式:
rpm [option] /path/to/package_file
-i:安裝 -v:顯示詳細信息 #想更詳細顯示可用-vv -vvv -h:顯示安裝進度 #一個“#”代表2% -ivh:一般組合使用 --test:測試安裝 --nodepes:忽略依賴關系 #能安裝上,但可能無法運行 --replacepkgs:重新安裝 #如果原有配置文件作了修改,很有可能不執行替換,而是將生成的配置文件重命名為 .rpmnew
RPM管理之卸載
命令格式:
rpm [option] package_name
-e:卸載 --nodeps:忽略依賴關系 #能卸載,但依賴于此包程序包可能會運行不正常(建議一并卸載)
RPM管理之升級
-Uvh:升級或安裝 #如果軟件包沒有安裝則安裝;否則,升級
-Fvh:升級 #需要升級的軟件包必須已經安裝 --force: 強制升級 #升級后可能存在版本沖突 注意:內核不應該直接升級,而是安裝,系統允許多內核并存
RPM管理之查詢
命令格式:
rpm [option] package_name
rpm -q package_name:查詢某包是否安裝
rpm -qa:查詢所有已經安裝的包 按條件過濾:rpm -qa | grep 'PATTERN'
rpm -qi package_name:查詢包的描述信息
rpm -ql package_name:查詢某包安裝生成了哪些文件 rpm -qc package_name:查詢某包安裝生成了哪些配置文件 rpm -qd package_name:查詢某包安裝生成了哪些幫助文件
rpm -q --scripts package_name:查詢程序包的相關腳本 #腳本有四類: preinstall:安裝前腳本 postinstall: 安裝后腳本 preuninstall: 卸載前腳本 postuninstall: 卸載后腳本 #
rpm -qf /path/to/some_file:查詢某文件是由哪個包安裝生成的
rpm {-qpi|-qpl|-qpc|-qpd} /path/to/package_file:對尚未安裝的包執行查詢
RPM管理之校驗
命令格式:
rpm [option] package_name
rpm -V package_name:檢查包安裝生成的文件屬性是否發生變化 #校驗已安裝的包的文件與保存在rpm數據庫里的包的元數據,如果相同無任何顯示, #如果不同則顯示改變的地方,下面是每個字符代表的意義: #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 #手動改變httpd的文件
RPM管理之數據庫重建
數據庫目錄:/var/lib/rpm
如果rpm的數據庫損壞,會導致查詢等相關操作無法正常進行,這時就需要重建數據庫。
rpm --initdb:初始化 #如果事先沒有數據庫,會創建一個;如果有,則不創建 rpm --rebuilddb: 重建 #直接重建,覆蓋原有的數據庫
The end
好了,RMP管理就總結到這里,希望對新手有所幫助,以上僅個人學習整理,如有錯漏,大神勿噴~~~
原創文章,作者:書生,如若轉載,請注明出處:http://www.www58058.com/1780
總結的有點有面,看起來也美觀大氣,不錯
很詳細,而且排版看著也很舒服