Linux 基础教程 34-软件包管理-RPM
对于Linux而言管理各类软件,如安装、卸载和升级等是常有的事情和必备的技能。以CentOS为例,常用的安装包命令有rpm和yum。
RPM基础
RPM(RedHat Package Manager)是一个系统软件包,功能类似于Windows中的添加/删除程序,但又比添加/删除程序功能更强。在Linux界广泛使用的依然为各类开源软件,也就是代码是开放的,这些代码通常会被打包为.tar.gz形式在互联网上进行传播,而这些开源软件被下载后仍然需要编译成二进制后才可以使用。这种试虽然兼容性好,但使用起来却不方便,存在一定的依赖关系,而文件较大时,编译出错的概率也非常大,对于日常使用人员也很麻烦。
使用RPM可以很容易地对RPM形式的软件进行安装、升级、卸载、检验和查询等操作。RPM可以让用户直接以binary方式安装软件包且可代替用户查询是否已经安装了相关的库文件。在用RPM删除程序时,管理器会提示用户是否要删除相关程序。如果使用RPM进行升级,RPM会保留得得配置。另外RPM还保留了一个包含所有软件包资料的数据库,通过该数据库可以查询各个已经安装的软件包等等。
RPM使用
RPM安装路径
Linux的目录是有统一规范的,这个规范的作用是保证任何一个软件都能找到另一款软件、文件。
- 可以运行的文件存放在/bin或/usr/bin目录中
- 库文件存放在/lib或/usr/lib目录中
- 配置文件存放在/etc目录
一般,RPM类型的文件在安装的时候,会先去读取文件内记载的设置参数内容,然后将该数据用于比较Linux环境,从而找出是否有属性依赖的软件还没有安装的问题。使用RPM方式安装的软件,在完成安装后,会将该软件的相关信息写入到/var/lib/rpm目录下的数据库文件中。该数据库非常重要,如果软件升级必须依赖它,如版本比对就是从这个数据库中读取数据的。
RPM组成部分
RPM包含RPM数据库、RPM软件包文件、RPM命令三部分。
- RPM数据库
Linux系统中保留了当前安装软件的数据库,路径位于/var/lib/rpm,可使用file命令查看目录内容。

/var/lib/rpm目录中的文件全部都是数据库文件且为二进制。
- RPM软件包文件
RPM软件包与tar归档文件类似:tar文件含有要安装到系统上的文件,软件包除了tar中的信息还包含一个RPM包头,该包头提供了有关软件包的信息,如名称、安装大小及其内容的简短描述等。另软件包还包含了属性依赖信息,即为了使文件可被安装和使用,必须安装的其他软件包、可执行文件和库文件等。在Linux安装光盘中,软件包文件通常位于Packages目录中。软件包文件的名称通常由下列几条信息构成:
名称-版本-发行号.体系结构.rpm
以CentOS 7中MySQL为例

名称:mysql-community-common
版本:5.7.20
发行号:1
体系结构:el7.x86_64。el7代表CentOS 7.x系统,x86_64是指该软件是针对哪种CPU架构开发的。
- RPM命令
RPM命令是用来管理数据库的工具,如下所示:
| 命令选项 | 作用 |
|---|---|
| -i | 安装软件包 |
| -U,-F | 软件包升级 |
| -e | 删除软件包 |
| -q | 查询安装包 |
| -a | 查询的所有安装包 |
| -v | 显示安装的详细过程 |
| -h | 显示安装进度 |
| --checksig | 校验签名以确保其完整性和源发性 |
更多RPM命令解释可以使用man rpm进行查看
RPM安装
RPM包安装格式如下:
rpm -i rpm包的全路径及文件名
rpm -ivh rpm包的全路径及文件名
其中各参数解释如下:
- -i:代表安装
- -v:代表verbose,在安装过程中显示详细的信息
- -h:代表hash,在安装过程中将显示#表示安装进度
对于较大的RPM包,在安装时需要使用-ivh,可以方便查看在安装过程中的相应信息和进度。在安装过程出现warning时并不影响软件包的安装,出现error则无法继续安装,需要排错。
示例1:本地安装VSFTPD

在上面我们使用的是本地安装,如果RPM软件包不在本地时,如何安装?RPM其实也支持在线安装。
示例2:在线安装VSFTPD

可与rpm -i结合使用的参数如下所示:
| 命令选项 | 作用 |
|---|---|
| -h,--hash | 安装输出#代表安装进度 |
| -v,--verbose | 1个-v选项打印软件包名称,多个-v选项提供更多详细信息的输出 |
| --nodeps | 即使不符合安装前提条件,仍进行安装 |
| --replace-files | 安装时已有的文件会被新文件覆盖替换 |
| --force | 即使已经安装了软件包,也要进行安装 |
| --test | 不执行任何操作,只打印输出 |
| --noscripts | 不执行与RPM安装有关的任何脚本 |
| --prefix | 指定安装rpm包安装路径 |
RPM卸载
一旦安装了软件包,软件包文件则无关紧要了,该软件包现在就是本地计算机上面的一条数据库记录。因此,不再使用软件包文件名称,如vsftpd-3.0.2-22.el7.x86_64.rpm,而仅仅使用软件包名称,如vsftpd-3.0.2-22.el7.x86_64来指该软件包,使用
rpm -e packagename
进行删除软件包,其中-e代表earse。
说明1:packagename:可以包含版本等信息,但不能包含后缀名.rpm
说明2:rpm -e vsftpd-3.0.2-22.el7.x86_64(正确)
rpm -e vsftpd-3.0.2-22.el7.x86_64.rpm(错误)

