Linux學習之RPM包管理-rpm命令管理(十六)

 

Linux學習之RPM包管理-rpm命令管理

 

目錄

簡介

RPM包依賴性

包全名與包名

rpm軟件包安裝

rpm軟件包卸載

升級降級rpm軟件包

rpm軟件包的查詢

rpm軟件包校驗

 

 

 

簡介

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包依賴性

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軟件包安裝

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選項

  

 

 rpm軟件包卸載

-e或者--erase來卸載
rpm -e sudo-1.7.2p1-5.el5.i386.rpm
注意:若是其它軟件包有依賴關係,卸載時會產生提示信息,可以使用--nodeps強行卸載。

  

 

 

升級降級rpm軟件包

-U 或 --upgrade 安裝有舊版程序包,則升級若是不存在舊版程序包,則安裝
-F 或 --freshen安裝的有舊版程序包則升級,若是不存在舊版程序包,則不執行升級操做

-- oldpackage:安裝舊版本的軟件包,把軟件降級

注:若是舊程序的配置文件安裝後曾被修改,升級時新版本的提供的同一個配置文件並不會直接覆蓋老版本的配置文件,而把新版本的文件重命名「filename.rpmnew」後保留。

  

 

 

rpm軟件包的查詢

查詢:
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軟件包校驗

 

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)
相關文章
相關標籤/搜索