首页 > 代码库 > RPM包详解

RPM包详解

RPM(Redhat Package Manager)的缩写,本意为:Red Hat 软件包管理,目前已经成为Linux工业标准。现在OpenLinux/SUSE/等分发版本的linux都有采用。

RPM包里面都包含什么?

        里面包含可执行的二进制程序,这个程序和windows的软件包中的.exe文件类似是可执行的;

        RPM包中还包括程序运行时所需要的文件,这也是和windows的软件包类似;


包管理器的功能:

    打包、安装、卸载、升级、校验、数据库管理等


rpm包的前端工具:

    dpkg --> apt-get (ubuntu)

    rpm -->yum(增强型前端工具),yum(Yellow Dog)


RPM包管理的用途:

1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;

2、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;

3、可以在查询系统中的软件包是否安装以及其版本;

4、作为开发者可以把自己的程序打包为RPM包发布;

5、软件包签名GPG和MD5的导入,验证和签名发布;

6、依赖性检查,查看是否有软件包由于不兼容而扰乱了系统;


RPM包的使用权限:

RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以进行操作;如果普通用户拥有安装目录的权限,也可以进行安装等操作;


RPM包的命名格式:

name-version-relase.arch.rpm

name:软件包名称

verion:带有主,次和修订的软件包版本

release:rpm自身的发行号,与程序源码的发行号无关,仅用于标识对rpm包的不同制作的修订;同时,release还包含此包适用的OS

arch:适用于的硬件平台

    x86:i386,i486,i586,i686等;

    x86_64:x86_64

    powerpc:ppc

    noarch:依赖于虚拟机

例如:bash-4.2.3-3.centos5.x86_64.rpm


RPM分包机制:

核心包:包含程序最常用的功能

httpd-2.2.15-39.el6.centos.x86_64.rpm

开发包:包含开发所需要的库模块

httpd-devel-2.2.15-39.el6.centos.x86_64.rpm

帮助文档:

httpd-manual-2.2.15-39.el6.centos.noarch.rpm


工具包:

httpd-tools-2.2.15-39.el6.centos.x86_64.rpm


RPM命令参数:

-e 卸载rpm包

-q 查询已安装的软件信息

-i 安装rpm包

-u 升级rpm包

-c 显示所有配置文件

-d 显示所有文档文件

-h 显示安装进度

-l 列出软件包中的文件

-a 显示出文件状态

-p 查询/校验一个软件包文件

-v 显示详细的处理信息

--replacepkgs 重新安装rpm包

--justdb 升级数据库,不修改文件系统

--percent 在软件包安装时输出百分比

--version 显示版本信息

--dump 显示基本文件信息

--nomd5 不验证文件的md5支持

--nofiles 不验证软件包中的文件

--whatrequire 查询/验证需要的一个依赖性的软件包

--whatprovides 查询/验证提供一个依赖性的软件包

--test 仅做测试,不真正意义上的安装


RPM安装程序包:

rpm -i zsh-4.3.10-7.el6.x86_64.rpm

常用组合选项:-ivh

# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:zsh                    ########################################### [100%]

 如果依赖于其它包:

    1、解决依赖关系

    2、忽略依赖关系

            能安装上,但有可能无法运行;

            --nodeps     


卸载程序包:

# rpm -e zsh #只需哟包名,不需要版本号

如果被其它包所依赖:

    1、将依赖于此包的所有包一并卸载

    2、忽略依赖关系

            能卸载,但依赖于此包程序包可能会运行不正常;

            --nodeps


如果包的配置文件安装后曾经被改动过,卸载的时候,此文件将不会卸载,而是被重命名并保留,例如

 warning: /etc/zprofile saved as /etc/zprofile.rpmsave


升级程序包:

新版本替换老版本

rpm [option] /path/to/package_file

    1、升级或安装

            -Uvh

    2、纯升级

            -Fvh

    3、--force:强制升级

注意:不应该对内核执行升级操作,而是安装系统允许多内核并存


查询操作:

1、查询某包是否安装

    rpm  -q

