一、源代碼管理 絕大多數開源軟體都是直接以源代碼形式發佈的,一般會被打包為 tar.gz 的歸檔壓縮文件。程式源代碼需要編譯為二進位可執行文件後才能夠運行使用。源代碼的基本編譯流程為: 源代碼形式的軟體使用起來較為麻煩,但是相容性和可控性較好。並且開源軟體一般會大量使用其他開源軟體的功能,所以開源軟 ...
一、源代碼管理
絕大多數開源軟體都是直接以源代碼形式發佈的,一般會被打包為 tar.gz 的歸檔壓縮文件。程式源代碼需要編譯為二進位可執行文件後才能夠運行使用。源代碼的基本編譯流程為:
- ./configure:解壓縮後運行該命令,它主要檢查編譯環境、相關庫文件以及配置參數並生成 makefile
- make:對源代碼進行編譯,生成可執行文件
- make install:將生成的可執行文件安裝到電腦中
源代碼形式的軟體使用起來較為麻煩,但是相容性和可控性較好。並且開源軟體一般會大量使用其他開源軟體的功能,所以開源軟體會有大量的依賴關係(使用某軟體需要先安裝其他軟體)。
二、RPM(RPM Package Manager,RPM包管理器)
使用源代碼形式安裝軟體的優點是適用於所有系統、可定製,而缺點則是操作複雜、編譯時間較長、極容易出現錯誤。為了方便使用,Erik Troan 和 Marc Ewing 開發了 RPM(RPM Package Manager,RPM 包管理器),RPM 最早是應用在 RedHat(紅帽)中的。
1. 設計目標
RPM 通過將源代碼基於特定平臺系統編譯為可執行文件,並保存依賴關係,來簡化開源軟體的安裝管理。RPM 的設計目標如下:
- 使用簡單
- 使用單一軟體包格式文件發佈(.rpm 文件)
- 可升級
- 追蹤軟體依賴關係
- 基本信息查詢
- 軟體驗證功能
- 支持多平臺
2. 命名規範
packagename-1.2.0-30.el6.x86_64.rpm
(包名-版本號-操作系統-硬體平臺)
其中,
操作系統:el6 表示 RedHat 6.x 或 CentOS 6.x 操作系統。
硬體平臺:x86_64 表示 64 位平臺,i386 表示 32 位平臺,noarch 表示不需要特定的硬體平臺(跨平臺)。
3. 基本命令
安裝包:
安裝包: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查詢
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驗證
軟體包在傳播的過程中可能會被惡意地修改,所以為了安全起見,現代系統都加入了對軟體包的驗證功能。
驗證一般使用非對稱加密演算法,所以需要一個公鑰。導入公鑰的方法是:
rpm --import /path/to/key_file
驗證未安裝的軟體包:
rpm -K package.rpm
驗證已安裝的軟體包:
rpm -V package
參考鏈接: