第五部分 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 根據文件去搜索軟件 查詢是哪一個軟件提供的 頗有用