RPM是RPM Package Manager(RPM軟件包管理器)的縮寫,這一文件格式名稱雖然打上了RedHat的標誌,可是其原始設計理念是開放式的,如今包括OpenLinux、S.u.S.E.以及Turbo
Linux等Linux的分發版本都有采用,能夠算是公認的行業標準了。
RPM軟件包名例子: sudo-1.7.2p1-5.e15.i386.rpm 其中 軟件名(sudo) 版本號 (1.7.2pl) 軟件發佈的次數(5) 適合的Linux平臺 (el5) 適合的硬件平臺(i386) rpm包擴展名(rpm)
RPM包在應用的時候,最大的問題就是依賴性,安裝一個軟件包須要安裝多個依賴包。 樹形依賴:a->b->c 安裝a,須要先安裝b,安裝b須要先安裝c 安裝:咱們要先安裝c,再安裝b,再安裝a。 卸載:先卸載a,再卸載b,而後卸載c。 環形依賴:a->b->c->a 安裝:一條命令安裝a,b,c。 模塊依賴:模塊依賴查詢網站:www.rpmfind.net 模塊依賴又稱爲庫依賴,指依賴的是某個包裏面的某個軟件,固然只須要安裝那個包就行,那麼咱們怎麼知道這個軟件屬於哪一個包,上面這個網站能夠查詢。
包全名:操做的包是沒有安裝的軟件包時,使用包全名。並且要注意路徑。 全名:操做已經安裝的軟件包時,使用包名。是搜索/var/lib/rpm中的數據庫。
在下面全部操做前咱們先把光盤掛載上去node
掛載光盤: mkdir /mnt/cdrom mount /dev/cdrom /mnt/cdrom
rpm -ivh 包全名 安裝的rpm軟件包主要參數 -i 或--install 安裝軟件包 -v 顯示安裝過程的信息 -vv 顯示安裝過程當中的詳細信息 -h 以#號來表示程序包的執行進度 安裝升級卸載中會用到的一些參數 --test:測試安裝,只顯示過程,並不執行安裝
--excludedocs:不安裝軟件包中的文檔文件。
--prefix PATH:將軟件包安裝到由PATH指定的路徑下。 -- nodeps:忽略依賴關係,在安裝程序的時,有些時候會由於軟件包的依賴關係沒法安裝,這時就能夠用nodeps來解決。 -- replacepkgs:覆蓋安裝軟件 -- replacefiles:只覆蓋軟件的文件 -- nosignature: 不檢查軟件包來源合法性 -- nodigest:不檢查軟件包的完整性 -- noscripts:不執行程序包腳本,在軟件包中一般都有一些腳本,來定義一些像安裝的路徑之類的。 -- nopre:不執行安裝前腳本 -- nopost:不執行安裝後腳本 -- nopreun:不執行卸載前腳本 -- nopostun:不執行卸載後腳本 -- force: 強制安裝
例子python
rpm -ivh sudo-1.7.2p1-5.el5.i386.rpm
安裝時的特殊狀況數據庫
覆蓋安裝 軟件包已經被安裝,若是覆蓋該1安裝軟件包,能夠在命令行上使用--replacepkgs選項 rpm -ivh --replacepkgs sudo-1.7.2p1-5.el5.i386.rpm 文件衝突 若是要安裝軟件包中有一個文件已在安裝其它軟件包時安裝,會出現如下錯誤信息 要想讓rmp忽略該錯誤信息,請使用--replacefiles命令行選項 rpm -ivh --replacefiles sudo-1.7.2p1-5.el5.i386.rpm 未解決依賴關係 RPM軟件包可能依賴於其它軟件包,在安裝了特定包以後才能安裝該軟件包 rpm -ivh sudo-1.7.2pl-5el5.i386.rpm failed dependencies sudo is needed by bark-3.2-11 必須安裝完所依賴的軟件包。才能解決這個問題,強制安裝使用--nodeps選項
-e或者--erase來卸載 rpm -e sudo-1.7.2p1-5.el5.i386.rpm 注意:若是其它軟件包有依賴關係,卸載時會產生提示信息,可以使用--nodeps強行卸載。
-U 或 --upgrade 安裝有舊版程序包,則升級若是不存在舊版程序包,則安裝 -F 或 --freshen安裝的有舊版程序包則升級,若是不存在舊版程序包,則不執行升級操做 -- oldpackage:安裝舊版本的軟件包,把軟件降級 注:若是舊程序的配置文件安裝後曾被修改,升級時新版本的提供的同一個配置文件並不會直接覆蓋老版本的配置文件,而把新版本的文件重命名「filename.rpmnew」後保留。
查詢: rpm -q 包名 例子:rpm -q sudo 例子:rpm -qa | grep samba
q選項能夠查詢rpm軟件包的信息 下面是q選項的一些參數 -a: 全部包,能夠用來查詢軟件來自那個rpm包 -f: 查看指定的文件由哪一個程序包安裝生成 -p:針對還沒有安裝的程序包文件作查詢操做 -- whatprovides CAPABILITY:查詢指定的CAPABILITY由哪一個包所提供 -- whatrequires CAPABILITY:查詢指定的CAPABILITY被 哪一個包所依賴 --changelog:查詢rpm包的更新信息 -c: 查詢程序的配置文件 -d: 查詢程序的文檔 -i: information -l: 查看指定的程序包安裝後生成的全部文件 --scripts:程序包自帶的腳本 --provides: 列出指定程序包所提供的CAPABILITY -R: 查詢指定的程序包所依賴的CAPABILITY
rpm -V或--verify 能夠驗證軟件包文件有沒有被修改過 S 文件大小不一樣 M 權限和文件類型和原文件不一致 5 MD5不一致 D 設備主/次編號不匹配 L 路徑不匹配 U 屬主不一樣 G 所屬組不一致 T 修改時間不一樣 P 功能不一樣 rpm - K或checksig 檢查包的完整性和簽名 上面的問題不是軟件包有問題,而是系統默認沒有導入密鑰,因此檢查結果是not ok。下面咱們導入密鑰,在系統安裝是安裝程序會把密鑰放在/etc/pkirpm-gpg/目錄下,密鑰的文件名是RPM-GPG-KEY-CentOS-7。 文件類型: c 配置文件(config file) d 普通文件 (documenttation) g "鬼文件"(ghost file),不多見,就是該文件不該該被這個RPM包包含 l 受權文件(license file) r 描述文件 (read me)