RPM全称是“RedHatPackageManager”是由RedHat公司发发展起来的,本质是将软件源码包经过编译并且打包成rpm的格式,rpm文件包含的有二进制文件,配置文件,库文件等,同时RPM以一种数据库记录的方式将所需要的软件安装到linux系统上,优点是安装方便,缺点是只能安装在编译时默认的硬件与操作系统版本。

1.rpm包的版本说明

httpd-2.2.3-74.el5.centos.i386.rpm
#以此软件为例说明
httpd :软件名
2.2.3 :分别表示:主版本号-次版本号-修正版本号
74 :编译的次数
i386 :硬件平台
.rpm :扩展名

格式:

软件名-版本号-编译次数-支持平台-.rpm

常见的硬件平台:

i386i586i686:32位

x86_64:64位

noarck:没有硬件等级的限制

2.rpm包的安装

#1.rpm包的安装需要是root用户才能进行
#2.rpm包安装后,该软件的相关信息会写入/var/lib/rpm下的数据库档案中,在版本升级,安装查询,数字签名等信息都会在这里查询

安装时常用的选项:

rpm -ivh package-name
-i :安装
-v :显示详细的安装信息
-h :显示安装进度
-vv :显示更详细的安装过程
--nodeps:忽略安装时软件的依赖性,也就是强制进行安装,往往造成软件安装后不可用
--replacepkgs :重新安装某个已经安装过的软件包,使用rpm -ivh *.rpm 时不会因个别软件包已安装过而中断
--test:测试某个软件包是否能安装在linux环境中
--justdb :更新软件在数据库内的信息
--prefix 目录 :指定安装路径,一般不用该参数,rpm默认安装
-K :验证软件包的签名

[root@zhu2 ~]# rpm -ivh a.rpm b.rpm c.rpm *.rpm
#同时安装多个软件包,当分不清软件包安装的先后顺序使用

3.rpm包的升级

-Uvh:后面接的软件即使没有安装过,则系统将予以直接安装,

后面接的软件有安装过旧版,则系统自动更新至新版
-Fvh:如果后面接的软件没有安装过,则系统不会安装该软件;

后面接的软件有安装过旧版,则系统自动更新至新版

4.rpm包的查看

rpm的查询功能非常强大,查询的依据就是/var/lib/rpm目录下的数据库文件,不仅可以查询已安装的软件的信息,未安装的软件的信息也可查询。

rpm -q name :仅查询后面接的软件名称是否安装
rpm -qa         :列出所有的已经安装在本机系统上面的所有软件名称
rpm -qa | grep name :查询某软件是否安装
rpm -qc name:列出该软件的配置文件(config)
rpm -qd :列出该软件的所有说明文件,即是与man有关的档案
rpm -qi name :列出软件的详细信息(information)
rpm -ql name :列出软件所有的档案与目录所在的完整文件名(list)
rpm -qf 文件名 :由后面接的文件名来找出该档案属于哪个已安装的软件(find)
rpm -qR name :列出与该软件有依赖行的软件所包含的档案
rpm -qp(icdiR):查找某个rpm软件包的信息,该软件包并没安装

查询举例:

1.查看某软件是否已经安装

[root@zhu1 ~]# rpm -qa | grep vsftpd
[root@zhu1 ~]# rpm -ivh vsftpd-2.0.5-28.el5.i386.rpm
Preparing...                ########################################### [100%]
1:vsftpd                 ########################################### [100%]
[root@zhu1 ~]# rpm -qa | grep vsftpd
vsftpd-2.0.5-28.el5

2.查询某软件的配置文件,即是/etc下的文件名

