码迷,mamicode.com
首页 > 其他好文 > 详细

如何使用RPM

时间:2016-02-29 02:05:37      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:包管理系统

1.什么是RPM
    RPM Package Manager(RPM)是一个开放式的包管理系统,它既可以运行于RHEL系统,也可以运行于其他Linux或Unix系统。

1.1 RPM包的命名方式一般为:
            zip-3.0-1.el6.i686.rpm
            package name         zip
            version             3.0
            release             1
            major version         el6
            CPU architecture     i686

2.安装,升级,刷新和卸载
       rpm {-i|--install} [install-options] PACKAGE_FILE ...
            安装一个包
       rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...    
            升级一个包到最新的版本,或者安装一个包
       rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
            刷新一个包到最新版本,同-U,但包必须先被安装在系统上才会执行
            rpm -Fvh *.rpm         升级所有已经安装的包


 2.1    安装时加入-v可以获得更多信息,加入-h使用哈希符号显示进度表,所以它们组合起来是这样的

[root@localhost ~]# rpm -Uvh createrepo-0.9.9-18.el6.noarch.rpm
warning: createrepo-0.9.9-18.el6.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
   1:createrepo             ########################################### [100%]
   
notice:Linux提供了两个可以安装包的选项(-U & -i),-U选项包含了安装和升级,所以推荐使用-U选项,但
在安装内核时,请使用-i选项,因为-U升级完成后会删除旧内核,如果升级完成之后的内核无法使用则会造成系统故障

未解决的依赖关系
    RPM安装包有时会依赖于其它安装包,这时需要被依赖包安装才能正确运行

列如:

[root@localhost ~]# rpm -Uvh nginx-1.0.15-12.el6.i686.rpm
warning: nginx-1.0.15-12.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
error: Failed dependencies:
    GeoIP is needed by nginx-1.0.15-12.el6.i686
    gd is needed by nginx-1.0.15-12.el6.i686
    libGeoIP.so.1 is needed by nginx-1.0.15-12.el6.i686
    libgd.so.2 is needed by nginx-1.0.15-12.el6.i686
    nginx-filesystem is needed by nginx-1.0.15-12.el6.i686
    nginx-filesystem = 1.0.15-12.el6 is needed by nginx-1.0.15-12.el6.i686

notice:如果想nginx包安装,这时有两个方法:
    方法1:
        安装对应的RPM包,解决依赖关系
    方法2:
        使用--nodeps选项忽略依赖关系(虽然可以安装,但可能导致程序运行不正常)
        rpm -Uvh --nodeps nginx-1.0.15-12.el6.i686.rpm

配置文件被更改
    当您升级一个包时,可能会出现一下的信息,
    saving /etc/ntp.conf as /etc/ntp.conf.rpmsave
    这是因为您对旧版本程序配置文件修改不能被新版本兼容,因此RPM保存了之前修改的文件,并
    安装了一个新的

2.2 卸载
    rpm -e nginx
    #卸载时使用包名,而不是包的全部名称

3.查询,校验及RPM数据库管理
 rpm {-q|--query} [select-options] [query-options]
    -q <Package_Name>    对某包进行查询
    -p <Package_Name>    对未安装的包进行查询
    -a                     在所有已被安装的包中查询
    -f <File_Name>        查询文件被哪个包拥有
        下列选项用于选择指定查询哪些信息
            -i 显示某包的详细信息
            -l 显示某包中的所有文件
            -d 显示某包的说明文档
            -c 显示某包的配置文件
例:
    rpm -qpi <Package_File>     查询一个尚未安装包的详细信息
    rpm -ql <Package_Name>         查询某个已被安装包生成的文件列表

3.1  校验
    rpm -V <package_name>        
    用于检查安装生成的文件属性是否发生变化,主要描述有
    5        MD5检查
    S        文件大小
    L        符号链接
    T         文件修改时间
    D         设备
    U         用户
    G         组
    M         权限
    ?        不可理解文件(文件权限错误)
    .        没有发生改变
    
3.2 检查包的数字签名
    校验RPM包必须先要导入GunPG key     
    [root@localhost ~]# rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-6
    显示所有已经导入的GunPG key
    [root@localhost ~]# rpm -qa gpg-pubkey*
    gpg-pubkey-c105b9de-4e0fd3a3
    想要显示key的详细信息
    [root@localhost ~]# rpm -qi gpg-pubkey-c105b9de-4e0fd3a3
    对包进行数字签名检查
    [root@localhost Packages]# rpm -K zip-3.0-1.el6.i686.rpm
    zip-3.0-1.el6.i686.rpm: rsa sha1 (md5) pgp md5 OK


3.3  RPM数据库管理

    RPM所有查询功能都是基于数据库的
    #数据库目录为/var/lib/rpm

        rpm --initdb            #初始化,如果没有则新建,有则不执行
        rpm --rebuilddb            #数据库重建,覆盖原有


参考文档:

                Red_Hat_Enterprise_Linux-6-Deployment_Guide-en-US

如何使用RPM

标签:包管理系统

原文地址:http://5778452.blog.51cto.com/5768452/1745848

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!