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 # 重建数据库