[root@zhu1 ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd.log
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd_conf_migrate.sh

3.查看某软件的帮助文件

[root@zhu1 ~]# rpm -qd vsftpd
/usr/share/doc/vsftpd-2.0.5/AUDIT
/usr/share/doc/vsftpd-2.0.5/BENCHMARKS
/usr/share/doc/vsftpd-2.0.5/BUGS
/usr/share/doc/vsftpd-2.0.5/COPYING
/usr/share/doc/vsftpd-2.0.5/Changelog
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE/README
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE/vsftpd.conf
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE/vsftpd.xinetd
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE/vsftpd.xinetd.dir
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE_NOINETD/README
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE_NOINETD/README.dir

4.查看软件的详细信息,开发商,版本,说明

[root@zhu1 ~]# rpm -qi vsftpd
Name        : vsftpd                       Relocations: (not relocatable)
Version     : 2.0.5                             Vendor: CentOS
Release     : 28.el5                        Build Date: 2013年01月09日 星期三 17时57分48秒
Install Date: 2013年09月27日 星期五 20时14分57秒      Build Host: builder10.centos.org
Group       : System Environment/Daemons    Source RPM: vsftpd-2.0.5-28.el5.src.rpm
Size        : 296297                           License: GPL
Signature   : DSA/SHA1, 2013年01月10日 星期四 03时52分11秒, Key ID a8a447dce8562897
URL         : http://vsftpd.beasts.org/
Summary     : vsftpd - 非常安全 Ftp 守护进程
Description :
vsftpd 是一个非常安全 FTP 守护进程。它是完全从零开始
编写的。

5.列出该软件有关的所有文件和目录

[root@zhu1 ~]# rpm -ql vsftpd
/etc/logrotate.d/vsftpd.log
/etc/pam.d/vsftpd
/etc/rc.d/init.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd_conf_migrate.sh
/usr/sbin/vsftpd
/usr/share/doc/vsftpd-2.0.5
/usr/share/doc/vsftpd-2.0.5/AUDIT
/usr/share/doc/vsftpd-2.0.5/BENCHMARKS
/usr/share/doc/vsftpd-2.0.5/BUGS
/usr/share/doc/vsftpd-2.0.5/COPYING
/usr/share/doc/vsftpd-2.0.5/Changelog
/usr/share/doc/vsftpd-2.0.5/EXAMPLE
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE/README
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE/vsftpd.conf
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE/vsftpd.xinetd
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE/vsftpd.xinetd.dir
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE_NOINETD
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE_NOINETD/README
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE_NOINETD/README.dir
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/INTERNET_SITE_NOINETD/vsftpd.conf
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/PER_IP_CONFIG
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/PER_IP_CONFIG/README
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/PER_IP_CONFIG/README.dir
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/PER_IP_CONFIG/hosts.allow
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/PER_IP_CONFIG/hosts.allow.dir
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/README
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_HOSTS
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_HOSTS/README
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_USERS
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_USERS/README
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_USERS/README.dir
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_USERS/logins.txt
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_USERS/vsftpd.conf
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_USERS/vsftpd.pam
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_USERS/vsftpd.pam.dir
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_USERS_2
/usr/share/doc/vsftpd-2.0.5/EXAMPLE/VIRTUAL_USERS_2/README
/usr/share/doc/vsftpd-2.0.5/FAQ
/usr/share/doc/vsftpd-2.0.5/INSTALL
/usr/share/doc/vsftpd-2.0.5/LICENSE
/usr/share/doc/vsftpd-2.0.5/README
/usr/share/doc/vsftpd-2.0.5/README.security
/usr/share/doc/vsftpd-2.0.5/REWARD
/usr/share/doc/vsftpd-2.0.5/SECURITY
/usr/share/doc/vsftpd-2.0.5/SECURITY/DESIGN
/usr/share/doc/vsftpd-2.0.5/SECURITY/IMPLEMENTATION
/usr/share/doc/vsftpd-2.0.5/SECURITY/OVERVIEW
/usr/share/doc/vsftpd-2.0.5/SECURITY/TRUST
/usr/share/doc/vsftpd-2.0.5/SIZE
/usr/share/doc/vsftpd-2.0.5/SPEED
/usr/share/doc/vsftpd-2.0.5/TODO
/usr/share/doc/vsftpd-2.0.5/TUNING
/usr/share/doc/vsftpd-2.0.5/vsftpd.xinetd
/usr/share/man/man5/vsftpd.conf.5.gz
/usr/share/man/man8/vsftpd.8.gz
/var/ftp
/var/ftp/pub

6.根据文件名来查找该文件所属的软件名

[root@zhu1 ~]# rpm -qf /etc/vsftpd/vsftpd.conf
vsftpd-2.0.5-28.el5

7,查询与该软件有关的依赖性软件所含的文件名

[root@zhu1 ~]# rpm -qR vsftpd
/bin/bash
/bin/sh
/bin/sh
/lib/security/pam_loginuid.so
/sbin/chkconfig
/sbin/service
/usr/sbin/usermod
config(vsftpd) = 2.0.5-28.el5
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.2)
libc.so.6(GLIBC_2.3)
libc.so.6(GLIBC_2.3.4)
libc.so.6(GLIBC_2.4)
libcap
libcap.so.1
libcrypto.so.6
libdl.so.2
libnsl.so.1
libpam.so.0
libpam.so.0(LIBPAM_1.0)
libssl.so.6
libwrap.so.0
logrotate
openssl
pam
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)

