天天看点

如何使用RPM

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使用哈希符号显示进度表,所以它们组合起来是这样的

[[email protected] ~]# 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安装包有时会依赖于其它安装包,这时需要被依赖包安装才能正确运行

列如:

[[email protected] ~]# 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     

    [r[email protected] ~]# rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-6

    显示所有已经导入的GunPG key

    [[email protected] ~]# rpm -qa gpg-pubkey*

    gpg-pubkey-c105b9de-4e0fd3a3

    想要显示key的详细信息

    [[email protected] ~]# rpm -qi gpg-pubkey-c105b9de-4e0fd3a3

    对包进行数字签名检查

    [[email protected] 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

转载于:https://blog.51cto.com/5778452/1745848