RPM(RPM Package Managment)是在centos或redhat中的包管理器, 用来安装程序的. 


rpm的包的格式: 包名-版本-发行号.使用平台.rpm

包名: 程序名称, 例如 bash, httpd

版本: 包括,主版本号.副本号.发行号 例如 5.3.2

发行号: 指定的制作rpm包的发行号或后面加适用的操作系统. 例如3.centos6

使用平台. 使用的硬件平台, 例如, x86_64, noarch

几个常见rpm包例子:

php-5.3.3-38.el6.x86_64.rpm,  mysql-5.1.73-3.el6_5.x86_64.rpm


包还分成主包和子包, 区别是子包在包名与版本号间加了个分包说明, 但后面的版本号等都是一样的.

例如, 第一个是php的主包, 其他都是它的分包

php-5.3.3-38.el6.x86_64.rpm         php-mysql-5.3.3-38.el6.x86_64.rpm    php-pecl-memcache-3.0.5-4.el6.x86_64.rpm
php-cli-5.3.3-38.el6.x86_64.rpm     php-odbc-5.3.3-38.el6.x86_64.rpm     php-pgsql-5.3.3-38.el6.x86_64.rpm
php-common-5.3.3-38.el6.x86_64.rpm  php-pdo-5.3.3-38.el6.x86_64.rpm      php-soap-5.3.3-38.el6.x86_64.rpm
php-gd-5.3.3-38.el6.x86_64.rpm      php-pear-1.9.4-4.el6.noarch.rpm      php-xml-5.3.3-38.el6.x86_64.rpm
php-ldap-5.3.3-38.el6.x86_64.rpm    php-pecl-apc-3.1.9-2.el6.x86_64.rpm  php-xmlrpc-5.3.3-38.el6.x86_64.rpm


包管理器的功能有:  安装, 卸载, 升级,查询, 校验, 数据库管理. 

安装:

rpm 选项 包文件

-i: 安装

-v: 显示详细信息

-h:显示进度

[root@centos Packages]# rpm -ivh zip-3.0-1.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
	package zip-3.0-1.el6.x86_64 is already installed

--test: 和安装显示的一样, 但不是真正安装, 只是测试

--nodeps: 如果有需要安装依赖关系的文件,也会强行安装, 但安装后不一定可以运行.

--replacepkgs: 覆盖原有的程序, 但不替换配置文件, 新文件会在原目录下另存成为.rpmnew的文件


卸载:

rpm 选项 包名, 不是包文件

-e: 卸载

[root@centos Packages]# rpm -ivh php-common-5.3.3-38.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:php-common             ########################################### [100%]
[root@centos Packages]# rpm -e php-common

--nodeps: 不会有没有其他程序依赖这个包, 都删除

 注意:如果程序被删除, 修改过的配置文件会存为.rpmsave文件


升级:

rpm 选项 包文件

-U: 升级或安装, 没有老版本就安装

-F: 只是升级, 没有老版本不安装

常用命令组合 -Uvh, -Fvh


查询:

rpm -q 包名: 查询包是否安装了

[root@centos Packages]# rpm -q lftp
lftp-4.0.9-6.el6.x86_64
[root@centos Packages]# rpm -q php
package php is not installed

rpm -ql 包名: 查询已经安装文件的所有安装的目录

[root@centos Packages]# rpm -ql zip
/usr/bin/zip
/usr/bin/zipcloak
/usr/bin/zipnote
/usr/bin/zipsplit
/usr/share/doc/zip-3.0
/usr/share/doc/zip-3.0/CHANGES
/usr/share/doc/zip-3.0/LICENSE
/usr/share/doc/zip-3.0/README
/usr/share/doc/zip-3.0/README.CR
/usr/share/doc/zip-3.0/TODO
/usr/share/doc/zip-3.0/WHATSNEW
/usr/share/doc/zip-3.0/WHERE
/usr/share/doc/zip-3.0/algorith.txt
/usr/share/man/man1/zip.1.gz
/usr/share/man/man1/zipcloak.1.gz
/usr/share/man/man1/zipnote.1.gz
/usr/share/man/man1/zipsplit.1.gz

rpm -qa: 列出所有安装的程序, 后面可以加grep过滤

[root@centos Packages]# rpm -qa | grep httpd.*
httpd-tools-2.2.15-39.el6.centos.x86_64
httpd-2.2.15-39.el6.centos.x86_64

rpm -qf 程序文件: 查询文件是由那个安装包生成的

