rpm包管理工具

原文链接:https://blog.csdn.net/tigerjibo/article/details/9323475

什么是RPM

RPM的全称是Readhat Package Manager(红帽包管理器),主要解决软件包的版本管理、安装、配置、卸载的自动化问题。它是由红帽公司开发的,但原始设计理念是开放式的,包括OpenLinux、以及Turbo Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。系统安装rpm管理工具以后,只要是符合rpm文件标准打包的程序都可以方便的安装、升级、卸载。

rpm包

RPM管理.rpm格式的软件包,既可以对已有的rpm进行安装、卸载,也可以把文件归档为rpm包。
RPM管理的软件包有2种形式:二进制包(Binary)以及源代码包(Source)两种。二进制包以rpm作为后缀名,可以直接安装在计算机中,而源代码包以src.rpm作为后缀名,将会由RPM自动编译、安装。对于已经编译成二进制的rpm包,由于操作系统环境不同,一般不能混用。对于以src.rpm发行的软件包,由于需要安装时进行本地编译,所以通常可以在不同系统下安装。

rpm包的命名规则

rpm 命名一般由以下几部分组成:
tiger-3.1-5.i386.rpm
(1)软件名称:即每个软件的名称。
(2)版本:每一次更新版本就需要有一个版本的信息。
(3)释出次数(发布版本号):也就是编译的次数,那么为何需要重复的编译呢?这是由于同一版的软件中,可能由于有某些 bug 或者是安全上的顾虑,所以必须要重新设定当初打包时候的设定参数,设定完成之后重新编译并打包成 RPM 档案!因此就有不同的打包数出现了!(注:这个时候原始码其实还是 3.1 那个版本,只是下达编译时的参数不同而已! )
(4)硬件平台:由于 RPM 可以适用不同的硬件平台,但由于不同的平台设定的参数有所差异性,因此,要对不同CPU进行最佳化参数的设定,因此就有i386,i586,i686与noarch等的名称出现了。noarch:表示没有任何硬件等级上的限制。

RPM的常用功能

rpm工具支持软件包的查询安装更新卸载四方面的功能。

查询

RPM的查询功能很强大。一般分为:查看已安装软件包的信息、查看未安装软件包的信息(但是要有该软件包)。
命令格式:rpm {-q|--query} [select-options][query-options]

  • 查询已安装包

    1. 查询已安装的软件包:rpm -q softname
    2. 查看所有已经安装的包:rpm -qa
    3. 在所有已经安装的软件包中查找某个软件:rpm -qa | grep softname 或者rpm -qa | more
    4. 查询已安装的文件属于哪个软件包:rpm -qf filename,filename中需要包含文件的绝对路径。
    5. 查询已安装软件包的信息:rpm -qi softname

      Relocations:是否可以重定向安装位置
    6. 查询已安装软件包安装到何处:rpm -ql softname
    7. 查询已安装软件的配置文件:rpm -qc softname
  • 查询未安装的软件包的信息

    1. 查看一个软件包的用途、版本等信息:rpm -qpi filename.rpm
    2. 查询一个软件包所包含的文件:rpm -qpl filename.rpm
    3. 查询软件包中标注为文档的文件:rpm -qpd filename.rpm
    4. 查看软件包的配置文件:rpm -qpc filename.rpm
    5. 查看一个软件包的依赖关系:rpm -qpR filename.rpm

查询相关的参数解释:

  • -a 查询所有已安装的软件包
  • -f 将查询包含有文件. 的软件包
  • -p 查询软件包文件名为的软件包 还可以指定查询软件包时所显示的信息。它们被称作信息选择选项:
  • -i显示软件包信息,如描述,发行号,尺寸,构建日期,安装日期,平台,以及其它一些各类信息。
  • -l 显示软件包中的文件列表。
  • -s 显示软件包中所有文件的状态。
  • -d 显示被标注为文档的文件列表(man 手册, info 手册,READMEs, etc)。
  • -c显示被标注为配置文件的文件列表。这些是您要在安装完毕以后加以定制的文件(sendmail.cf, passwd, inittab, etc)。

安装

命令格式:rpm {-i|--install} [options]

  • 默认位置安装:rpm –ivh softname.rpm
  • 指定位置安装:rpm –ivh --relocate oldpath=newpath softname.rpm,能否指定安装位置,需要确认rpm的Relocations属性。
    参数解释:
    -v:查看更详细的安装信息
    -h:在安装信息列显示安装进度
    注意:如果有依赖关系的要先解决依赖关系

更新

命令:rpm –Uvh softname.rpm
RPM不管系统有没有安装,都安装升级到最新版。
Note:如果要从新版本将到旧版本,可以使用--oldpackage参数。

卸载

命令:rpm -e sotfname
注意:这里使用软件包的名字softname,而不是软件包文件的名字softname-1.0-1.i386.rpm。 如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。

rpm的缺点极其改进工具yum

rpm进行软件管理时,依赖关系严重,比方说A包需要B包,B包需要C包,C包需要A包,并且无论安装还是卸载,都要优先解决依赖包,让人十分头疼。yum就是专门解决rpm依赖问题的管理工具,它可以自动帮我们安装所需安装包的依赖包,可以参考文章yum工具的使用

RPM其他

rpm之所以能否查询已安装的数据包,其实是它自己维护了一个rpm数据库,如果rpm系统出现了问题,不能安装或查询,此时就要初始化rpm数据库。
rpm --initdb
rpm --rebuilddb该命令时间较长

FQA

  1. 在存在依赖关系的前提下,如何安装软件包?
  2. rpm工具支持在线查找、安装吗?
    rpm没有在线查找软件包的功能,但可以通过指定安装包url的方式实现在线安装,例如:rpm -ivh http://mirror.centos.org/centos/7/os/x86_64/Packages/unzip-6.0-21.el7.x86_64.rpm
    需要设置DNS,保证能连接网络,如果网络使用的是代理模式,则需要设置代理。
  3. 如何查看rpm包的依赖关系
    https://blog.csdn.net/nklinsirui/article/details/80159116
    查看依赖关系的方法有很多,具体如下:
    • 执行命令rpm -qpR softname.rpm
    • 安装时的打印信息
    • 通过查询 https://pkgs.org/ 来查询包的依赖关系
    • 通过yum install --downloadonly --downloaddir=[download_dir] [package] 或 yum download来只下载包不安装包
    • 运行yum list [package] --showduplicates 来查看包的多个版本
posted @ 2022-02-09 20:48  21summer  阅读(421)  评论(0编辑  收藏  举报