什么是RPM

    RPM全名是“RedHat Package Manager”,简称为RPM,这套软件管理机制是由RedHat这家公司发展而来的。RPM是以一种数据库记录的方式来将你所需要的软件安装到你的Linux系统的一套管理机制。其最大的特点就是将你要安装的软件先编译过,并且打包成为RPM机制的安装包,通过包装好的软件里面默认的数据库记录这个软件安装时必须具备的依赖属性软件,具备就安装、不具备就不予安装。

程序的组成部分

    编译之前:源代码

    编译文件 

    二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

    库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64

    配置文件:/etc, /etc/DIR, /usr/local/{etc,conf}

    帮助文件:/usr/share/man, /usr/share/doc

    man手册:/usr/share/man, /usr/local/share/man

程序包命名格式

    rp-pppoe -        3.1      -       5           .i386             .rpm

    软件名称     软件的版本信息    发布的次数    适合的硬件平台      扩展名

    目前的distributions在发布软件时,都会将软件的内容分为一般使用与开发使用两大类:而后者一般都不会安装,因为终端用户大部分不会去开发软件

    pam-x x.rpm

    pam-devel-x x.rpm 

程序包获取方法

    系统的发行光盘镜像或官方站点

    挂载光盘:

        mount -r /dev/cdrom /media/

    官方站点

        mirrors.sohu.com

        mirrors.163.com

        mirrors.aliyun.com

    网址:

        

        

        

    注意:安装之前要验证其合法性;

rmp使用方法

安装

    -ivh:安装、显示安装过程、显示安装进度

#rpm -ivh zsh-5.0.2-14.el7.x86_64.rpm准备中...          ################################# [100%]正在升级/安装...1:zsh-5.0.2-14.el7 ################################# [100%]

    --nodeps:忽略依赖关系;副作用:安装成功但未必能运行成功

    --replacepkgs:覆盖安装:重新安装并覆盖原有的文件

    --force:强制安装

rpm -ivh --force zsh-5.0.2-14.el7.x86_64.rpm

升级:

    -Uvh:如果安装了老版本就升级,否则就安装

#rpm -Uvh zsh-5.0.2-14.el7.x86_64.rpm 准备中...################################# [100%]	 软件包 zsh-5.0.2-14.el7.x86_64 已经安装

    -Fvh:如果安装了老版本就升级,否则就退出

    --oldpackage;降级到旧版本

    --nodeps:忽略依赖关系

    

    注意:一定不要对内核升级;linux允许多内核共存,所以可以安装多个不同版本内核

    注意:如果程序包的配置文件安装后曾被修改,升级时,新版本的文件不会覆盖老版本的配置文件而把新版本的配置文件重命名(.rpmnew)后保存

卸载:

    -evh:卸载、并显示执行过程

    

     --test:测试卸载

     --allmatches:如果一个程序包同时安装多个版本,则此选项一次全部卸载

     注意:如果程序包的配置文件安装后曾被修改,卸载时,此文件通常不会被删除,而是被重命名加后缀(.rpmsave)后留存

 

查询:

    -q:查询某包是否安装

#rpm -q zsh-5.0.2-14.el7.x86_64.rpm 未安装软件包 zsh-5.0.2-14.el7.x86_64.rpm

    -qa:查询已安装的所有包

#rpm -qa | grep "zsh"

    -qf:查询某文件由哪个包安装生成

#rpm -qf /etc/passwdsetup-2.8.71-5.el7.noarch

    -qpi:查询尚未安装的包文件的相关信息

