RPM包管理
一、RPM包的安装
用法:
[root@localhost ~]#rpm �Civh 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 �CUvh | Fvhpkgname.rpm
参数:
-Uvh:后跟的软件如果没有安装过,则直接安装;如果已安装,则更新至最新版本
-Fvh:后跟的软件如果没有安装过,则不予安装;如果已安装,则更新至最新版本
三、RPM查询
用法:
[root@localhost ~]# rpm �Cq[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 �CV[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 �Ce 软件名
例:卸载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