Linux软件安装(二)——RPM与YUM
Linux软件管理程序
上一篇文章介绍了使用源码编译的方式安装Linux软件,虽然操作比较简单,但仍有如下不足之处: 1. 源码需要经过编译成二进制文件后才能供系统运行,而编译过程相对比较繁琐; 2. 软件的管理比较散乱,软件的更新、卸载没有统一的管理者。 针对源码安装的缺点,Linux上出现了软件管理程序,统一管理所有软件的安装、更新、卸载。它将当前系统中所安装的软件信息存储起来,这些信息可供用户查询,了解当前系统的软件安装情况,从而方便软件的更新与卸载。
RPM和DPKG
当前Linux上有两款主流的软件管理程序,分别是:RPM和DPKG。 这两款软件均提供在线升级机制。
- RPM RPM全称为Red Hat Package Manager,是Red Hat公司研发的Linux软件管理程序。目前CentOS、SuSE、Fedora等操作系统使用它。 RPM使用YUM进行在线升级。
- DPKG dpkg由Debian Linux开发,目前使用该软件的操作系统有Ubuntu、B2D等。 dpkg使用apt-get进行在线升级。
PS:什么是“在线升级机制”? 一个软件往往会依赖其他软件的一些功能,那么在安装过程中,只有确保一个软件所依赖的所有软件都被安装后,该软件才能被正确安装。 而在线升级机制能够在软件安装过程中,若发现该软件的依赖软件尚未安装,则会自动从互联网中下载所依赖的软件。这就是在线升级机制。
这里以RPM为例,介绍软件管理程序的特性与使用。
使用RPM安装的优点
1.避免编译过程 由于RPM所提供的安装包是已经是经过编译的二进制文件,因此无需编译,直接将其存放至指定路径即可运行。 2.方便管理软件 RPM软件在安装过程中会将软件的相关信息记录在专门的数据库中,这些数据可方便今后的软件更新与卸载。用户也可查询本机软件安装情况。
使用RPM安装的缺点
软件的RPM安装包对操作系统的版本和硬件环境具有严格的要求,不同厂商的操作系统往往不能共享同一个安装包,甚至同一厂商不同版本的操作系统也无法共享同一个安装包。 为了解决RPM安装包无法共享的问题,Red Hat提供了SRPM。
什么是SRPM?
SRPM是Source Red Hat Package Manager的缩写。顾名思义,它是包含源码的RPM安装包。 和普通源码不同的是,SRPM中除了源码外还包含了供RPM安装时所需的软件信息。 当你要安装的软件并没有适合你的操作系统的版本时,你可以下载SRPM版本,先将SRPM中的源码编译成RPM,然后使用rpm命令安装该软件。 通常一个软件会同时发布rpm版本和srpm版本;srpm版本的文件名通常为xxx.src.rpm。
RPM的使用
1.安装
rpm -ivh 安装包的名字
i:install的缩写,表示安装
v:查看详细的安装过程
h:显示安装进度
注意点: - 因为安装软件是root的工作,因此rpm命令需要root权限。 - 安装完成后,软件的相关信息会被写入/var/lib/rpm中。未来软件升级、卸载、软件信息查询均通过该数据库进行。 - 软件会被安装到如下目录:
目录 |
|
---|---|
/etc |
存放软件的配置文件 |
/usr/bin |
存放软件的可执行文件(二进制文件) |
/usr/lib |
存放软件的动态函数库 |
/usr/share/doc |
存放软件的参考手册 |
/usr/share/man |
存放各个软件的man page文件 |
2.升级
rpm -Uvh 需要升级的软件名
-Uvh:若待升级的软件尚未安装,则直接安装
rpm -Fvh 需要升级的软件名
-Fvh:若待升级的软件尚未安装,则该软件不会被安装
3.查询
rpm -q 软件名 //判断该软件是否已被安装
rpm -qa //列出所有已安装的软件名
rpm -qi 软件名 //列出该软件的详细信息
rpm -ql 软件名 //列出该软件所有的文件
rpm -qc 软件名 //列出该软件的所有配置文件(即/etc/该软件相关的所有文件)
rpm -qd 软件吗 //列出该软件的所有帮助文件(即/usr/share/man/该软件相关的所有文件)
rpm -qR 软件名 //列出该软件所依赖软件的文件
rpm -qf 文件名 //找出该文件属于哪一个软件
rpm -qp[上述参数] 安装包名//列出安装包中指定的信息
查询的信息分为两类,一类是查询已被安装的软件的信息,另一类是查询尚未被安装的软件安装包的信息。 第一类信息通过rpm -q查询,第二类信息通过rpm -qp查询。
4.卸载
rpm -e 软件名
卸载一个软件非常方便,只需执行上述命令即可。 但一个软件所提供的动态函数库被其他软件引用,那么该软件将无法卸载,除非将引用该函数库的所有软件都卸载后才能卸载。
5.重建数据库
当/var/lib/rpm内的文件发生损坏时,可以通过如下命令修复:
rpm --rebuilddb
YUM的使用
RPM虽然省去了编译过程,并且提供数据库存储软件的信息,但仍然需要我们手动下载RPM安装包,而YUM的出现解决了这一问题。 较多软件的RPM安装包都存放在了YUM Server上,只要我们的计算机能连互联网,就能使用yum自动下载RPM安装包并安装软件。
1.查询
yum [-y/--installroot=xxx] [search/list/info/provides] [参数]
-y:在安装软件过程中若有询问,自动输入yes
--installroot=xxx:将xxx作为软件的安装目录
search:关键词搜索软件信息,后面需要加上关键词
list:列出yum管理的所有软件名称与版本,类似于rpm -qa
info:同上,类似于rpm -qi
provides:从文件中搜索软件,类似于rpm -qf
2.安装
yum install 软件名
3.升级
yum update 软件名
若需升级整个系统,直接yum update即可。
4.卸载
yum remove 软件名
- 介绍linux下利用编译bash设置root账号共用的权限审计设置
- 分享一例脚本发版和tomcat重启脚本
- 2018年小程序的红利趋势预测,或许你将成为下个富翁
- 分布式监控系统Zabbix-3.0.3-完整安装记录(5)-邮件报警部署
- label自定义的惨痛教训
- 解析空白符(空白,制表)分隔的字串
- 获取可视区域高度赋值给div(解决document.body.clientHeight的返回值为0的问题)
- 根据rpt文件打印报表
- 请善待你身边的“人工智能”
- Java8新日期处理API
- 从MapX到MapXtreme2004[8]-加入文字
- Vue-cli教程
- 动态加载控件
- 一个可以解析嵌套IIF语句的代码
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 贷款诈骗 x 摸版0day + 实战预警脚本
- 你不知道的 Linux 使用技巧
- 一文详解 Websocket 的前世今生
- 实例 | 教你用Python写一个电信客户流失预测模型
- OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测
- 看了这个总结,其实 Matplotlib 可视化,也没那么难!
- 使用OpenCV进行模糊检测(拉普拉斯算子)
- 利用opencv对图像进行长曝光
- 总说手机没有“好壁纸”,Python一次性抓取500张“美女”图片,够不够用!
- KEDA发布2.0(Beta)|来一个伸缩测试
- pandas入门:Series、DataFrame、Index基本操作都有了!
- 这几个用 Pyecharts 做出来的交互图表,领导说叼爆了!
- 手把手教你用 Python 搞定网页爬虫!
- 为并发而生的 ConcurrentHashMap,基于 Java8 分析
- 使用Kustomize定制Helm Chart