第五部分 linux 軟件安裝RPM SRPM與YUM

第五部分  linux  軟件安裝RPM    SRPM與YUMnode

 
軟件管理員簡介
RPM與DPKG兩大主流
rpm: redhat       centos     suse    命令:yum
redhat package manager 將軟件先編譯   再打包成rpm機制
包中記錄的安裝的時候必須具有的相依賴屬性   當安裝時候    rpm會先依照軟件裏的資料查詢linux主機的相依賴屬性軟件是否知足    若是知足則安裝   若是不知足  則不安裝     。
1. rpm軟件管理存在的問題
軟件安裝環境必須與打包時候的環境要求一致或至關
須要知足軟件的相依賴屬性
卸載時,底層的軟件不能夠先卸載 不然會形成整個系統的問題
2. 若是須要其餘發行版的rpm軟件   則須要srpm這個文件   source rpm的意思   即就是這個RPM文件裏面包含未通過編譯的原始代碼   
仍然包含該關鍵須要的相依性說明以及全部rpm文件提供的資料    
與rpm不一樣的地方:提供了參數設置文件   也就是configure   與makefile
一般此文件的擴展文件名是***.src.rpm
安裝此文件時  須要
先將該軟件以RPM管理的方式編譯   此時SRPM會被編譯成爲RPM文件
再將編譯完成的RPM文件安裝到linux系統當中
因此就能夠經過修改srpm內的參數配置文件 而後從新編譯生成能適合咱們linux環境的rpm文件
 
3.rpm在打包軟件的時候,同時加入一些信息登錄的功能,這些信息包括軟件的版本,做者,依賴關係,軟件功能說明,軟件的全部文件記錄等等,而後在linux系統上面也創建一個rpm軟件資料庫,當安裝的時候,rpm會檢驗一下資料庫裏面是否已經存在相關的軟件了。
4.克服依賴關係 能夠用yum線上安裝的方式
原理:在rpm包內會有記錄相依賴關係的文件,在安裝此軟件的時候 與系統內已經安裝的軟件相比較,沒有安裝的相依賴軟件一同安裝,就會解決相依賴關係的問題 此種機制就是YUM
centos 1 將軟件放在yum服務器上
2.分析這些軟件的依賴關係 造成軟件依賴的清單列表 這些信息與軟件所在的本機或網絡位置稱爲容器或者軟件倉庫
3.客戶端有安裝的需求時,用戶端主動的向yum服務器下載依賴的清單列表,而後經過此表與本機的rpm數據庫 已存在的軟件比較,就可以一塊兒安裝須要的相依賴的軟件了

 

默認清單會更新到本地的/var/cache/yum裏面   利用此清單與本地的rpm數據庫進行比較    這樣就知道應該安裝什麼
而後yum會在yum server下載全部須要的軟件 (由於清單裏面含有詳細的地址),而後再經過rpm機制安裝下載下來的軟件。
yum服務器提供的軟件內容差別:
原版文件           更新的文件      特殊的文件(例如第三方軟件)這三類不一樣的軟件須要軟件庫的概念來處理    不一樣類型的軟件放在不一樣的位置。

  dpkg: b2d ubuntu 命令:apt-getlinux

 
rpm軟件管理程序:rpm
軟件安裝完畢後
相關信息會寫到/var/lib/rpm/目錄下面的數據庫文件中,此文件比較重要,比較版本和查詢都須要此文件
安裝軟件的相關目錄
/etc 配置文件
/usr/bin 可執行文件
/usr/lib 動態函數庫
/usr/share/doc 軟件使用手冊與說明
/usr/share/man man page文件
 
