安裝及移除套件-rpm

20121109 新增補充資訊
20121120 新增指令說明

RPM(Redhat Package Manager)是 Linux 必學的套件管理程式,yum 的運行也是透過 rpm,差別在於 yum 可以自動解決相依性的問題,不必使用者自行尋找安裝套件來源。

RPM相依性的問題非常麻煩,安裝完下面所有的套件後(由下而上),才能安裝套件a,而在yum出現之前,都要使用者自行解決相依性的問題。

rpm 安裝流程有下列 5 個步驟:
1. 檢查數位簽章
2. 進行相依性檢查(檢查失敗中斷安裝)
3. 執行 pre script
4. 解壓縮並複製檔案至指定路徑
5. 執行 post script

安裝


# rpm -ivh xxx.rpm  // 本地安裝
# rpm -ivh http://aaa.bbb.com/xxx.rpm  // 網路安裝

更新


參數 U 和 F 的差別:
下載 pidgin 套件並使用參數 U 和 F 來安裝
參數 F:若 pidgin 原先並未安裝,則該軟體不會安裝,若原先有安裝,就會升級(upgrade)
參數 U:若 pidgin 原先並未安裝,則該軟體會安裝在系統上,若原先有安裝,就會升級(upgrade)
# rpm -Fvh pidgin-2.7.9-5.el6.2.x86_64.rpm  // 無後續安裝步驟
# rpm -Uvh pidgin-2.7.9-5.el6.2.x86_64.rpm  // 執行安裝步驟,但相依性檢查失敗中斷安裝
 error: Failed dependencies:
 libgstfarsight-0.10.so.0()(64bit) is needed by pidgin-2.7.9-5.el6.2.x86_64
 libpurple = 2.7.9-5.el6.2 is needed by pidgin-2.7.9-5.el6.2.x86_64
 libpurple.so.0()(64bit) is needed by pidgin-2.7.9-5.el6.2.x86_64

移除


# rpm -e firefox

GPG(GNU Private Guard)key 數位簽章驗證


安裝(匯入)原廠公開金鑰: # rpm --import ftp://ftp.nsysu.edu.tw/Unix-like/CentOS/6.3/os/x86_64/RPM-GPG-KEY-CentOS-6
使用原廠公開金鑰驗證該網站下載套件的數位簽章 # rpm -K firefox-10.0.10-1.el6.centos.x86_64.rpm
 firefox-10.0.10-1.el6.centos.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
# rpm -K google-chrome-stable_current_x86_64.rpm
 google-chrome-stable_current_x86_64.rpm:(SHA1) DSA sha1 md5 (GPG) NOT OK (MISSING KEYS:
 GPG#7fac5991)  // 用 CentOS 的 key 來驗證 google 的套件


查詢


查詢檔案屬於哪一個已安裝的套件: # rpm -qf /etc/ntp.conf
 ntp-4.2.4p8-2.el6.centos.x86_64

查詢套件資訊: # rpm -qi httpd
查詢所有已安裝的套件: # rpm -qa
# rpm -q httpd

查詢已安裝的套件的所有檔案及路徑: # rpm -ql ntp
 /etc/dhcp/dhclient.d
 /etc/dhcp/dhclient.d/ntp.sh
 /etc/ntp.conf
 ........

查詢套件安裝狀態: # rpm -qs httpd | tail -n4
 normal /var/www/icons/world1.gif  // normal 表示安裝正常
 normal /var/www/icons/world1.png
 normal /var/www/icons/world2.gif
 normal /var/www/icons/world2.png
 ........

查詢套件相依性: # rpm -qR httpd
 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
 rpmlib(VersionedDependencies) <= 3.0.3-1
 rtld(GNU_HASH)
 system-logos >= 7.92.1-1
 rpmlib(PayloadIsXz) <= 5.2-1
 ........

查詢套件安裝或移除腳本(script): # rpm -q --scripts httpd
查詢未安裝套件相關指令: # rpm -qp pidgin
# rpm -qpl pidgin
# rpm -qpR pidgin
# rpm -qpi pidgin
# rpm -q --scripts pidgin
補充:不能與參數 s 同時使用,因為還沒有安裝,不會有安裝時的狀態。

重新安裝套件: # rpm -ivh --replacepkgs vsftpd
補充:此參數也可以解釋為 reinstall,但並不會覆蓋原先的檔案,只是將缺少的檔案再補回去。

驗證


檢查檔案內容是否被更動過: # rpm -Vf /etc/httpd/conf/httpd.conf
 S.5....T. c /etc/httpd/conf/httpd.conf  // 若檔案未遭到改變,就不會出現此行訊息

檢查套件檔案狀態: # rm -rf /etc/vsftpd/vsftpd.conf
# rpm -V vsftpd
 missing c /etc/vsftpd/vsftpd.conf

補充:
S:file Size differs(檔案的容量大小已被改變)
M:Mode differs (includes permissions and file type)(檔案的類型或檔案的屬性 (rwx) 已被改變)
5:MD5 sum differs(加密總合已被改變)
D:Device major/minor number mismatch(裝置的主 / 次代碼已經改變)
L:readLink(2) path mismatch(Link 路徑已被改變)
U:User ownership differs(檔案的所屬人已被改變)
G:Group ownership differs(檔案的所屬群組已被改變)
T:mTime differs(檔案的建立時間已被改變)
P:caPabilities differ

c:%config configuration file.
d:%doc documentation file.
g:%ghost file (i.e. the file contents are not included in the package payload).
l:%license license file.
r:%readme readme file.
資料來源

沒有留言:

張貼留言