#rpm -qpi gcc-4.8.5-4.el7.x86_64.rpmName        : gccVersion     : 4.8.5Release     : 4.el7Architecture: x86_64Install Date: (not installed)Group       : Development/LanguagesSize        : 39010978License     : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSDSignature   : RSA/SHA256, 2015年11月25日 星期三 22时30分54秒, Key ID 24c6a8a7f4a80eb5Source RPM  : gcc-4.8.5-4.el7.src.rpmBuild Date  : 2015年11月19日 星期四 23时01分53秒Build Host  : worker1.bsys.centos.orgRelocations : (not relocatable)Packager    : CentOS BuildSystem 
Vendor      : CentOSURL         : http://gcc.gnu.orgSummary     : Various compilers (C, C++, Objective-C, Java, ...)Description :The gcc package contains the GNU Compiler Collection version 4.8.You'll need this package in order to compile C code.

    -ql:查询某包安装后生成了哪些文件列表

#rpm -ql zsh|less/bin/zsh/etc/skel/.zshrc/etc/zlogin/etc/zlogout/etc/zprofile/etc/zshenv/etc/zshrc/usr/lib64/zsh/usr/lib64/zsh/5.0.2/usr/lib64/zsh/5.0.2/zsh/usr/lib64/zsh/5.0.2/zsh/attr.so/usr/lib64/zsh/5.0.2/zsh/cap.so...

    -qc:查询某包安装后生成的配置文件路径

#rpm -qc zsh/etc/skel/.zshrc/etc/zlogin/etc/zlogout/etc/zprofile/etc/zshenv/etc/zshrc

    -qd:查询某包安装后生成的所有帮助文件

#rpm -qd zsh/usr/share/doc/zsh-5.0.2/BUGS/usr/share/doc/zsh-5.0.2/CONTRIBUTORS/usr/share/doc/zsh-5.0.2/FAQ/usr/share/doc/zsh-5.0.2/FEATURES/usr/share/doc/zsh-5.0.2/LICENCE/usr/share/doc/zsh-5.0.2/MACHINES/usr/share/doc/zsh-5.0.2/NEWS/usr/share/doc/zsh-5.0.2/README/usr/share/doc/zsh-5.0.2/completion-style-guide/usr/share/doc/zsh-5.0.2/zsh-development-guide/usr/share/doc/zsh-5.0.2/zshprompt.pl...

    -q --changelog:查看某包制作时随版本变化的changelog信息

* 五 8月 14 2015 Kamil Dudka 
 - 5.0.2-14- fix alias handling in command substitution (#1253555)* 四 7月 30 2015 Kamil Dudka 
 - 5.0.2-13- fix parser regression introduced by the fix for bug #1241023* 三 7月 08 2015 Kamil Dudka 
 - 5.0.2-12- fix command substitutions to parse contents as they are read in (#1241023)* 五 5月 22 2015 Kamil Dudka 
 - 5.0.2-11- fix SIGSEGV of the syntax check in ksh emulation mode (#1222867)* 一 5月 18 2015 Kamil Dudka 
 - 5.0.2-10- signal safety when updating global state (#1163823)...

    -q --provides 查询某包提供的capabilities

#rpm -q --provides zshconfig(zsh) = 5.0.2-14.el7zsh = 5.0.2-14.el7zsh(x86-64) = 5.0.2-14.el7

    -q --requires:查询某包所依赖的capabilities

#rpm -q --requires zsh/bin/sh/bin/sh/bin/sh/bin/sh/bin/zsh/sbin/install-info

    -q --scripts:查询某包安装或卸载时执行的脚本

#rpm -q --scripts zshpostinstall scriptlet (using /bin/sh):if [ ! -f /etc/shells ] ; then    echo "/bin/zsh" > /etc/shellselse    grep -q "^/bin/zsh$" /etc/shells || echo "/bin/zsh" >> /etc/shellsfiif [ -f /usr/share/info/zsh.info.gz ]; then# This is needed so that --excludedocs works./sbin/install-info /usr/share/info/zsh.info.gz /usr/share/info/dir \  --entry="* zsh: (zsh).			An enhanced bourne shell."fi:preuninstall scriptlet (using /bin/sh):

    脚本有四类:

        preinstall:安装过程开始之前执行的脚本

        postinstall:安装过程后执行的脚本

        preuninstall:卸载前执行的脚本

        postuninstall:卸载过程完成之后执行的脚本