1.rpm安裝   install
root身份   
rpm -ivh  /mnt/packages/****.rpm
-i install
-v verbose  詳細
-h 顯示安裝進度
光盤:
rpm -ivh /mnt/Packages/rp***.rpm
安裝多個軟件
rpm -ivh a.rpm   b.rpm   *.rpm
網絡安裝
rpm -ivh http://website.name/pkgname.rpm
 
能夠利用參數強制安裝
--nodeps 不考慮依賴
--replacefiles 覆蓋安裝  當出現已安裝或者版本不合適     沒法還原
--replacepkgs 重複安裝  只適合已經安裝過的軟件
--force 是上面兩個的綜合   
--test 嘗試安裝  測試軟件是否有依賴關係的問題
--justdb rpm數據庫出現錯誤時   利用此參數來更新數據庫中的相關信息
--nosignature 忽略數字簽名
--prefix 新路徑 將軟件安裝到其餘的非正規目錄   安裝到/usr/local   或者其餘的目錄   而非/bin  /etc等
--noscripts 不讓改軟件在安裝過程當中 自動執行某些系統腳本命令
 
舉例:光盤安裝
掛載: mount /dev/sr0 /mnt
找文件的實際路徑: find /mnt -name 'pam-devel*'
測試相依性: rpm -ivh pam-devel...  --test
直接安裝: rpm  -ivh pam-devel...
卸載光盤: umount  /mnt
2.RPM升級與更新
-Uvh 軟件未安裝過   則直接安裝    ;若是是舊版   則自動更新到新版
-Fvh 若是未安裝過   則不會安裝   也就是隻有安裝過的軟件纔會被升級
儘可能使用Fvh   避免不須要的軟件被安裝進系統
3.RPM 查詢 query
查詢的數據庫文件爲/var/lib/rpm/這個目錄下的文件    rpm也能夠查詢未安裝的rpm文件內的信息   
-qa 已經安裝的軟件
-q[licdR]已安裝的軟件的名稱
-qf 存在於系統上面的某個文件名
-qp[licdR]未安裝的某個文件的名稱    
q後面跟的參數
a 列出全部 all
i 詳細信息 information
l 全部文件與目錄所在的完整文件名 list
c 列出配置文件 config
d 列出說明 description
R 相依賴軟件的有關文件 required
f 後面接的文件名稱  找出該文件屬於哪個已經安裝的軟件
--scripts 列出是否有安裝後須要執行的腳本文件,能夠用debug
-qp 找出某個未安裝的軟件的信息   packages   這裏須要加上完整的文件名    版本號等
範例:
rpm -q logrotate   
rpm -ql logrotate  列出屬於該軟件提供的全部目錄與文件   能夠用於追蹤
rpm -qR logrotate   若是成功安裝軟件  還須要什麼文件的幫忙
rpm -qpR  filename.i386.rpm   找出該文件需求的文件
 
RPM驗證與數字簽名    verify/signature    側重於安全方面
使用/var/lib/rpm下面的rpm數據庫來比對目前linux系統的環境下的軟件,當不當心遺失文件時或錯誤修改文件時,能夠用此方法來驗證原來的文件系統,瞭解修改哪些文件了
語法:
rpm -Va   列出全部可能更動過的文件
rpm -V 已經安裝的軟件名稱   該軟件包含的文件被更動過  纔會列出來
rpm -Vp 某個RPM文件的文件名
rpm -Vf  在系統上面的某個文件  某個文件是否被更動過
範例
rpm -V logrotate
軟件是否被更動過
rpm -Vf /etc/crontab 查詢一下此文件是否被更動過
查詢更動過的內容
rpm -V logrotate
出現 ..5....T.  c  /etc/logrotate.conf
c 表明的是configuration
S 文件的容量大小
M   文件的類型或屬性
5 MD5這個指紋碼的內容不一樣
T 文件的創建的時間
........
因此上面例子中的 md5值和創建的時間已經改變了
SM5DLUGTP      c     filename    對應的位置
例子中的c   表明配置文件
d 數據文件
g ghost file    
l license file 受權文件
r read me  讀我文件
 
數字簽名   GNU的gpg   簽名系統
先安裝廠商提供的公鑰文件
再安裝rpm軟件的時候,rpm指令會去讀取RPM文件的數字簽名   與本機的簽名比對
若是相同則安裝     不然不安裝
cat /etc/pki/rpm-gpg/RPM-GPG-KEY-cENTos-7
內容爲亂數
安裝公鑰系統軟件
安裝方式:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-Centos-7   
尋找此文件的命令:locate GPG-KEY
或者
find /etc -name '*GPG-KEY*'
查看某軟件的公鑰文件
rpm-qa | grep pubkey
rpm -qi gpg-pubkey-f4a8.......
出現的內容就是廠商提供的公鑰信息
 
RPM反安裝與重建數據庫(erase/rebuilddb)
卸載的過程必須由上層忘下層卸載   先拆第6層樓   再拆第5層  最後到地基
語法:
rpm -e pam
卸載   安裝  升級過程當中可能會致使rpm數據庫被破壞   能夠利用--rebuilddb選項來重建rpm數據庫
命令:rpm  --rebuilddb
yum線上升級機制
 
yum查詢、安裝、升級與刪除功能
查詢
yum  [list|info|search|provides|whatprovides]
yum [option][查詢工做項目][相關參數]
 
-y yes   去掉交互
--installroot=/some/path    將軟件安裝到後面的額路徑  而不是默認的路徑
search 搜尋某個軟件名稱或者是秒數的重要關鍵字
list 相似於rpm -qa    列出目前yum 所管理的全部軟件名稱與版本
info 相似rpm -qai
provides 根據文件去搜索軟件    查詢是哪一個軟件提供的     頗有用
相關文章
相關標籤/搜索