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)