絕大多數開源軟件都是直接以源代碼形式發佈的,通常會被打包爲 tar.gz 的歸檔壓縮文件。程序源代碼須要編譯爲二進制可執行文件後纔可以運行使用。源代碼的基本編譯流程爲:html
源代碼形式的軟件使用起來較爲麻煩,可是兼容性和可控性較好。而且開源軟件通常會大量使用其餘開源軟件的功能,因此開源軟件會有大量的依賴關係(使用某軟件須要先安裝其餘軟件)。算法
使用源代碼形式安裝軟件的優勢是適用於全部系統、可定製,而缺點則是操做複雜、編譯時間較長、極容易出現錯誤。爲了方便使用,Erik Troan 和 Marc Ewing 開發了 RPM(RPM Package Manager,RPM 包管理器),RPM 最先是應用在 RedHat(紅帽)中的。安全
RPM 經過將源代碼基於特定平臺系統編譯爲可執行文件,並保存依賴關係,來簡化開源軟件的安裝管理。RPM 的設計目標以下:bash
packagename-1.2.0-30.el6.x86_64.rpmdom
(包名-版本號-操做系統-硬件平臺)加密
其中,spa
操做系統:el6 表示 RedHat 6.x 或 CentOS 6.x 操做系統。操作系統
硬件平臺:x86_64 表示 64 位平臺,i386 表示 32 位平臺,noarch 表示不須要特定的硬件平臺(跨平臺)。設計
安裝包:code
安裝包:rpm -i packagename.rpm
卸載包:
rpm -e packagename
升級包:
rpm -U packagename-new.rpm
經過 http、ftp 協議安裝:
rpm - ivh http://www.domainname.com/packagename.rpm
經常使用參數:
-v 顯示詳細信息 -h 顯示進度條 -i 安裝包 -e 卸載包 -U 更新(升級)包 -q 查詢 -a 查詢全部已安裝包 -i 顯示包信息 -h 取hash(哈希) -f 查詢文件屬於哪一個包 -p 未安裝包的信息 -l 列出包裏的文件
rpm -qa 列出已安裝的全部rpm包 rpm -qa | grep '.*gnome.*' 列出全部名稱含有gnome的包 rpm -qf filename 查詢目標文件屬於哪一個包 rpm -qi package 獲取一個已安裝包的相關信息 rpm -qip package.rpm 獲取一個未安裝包的相關信息 rpm -ql package 獲取一個已安裝包內的文件列表 rpm -qlp package.rpm 列出一個未安裝包內的文件列表
軟件包在傳播的過程當中可能會被惡意地修改,因此爲了安全起見,現代系統都加入了對軟件包的驗證功能。
驗證通常使用非對稱加密算法,因此須要一個公鑰。導入公鑰的方法是:
rpm --import /path/to/key_file
驗證未安裝的軟件包:
rpm -K package.rpm
驗證已安裝的軟件包:
rpm -V package
參考連接: