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