AIX程序包原理及linux RPM包
一. AIX程序包原理
1. 原理
2. 文件集(fileset)命名規則
Fileset這種命名格式基本上描述了此文件集的內容和層次關係,方便管理員查看和管理
3. 文件集(fileset)的版本號
Version和Release版本號的升級是需要購買,而後面兩個版本號的升級可以到IBM網址免費下載;每個fileset都有各自的版本號,操作系統也有它的版本號
4. 軟件包的兩種安裝狀態Applied和 Committed
- 舊版本的軟件升級後處於 applied狀態,系統使用的是新的版本,舊的版本並沒有被刪除
- 執行commit動作後,舊的版本被刪除,軟件包就處於committed狀態了;執行reject動作,新的版本被刪除,系統仍用舊的版本
- 軟件包的升級,爲了應用安全運行,先讓新軟件包處於applied狀態試運行一陣後再commit;如果安裝一個新的軟件包,就直接committed
二. linux RPM包
1. 介紹
- RPM是RedHat Package Manager(RedHat軟件包管理工具)的縮寫
- 這一文件格式名稱雖然打上了RedHat的標誌,但是其原始設計理念是開放式的,現在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分發版本都有采用,可以算是公認的行業標準了
- 一個RPM包文件是能夠讓應用軟件運行的全部文件的一個集合,它記錄了二進制軟件的內容、安裝的位置、軟件包的描述信息、軟件包之間的依賴關係等信息
2. RPM的體系結構
3. 基本命令
3.1. rpm的安裝、升級、刷新
```
基本語法:
rpm -i package-filename.rpm (install)
rpm -F package-filename.rpm (freshen)
rpm -U package-filename.rpm (upgrade)
選項:
-v 表示可以輸出詳細信息
-h 在安裝過程中打印50個“#”符號,表示安裝進度
```
例如:安裝軟件包package-10.2-67.i386.rpm
# rpm -ihv package-10.2-67.i386.rpm
package: ########################################
3.2. rpm包的刪除
```
基本語法:
rpm -e package-filename
選項:
--nodeps 忽略包的依賴提示
```
例如:刪除包 kdelibs3
如果使用以下命令將忽略包的依賴提示
#rpm -e --nodeps kdelibs3
3.3. rpm的查詢
查詢已安裝RPM的內容:
基本語法:
rpm -q package-name
選項:
-q 一個包是否被安裝
-a 查詢所有安裝的RPM
-f <file> 查詢擁有某文件的RPM
-p <package-file> 查詢包文件
-i 顯示包的信息
-l 信息包文件的信息
-s 顯示所有文件的狀態
-d 顯示文檔文件
-c 顯示配置文件
3.4. rpm的校驗
- RPM的校驗功能可以用來確認文件是否被修改或覆蓋
基本語法:
#rpm -V package_name_to_verify
參數:
-V 檢查與某一RPM包相關所有文件的完整性
例子1:檢查sendmail的相關文件的完整性
#rpm -V sendmail
S.5....T c /etc/aliases
missing /etc/mail/ip_allow
S.5....T c /etc/mail/relay_allow
S.5....T c /etc/sendmail.cf
S.5....T c /etc/sendmail.cw
S.5....T /usr/sbin/sendmail
S.5....T /var/log/sendmail.st
解釋:只有校驗失敗的文件才被列出,沒有列出的文件應該是完好無損的。輸出的內容給出了爲什 麼校驗失敗的原因,具體解釋如下:
- S = 大小改變
- M = 權限改變
- L = 連接改變
- D = 設備改變
- U = 用戶改變
- G = 組改變
- T = 日期和時間改變
- missing = 文件丟失
例子2:挨個檢查軟件包很費時間,用“-a”選項可以一次性檢查所有RPM包
#rpm -Va > /root/rpm_chk.txt &
- 這條命令讓RPM檢查服務器上安裝的RPM包,結果輸出到rpm_chk.txt文件,最後的可選項“&”表示命令在後臺運行,給出shell提示符可以作其他事情
例子3:檢查某個文件而不知道它屬於哪個RPM包,可以用“-qf”選 項查看哪個軟件包安裝了此文件
# rpm -qf /usr/sbin/sendmail
sendmail-8.8.7-20
如果一個文件沒有關聯 的RPM包
# rpm -qf /sbin/.vile_stuff
file /sbin/.vile_stuff is not owned by any package