rpm命令浅析

 

    RPM(Redhat Package Manager)是有红帽公司开发的套件管理程序rpm包格式*.rpm。

    获取rpm可以通过以下三个途径,1、发行的光盘或站点服务器,镜像:http://mirrors.163.comhttp://mirrors.sohu.com2、项目的官网3、很多第三方机构或个人制作并公开发布许rpmhttp://rpmfind.nethttp://rpm.pbone.net

    rpm安装格式:rpm [option] /path/to/package_file 其中rpm后接-i: install的意思,接-vview,查看详细信息,后接-h: 以安装信息列显示安装进度。其组合选项:-ivh。还有一个选项仅作测试,并不实际安装 --test

    在包安装过程中如果要安装的包依赖于其它包:有两个方法可以解决,1、解决依赖关系2、忽略依赖关系,要忽略依赖关系后接 --nodeps选项。能安装上,但有可能无法运行。如果有要重新安装的包需后接 --replacepkgs选项。如果原有配置文件作了修改,很有可能不执行替换,而是将应该安装生成的配置文件重命名为 .rpmnew

    有安装就有卸载,其格式rpm [option] package_name选项部分接-e: erase就是卸载的意思,在卸载过程中,如果被其它包所依赖:有两个解决方法:1、将依赖于此包的所有包一并卸载2、忽略依赖关系,后接--nodeps能卸载,但依赖于此包程序包可能会运行不正常。在此期间要注意如果包的配置文件安装后曾被改动过,卸载时,此文件将不会卸载,而是被重命名并保留,例如warning: /etc/zprofile saved as /etc/zprofile.rpmsave

    已经安装好的包要想升级,其升级格式:rpm [option] /path/to/package_file。升级又分两种情况:1、升级或安装 -Uvh2纯升级-Fvh新版本替换老版本。如果升级后的版本冲突,可以强制升级只需后接 --force

   下面看一些查询操作:

    1、查询某包是否安装rpm -q package_name...如查询top 和 htop 两个包的安装情况

rpm命令浅析_rpm  

    2、查询所有已经安装的包rpm -qa 要是按条件过滤:rpm -qa | grep 'PATTERN'。如查询cups开头的包。

rpm命令浅析_rpm _02 

    3、查询包的描述信息rpm -qi package_name如查询htop包的详细信息

rpm命令浅析_  升级_03 

    这些信息包括所查的包包括多少个文件,文件的名称,文件的大小,创建时间,编辑日期等。

    4、查询某包安装生成了哪些文件rpm -ql package_name

rpm命令浅析_  删除_04 

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

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

rpm命令浅析_  升级_05 

    (3) 查询程序包的相关脚rpm -q --scripts package_name

rpm命令浅析_  升级_06 

    5、查询某文件是由哪个包安装生成的rpm -qf /path/to/some_file

rpm命令浅析_rpm _07 

    6、对尚未安装的包执行查询rpm [option] /path/to/package_file

       -qpi:某包安装后的详细信息

       -qpl:查询某包安装后生成哪些文件

       -qpc:查询某包安装后生成哪些配置文件

       -qpd:查询某包安装后生成哪些源文档

    下面看一下rpm包的合法性验正包的制作者使用单向加密提取原始数据的特征码,而后使用自己的私钥加密这段特性码,附加原始数据后面。验正过程:前提必须有可靠机制获取到包制作者的公钥;1、使用制作者的公钥解密加密的特征码,能解密则意味着来源合法;2、使用与制作者同样的意向加密算法提取原始数据的特征码,并与解密出来的特征作比对,相同,则意味着完整性没问题;接下来导入:rpm --import /path/to/key_file使用# rpm -qa gpg-pubkey*显示所有已经导入的gpg格式的公钥,还可以使用# rpm -qi gpg-pubkey-NAME显示密钥的详细信息

安装过程中会自动执行检查包,还可以手动检查做如下操作:rpm -K /path/to/package_filerpm --checksig /path/to/package_file如果要进行有条件的检查,不检查包完整性则执行:rpm -K --nodigest。如果不检查来源合法性则执行:rpm -K --nosignature

rpm还有数据库数据库重建功能,数据库目录:/var/lib/rpm重建需如下操作:rpm --initdb初始化操作,如果事先没有库,会新建一个;如果有,则不新建;rpm --rebuilddb: 重建操作,直接重建,覆盖原有的数据库