rpm早期是由redhat公司開發用來管理軟件安裝的機制,它以數據庫的方式來記錄用戶所需要安裝
的軟件。由於軟件安裝通常會存在依賴屬性,比如:如果我們需要安裝A軟件,可能需要安裝軟件B或C
後才允許安裝A,或者安裝B有需要A,所以我們就需要將存在依賴關係的軟件同時安裝。而rpm解決了
這一問題,他將我們說需要的軟件打包成*.rpm,同時它還具有在線升級功能。
rpm包的安裝環境必須和打包環境一樣,還必須滿足軟件的依賴性,還有很重要的一點:某一軟件
的rpm包可能因爲打包者不同,會忽略軟件中我們可能需要用到的功能,所以很多時候就需要我們手動
去編譯SRPM(軟件源代碼)。通常沒用經過編譯的SRPM文件的後綴名是.src.rpm,它與rpm包的不同點
就是不能直接安裝,可以自己修改參數並編譯。
1.rpm包的命名格式:
eg:zsh-4.3.10-7.el6.x86_64.rpm
zsh表示軟件名 4.3.7 表示軟件的版本信息 10表示修正的版本號
x86_64表示適用的硬件平臺 .rpm文件擴展名
2.rpm的默認安裝路徑:/etc 設置文件存放目錄
/usr/bin 可執行文件
/usr/lib 供程序使用的動態函數庫
/usr/share/doc 軟件的基本使用手冊和幫助文檔
/usr/share/man man page文件
3.rpm包的安裝 rpm -ivh package_name...(可以同時安裝多個rpm包)
**-i表示安裝,可以單獨使用; v表示詳細的安裝信息;h表示顯示軟件的安裝進度**
還可以用連網安裝 rpm -ivh http://website.name/path/pkgname.rpm
在安裝的過程需要用到的執行參數有
--nodeps --replacefiles --replacepkgs --test --force --prefix --noscripts
--nodeps:若因依賴關係無法安裝使用此參數可強制安裝,但是可能會因依賴關係而導致
軟件無法正常使用
--replacefiles:可以直接覆蓋以存在系統上的文件或是忽視版本衝突,但是被覆蓋的文件
會無法恢復
--replacepkgs:將安裝了的軟件重新安裝
--force:--replacefiles + --replacepkgs
--test:測試軟件是否可以I安裝
--profix :將軟件安裝在自己指定的目錄下 (eg:--profix/home/user1)
--noscripts:禁止軟件在安裝的過程中自動執行某些系統命令
4.RPM的升級與更新 rpm -Uvh|Fvh 軟件名
-Uvh 若軟件沒有在系統上安裝,則直接安裝;若已安裝且不是最新版則更新
-Fvh 若軟件沒有在系統上安裝則不安裝;若已安裝但不是最新版則更新
5.RPM查詢
參看某軟件書否安裝 rpm -q gcc
列出本機上安裝的所有軟件 rpm -qa 軟件名
參看某軟件的設備文件 rpm -qc gcc
列出軟件的所有文件和目錄 rpm -ql zlib
參看文件是由哪個程序產生的 rpm -qf /路徑/完整的文件名
列出軟件的詳細信息 rpm -qi zlib
其他查看參數:-qr -qd
**-qp[icblr]:中括號的參數和上面的一樣,但是僅用於找出RPM文件內的信息**
RPM的驗證:
rpm -V zlib: 查看zlib的文件是否被改過
rpm -Va 軟件名 : 列出系統上所有被改過的文件
rpm -Vf /路徑: 查看文件是否被改動過(改動後會有信息顯示)
rpm -Vp 某個rpm文件的文件名:列出軟件能被噶懂富哦的文件
6.RPM合法性檢驗:將製作者的公鑰導入到系統
導入公鑰:rpm --import /path/to/key_file
顯示所有已經導入的gpg格式的公鑰:# rpm -qa gpg-pubkey*
顯示密鑰的詳細信息:# rpm -qi gpg-pubkey-NAME
檢查包:安裝過程中會自動執行
手動檢查:
rpm -K /path/to/package_file
rpm --checksig /path/to/package_file
不檢查包完整性 rpm -K --nodigest
不檢查來源合法性:rpm -K --nosignature
7. 重建數據庫與RPM的卸載
卸載 rpm -e 軟件名
**我們也可以添加上面提到過的--nodeps來強制刪除
數據庫的所在的路徑:/etc.lib/rpm
重建數據庫:
如果沒有則新建,否則不建:rpm --initdb
直接覆蓋原有數據庫,沒有則新建:rpm --rebuilddb