Linux:rpm

发布时间 2023-08-11 11:22:13作者: ShineLe

学习自:Linux-rpm命令_linux rpm命令_阿伍.的博客-CSDN博客

Linux rpm命令详解 – 编程技术之美-IT之美

rpm命令讲解 | 《Linux就该这么学》

Linux命令-Linux安装rpm命令-良许Linux教程网

1、前言

rpm(RedHat Package Manager)是一种打包及安装工具。(通过wget下载,再通过rpm安装)

RPM包命名规则

httpd-2.2.15-15.e16.centos.1.i686.rpm

  • httpd:软件包名
  • 2.2.15:版本号
  • 15:发布次数
  • e16.centos:Linux平台
  • i686:硬件平台
  • rpm:扩展名

RPM包依赖性

树形依赖:a→b→c(下载a要先安装c再安装b)

环形依赖:a→b→c→a(需要使用RPM命令同时安装abc三个软件)

模块依赖:a→b(a依赖于b,但是b属于库依赖,即依赖于另一个大软件,此时b是这个大软件的子软件,因此要先下载这个父软件,如何得知这个父软件包叫什么,要在一个网站上查询再下载www.rpmfind.net)

RPM包名与包全名

如果用rpm安装系统未安装(没有wget)的包,需要包全名,且进入光盘的packages目录

如果用rpm卸载、查询系统中已经装好的包,使用包名即可,并且在任何位置都可以进行。

2、用法

rpm 选项 包名[.rpm]

3、选项

选项

说明

-i

-iv

-ivh

rpm -i package.rpm:安装

显示正在安装的文件信息

显示文件信息及安装进度

-U

-Uvh

rpm -U package.rpm:升级

显示升级过程信息及进度

-e

rpm -e package:卸载

-qa

-q

rpm -qa:查询已安装的RPM包

rpm -q package:查询已安装的特定RPM包

-Va

-V

rpm -Va:验证所有已安装的RPM包

rpm -V package:验证已安装的特定RPM包

-F

rpm -F package.rpm:比较文件大小和时间戳,更新不一致的文件 

4、说明

1)查询与管道

q选项用于查询,rpm -qa可以和管道使用,进行查找筛选:

rpm -qa | grep -i xxx
-i 不区分xxx的大小写

输出时的选项:

-i 显示软件包的名称,描述,发行,大小,编译日期,安装日期,开发人员等信息。 

-l 显示软件包包含的文件 

-s 显示软件包包含的文件目前的状态,只有两种状态:normal和missing 

-d 显示软件包中的文档(如man,info,README等) 

-c 显示软件包中的配置文件,这些文件一般是安装后需要用户手工修改的,例如:sendmail.cf,passwd,inittab

-v参数就可以得到类似于ls -l的输出

2)删除、依赖

如果a包依赖于b包,那么在用 rpm -e b时,会报错:

error: a is needed by b

此时可以不检查依赖而强制删除(谨慎!

rpm -e --nodeps <rpm packagename>

3)升级

使用-U选项升级软件时,rpm会自动卸载旧软件,如果新旧软件的配置文件不兼容,rpm会自动将其保存为另一个软件,用户会看到以下信息:

 saving ``/etc/example``.conf as ``/etc/example``.conf.rpmsave

但是如果用户要安装老版本软件,就会出现报错信息:

 # rpm -Uvh example.rpm``examle packag example-2.0-l(``which` `is newer) is already installed``error:example.rpm cannot be installed

此时就要用-oldpackage参数强制按照

4)联网安装

用户能用FTP来安装软件包。如果用户能连上网络获取到某个软件包的URL,那么可以直接用该URL来安装,例如在ftp.linuxsir.com/pub/linux/redhat/RPMS/下有这个文件包:foo-1.0-1.i386.rpm,那么可以用指令

rpm -i ftp.linuxsir.com/pub/linux/redhat/RPMS/foo-1.0-1.i386.rpm

来安装和查询

5)误删检验

如果用户误删了几个文件,但不确定是哪些文件,想对系统进行校验,以了解哪些部分损坏,可以用:

rpm -Va

6)未知文件归属识别

如果用户遇到某个不认识的文件,想知道它属于哪个软件包,可以用

rpm -qf /usr/X11R6/bin/xjewel

7)未安装RPM文件的安装信息

如果有一个新RPM文件,但不清楚其内容,或想了解某个文件包会在系统里安装哪些文件,可以用

rpm -qf /usr/X11R6/bin/xjewel