rpm命令详解

RPM软件包管理器
英文原义:RPM Package Manager(原Red Hat Package Manager,现在是一个递归缩写)
注解:一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。

一、RPM包与源码包的区别

1、软件包分类

  • 源码包:C源代码包
  • rpm包:编译之后的二进制包

2、源码包

  • 优点:开源;可以自由选择所需功能;可看源代码;卸载方便(直接删除安装位置);
  • 缺点:安装步骤过多;编译时间过长;

3、RPM包

  • 优点:使用简单,只需要几个命令就可以实现包的安装、升级、查询、卸载;安装速度快;
  • 缺点:不能看源代码;功能选择不如源代码灵活;依赖性;

二、RPM包命名和依赖性

1、RPM包的命名规则

httpd-2.4.6-67.el7.centos.x86_64.rpm
httpd 软件包名
2.4.6 软件版本
67 软件发行的次数
el7.centos 适合的linux平台
x86_64 适合的硬件平台
rpm rpm包扩展名
2、RPM包的依赖性
  • 树形依赖性:a -> b -> c,即a依赖b,b依赖c
  • 环形依赖:a -> b -> c -> a
  • 模块依赖:模块依赖查询网站:www.rpmfind.com
软件名称识别
[abrt-addon-ccpp]-[2.1.11-19].[el7].[x86_64].rpm ##rpm结尾的适用与redhat操作系统
[abrt-addon-ccpp] #软件名称
[2.1.11-19] #软件版本
[el7] #软件适用系统
[x86_64] #64位
三、rpm的相关参数

-ivh name.rpm #安装,-v显示过程,-h指定加密方式为bash
-e name #卸载
-ql name #查询生成文件
-qd name #查询软件的说明文件名称,软件的文档
-qc name #查询软件的配置文件名称
-qlp name.rpm #查询安装软件后会生成什么文件
-qa #查询系统中安装的所有软件名称
-qa |grep name #查询软件安装状态,大致文件名
-p name #查软件包
-q name #查询软件,可以判断安装状态,
-qp name.rpm #查询软件安装包安装后的名字
-qf filename #查看filename属于那个安装包,等同于yum whatprovides name
-nodeps 忽略依赖性,大多数安装的软件都不可用
-ivh name.rpm –force #强制安装,但不能忽略依赖性
-ivh name.rpm –nodeps –force #忽略依赖性并且强制安装
-qi name #查看软件信息
-Kv name.rpm #检测软件包是否被篡改
-qp name.rpm –scripts #检测软件在安装或卸载过程中执行的动作
使用测试:
rpm -ivh name.rpm #安装,-v显示过程,-h指定加密方式为bash

四、rpm常用命令

安装软件:

 [root@foundation79 Desktop]# rpm -ivh linuxqq-v1.0.2-beta1.i386.rpm 
error: Failed dependencies:
    libX11.so.6 is needed by linuxqq-v1.0.2-beta1.i386
    libatk-1.0.so.0 is needed by linuxqq-v1.0.2-beta1.i386
    libc.so.6 is needed by linuxqq-v1.0.2-beta1.i386

强制安装:

[root@foundation79 Desktop]# rpm -ivh linuxqq-v1.0.2-beta1.i386.rpm --force --nodeps
Preparing...                          ################################# [100%]
Updating / installing...
   1:linuxqq-v1.0.2-beta1             ################################# [100%]

查看软件是否安装:

[root@foundation79 Desktop]# rpm -qa | grep linuxqq
linuxqq-v1.0.2-beta1.i386

卸载并检测是否卸载成功:

[root@foundation79 Desktop]# rpm -qa | grep linuxqq
linuxqq-v1.0.2-beta1.i386
[root@foundation79 Desktop]# rpm -e linuxqq
[root@foundation79 Desktop]# rpm -qa | grep linuxqq

用rpm查询信息

查看文件所属安装包:

[root@foundation79 Desktop]# rpm -qf /usr/share/tencent/qq
linuxqq-v1.0.2-beta1.i386

查看软件生成目录:

[root@foundation79 Desktop]# rpm -ql linuxqq
/usr
/usr/bin
/usr/bin/qq
/usr/share
/usr/share/applications
/usr/share/applications/qq.desktop
/usr/share/tencent
/usr/share/tencent/qq
/usr/share/tencent/qq/qq
/usr/share/tencent/qq/qq.png

查询安装软件后会生成文件(需安装包全称):

[root@foundation79 Desktop]# rpm -qlp linuxqq-v1.0.2-beta1.i386.rpm 
/usr
/usr/bin
/usr/bin/qq
/usr/share
/usr/share/applications
/usr/share/applications/qq.desktop
/usr/share/tencent
/usr/share/tencent/qq
/usr/share/tencent/qq/qq
/usr/share/tencent/qq/qq.png
/usr/share/tencent/qq/res.db

查询系统中所有文件:

[root@foundation79 Desktop]# rpm -qa
libhbalinux-1.0.17-2.el7.x86_64
gdisk-0.8.6-5.el7.x86_64
libchamplain-0.12.4-5.el7.x86_64
perl-DBD-SQLite-1.39-3.el7.x86_64
linuxqq-v1.0.2-beta1.i386

查看安装状态:

[root@foundation79 Desktop]# rpm -q linuxqq-v1.0.2-beta1.i386.rpm 
package linuxqq-v1.0.2-beta1.i386.rpm is not installed

查看软件安装后全称(需安装包全称):

[root@foundation79 Desktop]# rpm -qp linuxqq-v1.0.2-beta1.i386.rpm 
linuxqq-v1.0.2-beta1.i386

查看软件所有信息:

[root@foundation79 Desktop]# rpm -qi linuxqq
Name        : linuxqq
Version     : v1.0.2
Release     : beta1
Architecture: i386
Install Date: Mon 21 May 2018 07:02:17 PM CST
Group       : Internet
Size        : 6346779
License     : Commercial
Signature   : (none)
Source RPM  : linuxqq-v1.0.2-beta1.src.rpm
Build Date  : Sun 04 Jan 2009 09:21:16 AM CST
Build Host  : localhost.localdomain
Relocations : (not relocatable)
Packager    : @Home
Vendor      : Tencent Inc.
Summary     : QQ for Linux v1.0.2 Beta1
Description :
QQ - The most popular free instant messaging program in China.
* Chat with more than 590,000,000 people all over the world.
* Free to download or distribute absolutely.

检测安装包是否被修改:

[root@foundation79 Desktop]# rpm -Kv linuxqq-v1.0.2-beta1.i386.rpm 
linuxqq-v1.0.2-beta1.i386.rpm:
    Header SHA1 digest: OK (861f5ee59dd5201dee42863e1e0682e0ef783b64)
    MD5 digest: OK (8319addd3fbb7b16cc5e2b58c648dc4f)
[root@foundation79 Desktop]# echo vincent >> linuxqq-v1.0.2-beta1.i386.rpm                #给新复制的软件写入内容vincent
[root@foundation79 Desktop]# rpm -Kv linuxqq-v1.0.2-beta1.i386.rpm                        #检测时则显示该软件被篡改
linuxqq-v1.0.2-beta1.i386.rpm:
    Header SHA1 digest: OK (861f5ee59dd5201dee42863e1e0682e0ef783b64)
    MD5 digest: BAD Expected(8319addd3fbb7b16cc5e2b58c648dc4f) != (18d1b3bcb26721509beaa68c9d31cd0d)

猜你喜欢

转载自blog.csdn.net/qq_36747237/article/details/80392572