RPM升级
使用RPM升级软件包非常方便简单,主要参数是-U,当然也可以直接写-Uvh或-Fvh,两者区别如下:
-Uvh:如果软件包没有安装,则直接安装,如果要安装的软件包是新的版本,则软件会进行自动更新为新的版本。
-Fvh:如果软件包没有安装,则不会安装,也即只能对已经安装的软件包进行升级

RPM查询
RPM软件包查询中与rpm -q package-name结合使用的一些选项和作用如下所示:
| 命令选项 | 作用 |
|---|---|
| -a | 查询所有已安装的软件包 |
| -f filename | 拥有文件filename的软件包 |
| -p packagefilename | 直接查询软件包文件packagefilename |
| -i | 软件包信息包头 |
| -l | 列出软件包所拥有的文件 |
| --requires | 安装包的先决条件 |
| --provides | 显示安装包提供的内容 |
| --scripts | 显示软件包的安装脚本 |
| -last | 按时间排序显示系统上安装的RPM包 |
1、查看已经安装的RPM包信息和安装的文件

2、查看RPM安装包的依赖项、提供的内容及最近安装包

本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:

Linux 基础教程 34-软件包管理-RPM的更多相关文章
- Linux基础四:软件包管理
四.软件包管理器: 1.概念 红帽有两款软件包管理器,分别是rpm和yum. 1.rpm软件包管理器 -> 用来安装单个包 -> .rpm文件 红帽的安装包文件,都放在Packag ...
- linux基础之程序包管理(rpm,yum)
一.rpm 安装:rpm { -i | --install } [ install-options ] PACKAGE_FILE... -v: 显示安装时的详细信息 -vv: 显示许多难以阅读的调试信 ...
- 嵌入式LINUX基础教程 第2版
嵌入式LINUX基础教程 第2版 目录 第1章 入门 11.1 为什么选择Linux 11.2 嵌入式Linux现状 21.3 开源和GPL 21.4 标准及相关组织 31.4.1 Linux标准基 ...
- [SQL基础教程] 3-4 对查询结果进行排序/ORDER BY
[SQL基础教程] 3-4 对查询结果进行排序/ORDER BY ORDER BY SELECT <列名1>,<列名2>,<列名2>... FROM ORDER B ...
- Spring Boot 2.x基础教程:事务管理入门
什么是事务? 我们在开发企业应用时,通常业务人员的一个操作实际上是对数据库读写的多步操作的结合.由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻 ...
- Linux 基础教程 35-软件包管理-YUM
YUM基础 使用RPM在Linux中安装.卸载软件或服务进会经常碰到RPM包的依赖,而我们在安装软件A时,提示依赖于软件B,安装软件B时又会出现提示依赖于软件C等一系列的依赖关系.这时大家会提 ...
- Linux速通08 网络原理及基础设置、软件包管理
使用 ifconfig命令来维护网络 # ifconfig 命令:显示所有正在启动的网卡的详细信息或设定系统中网卡的 IP地址 # 应用 ifconfig命令设定网卡的 IP地址: * 例:修改 et ...
- 软件包管理(rpm,yum)
软件包管理相关软件: 软件包管理器的核心功能: .制作软件包 .安装,卸载,升级,查询,效验 Redhat ,SUSE : RPM Debian :dpt 依赖关系; 前端工具;yum ,apt-ge ...
- Linux基础三(软件安装管理)
目录: 一.Linux 中软件包的分类 1.源码包 2.二进制包 3.源码包 4.软件安装的选择 二.软件安装之 RPM 1.背景知识 2.准备知识 3.安装升级与卸载 4.查询校验与提取 三.软件安 ...
随机推荐
- How to Configure Eclipse for Python --- 在eclipse中如何配置pydev
From: http://www.rose-hulman.edu/class/csse/resources/Eclipse/eclipse-python-configuration.htm Pytho ...
- sysbench 测试mysql性能
===== #1sysbench --test=oltp --oltp-table-size=10000 --mysql-db=test --mysql-user=root --mysql-passw ...
- vim自定义配置之常规设置
vimConfig/plugin/general-operation.vim "快速关闭 map <S-Q> :q<CR>:q<CR>:q<CR&g ...
- 十一、jdk命令之Jstatd命令(Java Statistics Monitoring Daemon)远程的监控工具连接到本地的JVM执行命令
目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...
- for循环以及作业要求
continue表示结束当前循环的意思: for i in range(0,10): if i <3: print("loop ",i) else : continue pr ...
- sql之强制索引
1.今天我遇到一个问题,在处理百万级数据查询的时候,一般查询会很慢. 2.第一时间想到是建立联合索引,但是数据库存在多条索引的情况下,索引的执行是全部执行. 3.所以这里要按照特定的索引执行,就必须使 ...
- 自己写了一个图片的马赛克消失效果(jQuery)
其中的一个效果: html代码: <h1>单击图片,产生效果</h1> <div class="box"></div> 插件代码: ...
- 全面解析python类的绑定方法与非绑定方法
类中的方法有两类: 绑定方法 非绑定方法 一.绑定方法 1.对象的绑定方法 首先我们明确一个知识点,凡是类中的方法或函数,默认情况下都是绑定给对象使用的.下面,我们通过实例,来慢慢解析绑定方法的应用. ...
- javascript的中的new
考察 ECMAScript 语言规范中 new 运算符的定义: The new Operator The production NewExpression : new NewExpression is ...
- Selenium Webdriver——处理Table
html table是由 table 元素以及一个或多个 tr.th 或 td 元素组成.如下: HTML源码如下: <html> <head> <meta http-e ...