RPM包管理
一、RPM包的安裝
用法:
[root@localhost ~]#rpm –ivh package_name
參數:
-i:安裝
-v:查看詳細安裝信息
-h:顯示安裝進度
例:安裝bind
[root@localhost~]# rpm -ivh bind-9.8.2-0.10.rc1.el6.i686.rpm
如果一次安裝多個文件,則:
[root@localhost~]# rpm -ivh filename-a.rpm filename-b.rpm
直接安裝網絡上的RPM包:
[root@localhost~]# rpm -ivh http://website/path/pkgname.rpm
選項:
--nodeps:不考慮軟件依賴性,強行安裝
--replacefiles:覆蓋已存在文件
--replacepkgs:重新安裝
--force:強制安裝
--test:找出依賴性
--justdb:由於RPM數據庫損壞時,可使用該參數更新軟件在數據庫內的信息
--nosignature:略過數字證書的檢查
--prefix新路徑:安裝到指定路徑
--noscripts:軟件安裝過程中不自動執行某些命令
二、RPM升級和更新
用法:
[root@localhost ~]# rpm –Uvh | Fvhpkgname.rpm
參數:
-Uvh:後跟的軟件如果沒有安裝過,則直接安裝;如果已安裝,則更新至最新版本
-Fvh:後跟的軟件如果沒有安裝過,則不予安裝;如果已安裝,則更新至最新版本
三、RPM查詢
用法:
[root@localhost ~]# rpm –q[licdR] [已安裝軟件|未安裝軟件]
參數:
-q:僅查詢,查詢後接軟件名是否已安裝
-qa:列出所有已安裝在本機上的軟件
-qi:列出軟件的詳細信息
-ql:列出該軟件所有的文件與目錄所在完整路徑名
-qc:列出該軟件的所有配置文件(/etc下的文件)
-qd:列出該軟件的所有幫助文件(與man有關的文件)
-qR:列出與該軟件有關的依賴包所含的文件
-qf:後接文件名找出該文件屬於哪一個已安裝的軟件
-qp[licdR]:找出某個RPM文件內的信息,而非已安裝的軟件信息
注意:所有參數前加上-q纔是查詢。查詢分兩部分:一是查詢已安裝軟件的信息,該信息由/var/lib/rpm提供;二是查詢未安裝軟件將要寫入/var/lib/rpm的信息。
例:查詢軟件是否已安裝
[root@localhost~]# rpm -q logrotate logrotate-3.7.8-15.el6.i686
查詢上面軟件所提供的目錄和文件
[root@localhost~]# rpm -ql logrotate /etc/cron.daily/logrotate /etc/logrotate.conf /etc/logrotate.d /usr/sbin/logrotate /usr/share/doc/logrotate-3.7.8 /usr/share/doc/logrotate-3.7.8/CHANGES /usr/share/doc/logrotate-3.7.8/COPYING /usr/share/man/man5/logrotate.conf.5.gz /usr/share/man/man8/logrotate.8.gz /var/lib/logrotate.status
列出logrotate的說明信息
[root@localhost~]# rpm -qi logrotate
找出logrotate的配置文件
[root@localhost~]# rpm -qc logrotate /etc/logrotate.conf /var/lib/logrotate.status
找出logrotate的幫助文件
[root@localhost~]# rpm -qd logrotate /usr/share/doc/logrotate-3.7.8/CHANGES /usr/share/doc/logrotate-3.7.8/COPYING /usr/share/man/man5/logrotate.conf.5.gz /usr/share/man/man8/logrotate.8.gz
安裝logrotate所需的依賴包
[root@localhost~]# rpm -qR logrotate
四、RPM驗證與數字證書
驗證
通過使用/var/lib/rpm下數據庫的內容與當前linux系統下的軟件對比,來驗證是否有文件被修改
用法:
[root@localhost ~]#rpm –V[apf] 已安裝軟件|未安裝軟件
參數:
-V:後跟軟件名,若該軟件下文件被改動過,則顯示出來
-Va:列出目前系統上所有被改動過的文件
-Vp:後跟軟件名,列出該軟件可能被改動過的文件
-Vf:列出某個文件是否被改動過
例:查詢文件/etc/crontab是否被改動過
[root@localhost~]# rpm -Vf /etc/crontab
無顯示則表明沒被改動過
查詢軟件logrotate是否被改動過
[root@localhost~]# rpm -V logrotate
修改logrotate的配置文件/etc/logrotate中的rotate爲5後
[root@localhost~]# rpm -V logrotate ..5....T. c /etc/logrotate.conf
前面8個信息:
S:文件的容量大小是否被改變
M:文件的類型或屬性(rwx)是否被改變
5:MD5是否改變
D:設備的主次代碼是否改變
L:Link路徑是否已改變
U:文件的所有者已改變
G:文件的屬組已改變
T:文件的創建時間被改變
後面的c表示Configfile,即文件類型,文件類型有以下幾類:
c:配置文件
d:文檔
g:ghost文件,該文件不被某軟件所包含
l:授權文件
r:自述文件
數字證書
作用:爲防止用戶安裝的軟件遭到篡改,軟件廠家會有一個自己的證書體系,並針對軟件產生一個專屬與該軟件的公鑰,在安裝原廠軟件時,rpm命令會讀取RPM文件的證書信息,與本機系統內的證書信息比較,若證書相同,則安裝;若不同,則警告並停止安裝
安裝數字證書
1.先找到密鑰文件
[root@localhost~]# find /etc -name '*GPG-KEY*' /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Testing-6 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Security-6 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-Debug-6
2.安裝
[root@localhost~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
3.查看公鑰信息
[root@localhost~]# rpm -qa | grep pubkey gpg-pubkey-c105b9de-4e0fd3a3 [root@localhost~]# rpm -qi gpg-pubkey-c105b9de-4e0fd3a3 Name : gpg-pubkey Relocations: (notrelocatable) Version : c105b9de Vendor: (none) Release : 4e0fd3a3 Build Date: Fri 03 Oct2014 08:16:45 PM PDT Install Date: Fri03 Oct 2014 08:16:45 PM PDT Build Host: localhost Group : Public Keys Source RPM: (none) Size : 0 License: pubkey Signature : (none) Summary : gpg(CentOS-6 Key (CentOS 6 OfficialSigning Key) <[email protected]>) Description : -----BEGIN PGPPUBLIC KEY BLOCK----- Version: rpm-4.8.0(NSS-3) mQINBE4P06MBEACqn48FZgYkG2QrtUAVDV58H6LpDYEcTcv4CIFSkgs6dJ9TavCW NyPBZRpM2R+Rg5eVqlborp7TmktBP/sSsxc8eJ+3P2aQWSWc5ol74Y0OznJUCrBr bIdypJllsD9Fe+h7gLBXTh3vdBEWr2lR+xA+Oou8UlO2gFbVFQqMafUgU1s0vqaE /hHH0TzwD0/tJ6eqIbHwVR/Bu6kHFK4PwePovhfvyYD9Y+C0vOYd5Ict2vbLHz1f QBDZObv4M6KN3j7nzme47hKtdMd+LwFqxM5cXfM6b5doDulWPmuGV78VoX6OR7el x1tlfpuiFeuXYnImm5nTawArcQ1UkXUSYcTUKShJebRDLR3BycxR39Q9jtbOQ29R FumHginovEhdUcinRr22eRXgcmzpR00zFIWoFCwHh/OCtG14nFhefuZ8Z80qbVhW 2J9+/O4tksv9HtQBmQNOK5S8C4HNF2M8AfOWNTr8esFSDc0YA5/cxzdfOOtWam/w lBpNcUUSSgddRsBwijPuWhVA3NmA/uQlJtAo4Ji5vo8cj5MTPG3+U+rfNqRxu1Yc ioXRo4LzggPscaTZX6V24n0fzw0J2k7TT4sX007k+7YXwEMqmHpcMYbDNzdCzUer Zilh5hihJwvGfdi234W3GofttoO+jaAZjic7a3p6cO1ICMgfVqrbZCUQVQARAQAB tEZDZW50T1MtNiBLZXkgKENlbnRPUyA2IE9mZmljaWFsIFNpZ25pbmcgS2V5KSA8 Y2VudG9zLTYta2V5QGNlbnRvcy5vcmc+iQI8BBMBAgAmBQJOD9OjAhsDBQkSzAMA BgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQCUb8osEFud6ajRAAnb6d+w6Y/v/d MSy7UEy4rNquArix8xhqBwwjoGXpa37OqTvvcJrftZ1XgtzmTbkqXc+9EFch0C+w ST10f+H0SPTUGuPwqLkg27snUkDAv1B8laub+l2L9erzCaRriH8MnFyxt5v1rqWA mVlRymzgXK+EQDr+XOgMm1CvxVY3OwdjdoHNox4TdVQWlZl83xdLXBxkd5IRciNm sg5fJAzAMeg8YsoDee3m4khg9gEm+/Rj5io8Gfk0nhQpgGGeS1HEXl5jzTb44zQW qudkfcLEdUMOECbu7IC5Z1wrcj559qcp9C94IwQQO+LxLwg4kHffvZjCaOXDRiya h8KGsEDuiqwjU9HgGq9fa0Ceo3OyUazUi+WnOxBLVIQ8cUZJJ2Ia5PDnEsz59kCp JmBZaYPxUEteMtG3yDTa8c8jUnJtMPpkwpSkeMBeNr/rEH4YcBoxuFjppHzQpJ7G hZRbOfY8w97TgJbfDElwTX0/xX9ypsmBezgGoOvOkzP9iCy9YUBc9q/SNnflRWPO sMVrjec0vc6ffthu2xBdigBXhL7x2bphWzTXf2T067k+JOdoh5EGney6LhQzcp8m YCTENStCR+L/5XwrvNgRBnoXe4e0ZHet1CcCuBCBvSmsPHp5ml21ahsephnHx+rl JNGtzulnNP07RyfzQcpCNFH7W4lXzqM= =jrWY -----END PGPPUBLIC KEY BLOCK-----
五、卸載RPM重建數據庫(erase/rebuilddb)
卸載:軟件卸載要注意順序
用法:
[root@localhost ~]# rpm –e 軟件名
例:卸載bind
[root@localhost~]# rpm -qa | grep bind bind-utils-9.8.2-0.10.rc1.el6.i686 bind-9.8.2-0.10.rc1.el6.i686 bind-libs-9.8.2-0.10.rc1.el6.i686 samba-winbind-clients-3.5.10-125.el6.i686 PackageKit-device-rebind-0.5.8-20.el6.i686 [root@localhost~]# rpm -e bind
重建數據庫:RPM軟件的安裝、升級、刪除會導致RPM數據庫/var/lib/rpm內的文件損壞,使用—rebuilddb可以重建
用法:
[root@localhost ~]# rpm --rebuilddb