[root@centos Packages]# rpm -qf /etc/httpd/conf/httpd.conf 
httpd-2.2.15-39.el6.centos.x86_64


rpm -qi 程序名: 查询这个安装过的程序的详细信息

[root@centos Packages]# rpm -qi httpd
Name        : httpd                        Relocations: (not relocatable)
Version     : 2.2.15                            Vendor: CentOS
Release     : 39.el6.centos                 Build Date: Fri 17 Oct 2014 01:49:26 AM AEDT
Install Date: Sat 04 Jul 2015 12:18:17 PM AEST      Build Host: c6b9.bsys.dev.centos.org
Group       : System Environment/Daemons    Source RPM: httpd-2.2.15-39.el6.centos.src.rpm
Size        : 3085394                          License: ASL 2.0
Signature   : RSA/SHA1, Sat 18 Oct 2014 07:02:19 AM AEDT, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://httpd.apache.org/
Summary     : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server

rpm -qc 程序名: 查询这个程序的配置文件路径

[root@centos Packages]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf

 

rpm -qd 程序名: 查询这个程序的帮助文件目录

[root@centos Packages]# rpm -qd zip
/usr/share/doc/zip-3.0/CHANGES
/usr/share/doc/zip-3.0/LICENSE
/usr/share/doc/zip-3.0/README
/usr/share/doc/zip-3.0/README.CR
/usr/share/doc/zip-3.0/TODO
/usr/share/doc/zip-3.0/WHATSNEW
/usr/share/doc/zip-3.0/WHERE
/usr/share/doc/zip-3.0/algorith.txt
/usr/share/man/man1/zip.1.gz
/usr/share/man/man1/zipcloak.1.gz
/usr/share/man/man1/zipnote.1.gz
/usr/share/man/man1/zipsplit.1.gz


rpm -q --scripts 程序名:查询这个程序要安装了那些相关脚本

[root@centos Packages]# rpm -q --scripts httpd
preinstall scriptlet (using /bin/sh):
# Add the "apache" user
getent group apache >/dev/null || groupadd -g 48 -r apache
getent passwd apache >/dev/null || \
  useradd -r -u 48 -g apache -s /sbin/nologin \
    -d /var/www -c "Apache" apache
exit 0
postinstall scriptlet (using /bin/sh):
# Register the httpd service
/sbin/chkconfig --add httpd
/sbin/chkconfig --add htcacheclean
preuninstall scriptlet (using /bin/sh):
if [ $1 = 0 ]; then
	/sbin/service httpd stop > /dev/null 2>&1
	/sbin/chkconfig --del httpd
	/sbin/service htcacheclean stop > /dev/null 2>&1
	/sbin/chkconfig --del htcacheclean
fi
posttrans scriptlet (using /bin/sh):
test -f /etc/sysconfig/httpd-disable-posttrans || \
 /sbin/service httpd condrestart >/dev/null 2>&1 || :


下面这些命令查询未安装包的信息, 后面接安装文件名

rpm -qp, rpm -qpl, rpm -qpi, rpm -qpc, rpm-qpd


校验:

包完整性: 检验特征码, 一般是用md5提取的特征码

包的来源: 用rpm制作者提供的公钥来,来解密特征码, 如果成功则说明来源可信


导入公钥

rpm --import 公钥

[root@centos cdrom]# rpm --import RPM-GPG-KEY-CentOS-6
[root@centos cdrom]# rpm -qa gpg*
gpg-pubkey-0608b895-4bd22942
gpg-pubkey-c105b9de-4e0fd3a3
gpgme-1.1.8-3.el6.x86_64
gpg-pubkey-c105b9de-4e0fd3a3
[root@centos cdrom]# rpm -qi gpg-pubkey-c105b9de-4e0fd3a3
Name        : gpg-pubkey                   Relocations: (not relocatable)
Version     : c105b9de                          Vendor: (none)
Release     : 4e0fd3a3                      Build Date: Sat 04 Jul 2015 01:01:04 PM AEST
Install Date: Sat 04 Jul 2015 01:01:04 PM AEST      Build Host: localhost
Group       : Public Keys                   Source RPM: (none)
Size        : 0                                License: pubkey
Signature   : (none)
Summary     : gpg(CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>)
Description :
-----BEGIN PGP PUBLIC 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 PGP PUBLIC KEY BLOCK-----

rpm数据库:

rpm --inidb : 初始化, 没有库则重建

rpm --rebuidbd: 重建, 有没有数据库都重建