8.查询未安装的软件的信息

[root@zhu1 ~]# wget http://mirrors.163.com/centos/5/os/i386/CentOS/ipvsadm-1.24-13.el5.i386.rpm
[root@zhu1 ~]# rpm -qpc ipvsadm-1.24-13.el5.i386.rpm
/etc/rc.d/init.d/ipvsadm
/etc/sysconfig/ipvsadm-config
#-qp表示查询未安装软件的信息,后跟具体的选项同上

9.查看软件包内置的脚本

[root@zhu1 ~]# rpm -q --scripts httpd
preinstall scriptlet (using /bin/sh):
# Add the "apache" user
/usr/sbin/useradd -c "Apache" -u 48 \
-s /sbin/nologin -r -d /var/www apache 2> /dev/null || :
postinstall scriptlet (using /bin/sh):
# Register the httpd service
/sbin/chkconfig --add httpd
preuninstall scriptlet (using /bin/sh):
if [ $1 = 0 ]; then
/sbin/service httpd stop > /dev/null 2>&1
/sbin/chkconfig --del httpd
fi
posttrans scriptlet (using /bin/sh):
test -f /etc/sysconfig/httpd-disable-posttrans || \
/sbin/service httpd condrestart >/dev/null 2>&1 || :
#preinstall安装前脚本
#postinstall安装后脚本
#preuninstall卸载前脚本
#postuninstall卸载后脚本

5.rpm包的验证与数字签名

验证指的是使用/var/lib/rpm目录下的数据库文件内容来比较linux系统环境下的所有文件,可以查看到文件的改变信息

1.查询软件包中的文件是否被改变,改变了便列出来

[root@zhu1 ~]# rpm -V vsftpd
[root@zhu1 ~]# mv /etc/vsftpd/vsftpd.conf /root/
[root@zhu1 ~]# rpm -V vsftpd
missing   c /etc/vsftpd/vsftpd.conf
[root@zhu1 ~]# mv /root/vsftpd.conf /etc/vsftpd/
[root@zhu1 ~]# rpm -V vsftpd

2.列出目前系统上所有被改变的文件

[root@zhu1 ~]# rpm -Va

3.查看某个文件是否被改变过

[root@zhu1 ~]# rpm -Vf /etc/vsftpd/vsftpd.conf
S.5....T  c /etc/vsftpd/vsftpd.conf

验证信息的说明

S :文件大小的改变
M :文件类型或属性的改变
5 :MD5这一种指纹码的内容改变
L :link路径改变
U :文件的所有者被改变
G :文件的所属组被改变
T :文件的创建时间被改变

数字签名

软件开发商所推出的软件会有一个厂商自己的证书系统,只是这个证书被数字化了,当我们安装一个rpm文件时:

1.先安装原厂发布的公钥文件

2,实际安装rpm包时会读取rpm文件的证书信息,与本机系统内的证书信息比较

3.若证书相同则予以安装

[root@zhu1 ~]# ll /etc/pki/rpm-gpg/
总计 16
-rw-r--r-- 1 root root 1512 2010-04-26 RPM-GPG-KEY-beta
-rw-r--r-- 1 root root 1504 2010-04-26 RPM-GPG-KEY-CentOS-5
[root@zhu1 ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#证书的导入

6.rpm包的删除

[root@zhu1 ~]# rpm -e vsftpd
warning: /etc/vsftpd/vsftpd.conf saved as /etc/vsftpd/vsftpd.conf.rpmsave
[root@zhu1 ~]# rpm -q vsftpd
package vsftpd is not installed
# -e :删除软件
--nodeps :强制删除

7.rpm包的数据库重建

[root@zhu1 ~]# rpm --rebuilddb

--initdb                      #初始化rpm包的数据库
--rebuilddb                    # 重建数据库