# rpm -q zsh
zsh-4.3.10-7.el6.x86_64

2、查询所有已经安装的包

  rpm -qa

# rpm -qa
mozilla-filesystem-1.9-5.1.el6.x86_64
openssh-server-5.3p1-104.el6_6.1.x86_64
basesystem-10.0-4.el6.noarch
glib-networking-2.28.6.1-2.2.el6.x86_64
createrepo-0.9.9-18.el6.noarch
............

3、查询包的描述信息

 rpm -qi package_name

# rpm -qi zsh
Name        : zsh                          Relocations: (not relocatable)
Version     : 4.3.10                            Vendor: CentOS
Release     : 7.el6                         Build Date: Mon Nov 25 01:40:59 2013
Install Date: Mon Jan 19 22:32:22 2015         Build Host: c6b9.bsys.dev.centos.org
Group       : System Environment/Shells     Source RPM: zsh-4.3.10-7.el6.src.rpm
Size        : 5009102                          License: BSD
Signature   : RSA/SHA1, Mon Nov 25 03:33:46 2013, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://zsh.sunsite.dk/
Summary     : A powerful interactive shell
Description :
The zsh shell is a command interpreter usable as an interactive login
shell and as a shell script command processor.  Zsh resembles the ksh
shell (the Korn shell), but includes many enhancements.  Zsh supports
command line editing, built-in spelling correction, programmable
command completion, shell functions (with autoloading), a history
mechanism, and more.

4、查询某包安装生成了哪些文件

  rpm -ql package_name

# rpm -ql zsh
/bin/zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
...........

(1)查询某包安装生成了哪些配置文件

rpm -qc package_name  

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

(2)查询某包安装生成了哪些帮助文件

rpm -qd package_name

# rpm -qd zsh
/usr/share/doc/zsh-4.3.10/BUGS
/usr/share/doc/zsh-4.3.10/CONTRIBUTORS
/usr/share/doc/zsh-4.3.10/FAQ
/usr/share/doc/zsh-4.3.10/FEATURES
/usr/share/doc/zsh-4.3.10/LICENCE
/usr/share/doc/zsh-4.3.10/MACHINES
...........

(3)查询程序包的相关脚本

rpm -q --scripts package_name

# rpm -q --scripts zsh
postinstall scriptlet (using /bin/sh):
if [ ! -f /etc/shells ] ; then
    echo "/bin/zsh" > /etc/shells
else
    grep -q "^/bin/zsh$" /etc/shells || echo "/bin/zsh" >> /etc/shells
fi
...........

5、查询某文件时由哪个包安装生成的

rpm -qf /path/to/some_file


校验:

    用于检查包安装生成的文件属性是否发生变化

rpm -V package_name

        file Size differs

        M Mode differs (includes permissions and file type)

        5 digest (formerly MD5 sum) differs

        D Device major/minor number mismatch

        L readLink(2) path mismatch

        U User ownership differs

        G Group ownership differs

        T mTime differs

        P caPabilities differ


        某属性无变化,显示为(空)


RPM包来源合法性及完整性检验:

前提:在当前系统上导入包的制作者的公钥

   导入:

    rpm --import /path/to/key_file


    # rpm -qa gpg-pubkey*

    显示所有已经导入的gpg格式的公钥


    # rpm -qi gpg-pubkey-NAME

    显示密钥的详细信息


   检查包:安装过程中会自动执行


    手动检查:

    rpm -K /path/to/package_file

    rpm --checksig /path/to/package_file


 不检查包完整性:

rpm -K --nodigest

 不检查来源合法性:

rpm -K --nosignature


数据库重建:

数据库目录:/var/lib/rpm


重建:

rpm --initdb:初始化

如果事先没有库,会新建一个;如果有,则不新建;


rpm --rebuilddb: 重建

直接重建,覆盖原有的数据库


注:本文为作业整理

本文出自 “阿俊博客” 博客,请务必保留此出处http://ssc4469.blog.51cto.com/6315913/1605703

RPM包详解