rpm是由紅帽公司開發的軟件包管理方式,使用rpm我們可以方便的進行軟件的安裝、查詢、卸載、升級等工作。但是rpm軟件包之間的依賴性問題往往會很繁瑣,尤其是軟件由多個rpm包組成時。
Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。基於RPM包管理,能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關系,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
RPM 有五種基本的操作方式(不包括創建軟件包): 安裝, 卸載, 升級, 查詢,和驗證。
軟件包的組成部分:
二進制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
庫文件:/lib, /usr/lib, /usr/local/lib
配置文件:/etc
幫助文件:手冊, README, INSTALL (/usr/share/doc/)
RPM: RPM is Package Manager
源程序:name-version.tar.{gz|bz2|xz}
版本號:major.minor.release
bash-4.3.1.tar.xz
包名-主版本號-次版本號-發行號
rpm包:name-version-release.arch.rpm(有源程序的rpm包和二進制的rpm包)
Rpm包的發行號(release):跟源程序不同,用於標識rpm包本身的發行號,同時包含所適用的操作系統
el6: rhel6
CentOS6:
el5
suse11
arch: 主機平台
cpu架構:i686、x86_64、amd64、ppc、noarch。。。
bash-4.3.2-5.el6.x86_64.rpm
包名-主版本號.次版本號.源程序發行號-rpm包的發行號.主機平台.cup架構
Rpm包有主包和分包之分
Bind 單個包
bind-devel 主包--分包
rpm包有驗正機制:來源的合法性、軟件包的完整性。必須導入了官方提供的公鑰,才可以驗證。
Linux系統自帶的公鑰一般放在/etc/pki/rpm-gpg/下,後綴為release的就是公鑰,沒有這個公鑰,那個後綴為系統名加版本號的就是公鑰了。
驗證rpm合法性和完整性的命令:
rpm
-K
--checksig 與-K用法相同
--nosignature 不檢測合法性
--nodigest 不檢測完整性
Rpm包的安裝:
rpm -i /PATH/TO/RPM_FILE
-i|--install
-v, -vv, -vvv越多越詳細
-h: 以#顯示安裝進度,一個#表示2%的進度;
-ivh 組合寫法
忽略依賴關系:
--nodeps
測試安裝:
--test
重新安裝:
--replacepkgs
warning: /etc/sysconfig/named created as /etc/sysconfig/named.rpmnew(安裝的時候不會覆蓋,創建了一個新的文件)
卸載:rpm -e 包名
--nodeps
warning: /etc/sysconfig/named saved as /etc/sysconfig/named.rpmsave(刪除時保留副本)
查詢:rpm -q|--query 包名
查詢所有已經安裝包:
rpm -qa
rpm -qa | grep 'pattern'
查詢包的摘要信息:
rpm -qi 包名
查詢包安裝生成的文件清單:
rpm -ql 包名
查詢包安裝生成的配置文件:
rpm -qc 包名
查詢包安裝生成的幫助文檔:
rpm -qd 包名
查詢包相關的腳本:
rpm -q --scripts 包名
查詢文件是哪個包安裝生成的
rpm -qf /path
preinstall: 安裝前腳本
postinstall: 安裝後腳本
preuninstall: 卸載前腳本
postuninstall: 卸載後腳本
查詢尚未安裝的包的相關信息:與查看安裝包信息相似。
rpm -qpi /path/to/rpm_file
-i
-l
-d
-c
--scripts
升級:
-U: 升級+安裝
-F:升級
-Uvh
-Fvh
--force 強制升級
--nodeps 忽略依賴關系
注意:內核不應該升級,應該盡可能安裝,它允許多版本並存;
校驗包的內容是否改變:rpm -V 包名
rpm -K 校驗包的完整性合法性
rpm包的數據庫:
/var/lib/rpm
數據庫重建:
--initdb: 新建
--rebuilddb: 重建
源碼格式的rpm包:
打包過程是根據spec文件來完成的,spec文件打包的時候所依賴的源程序包以及補丁都提供出來,只不過沒有提供二進制格式,我們要做的只是使用命令將源碼格式的rpm包制作成rpm包就可以實現安裝。