CentOS安装包管理学习
程序包管理概述
在早期的Liux系统中,如果想要添加软件,必须获取该软件源代码,然后将其编译成二进制代码。再来运行,这种软件包通常是一个压缩包,如tar格式
获取压缩包安装软件并不困难,但是有一些明显的缺点:
- 获取软件的依赖软件
- 不知道相关软件的路径
- 删除时可能比较困难
- 更新时比较困难
为了解决从压缩包安装软件的困难,软件包从简单的压缩包,变成了更复杂的打包,比如:
- RPM包,该包最初被称为Red Hat Package Manager,后被重命名为RPM。RPM是SUSE、Red Hat、Centos等的首选软件包格式
- Deb包,基于 Debian GNU/Linux 的管理包文件,常用于基于 Debian 的发行版本 Linux ,如 Ubuntu、Linux mint、KNOPPIX 等
RPM与DEB都是非常优秀的软件包管理工具,作用的Liux系统不同,我们因为学习的是Centos,所以我们重点介绍RPM
Liux系统管理员的主要职责之一是软件管理,包含以下常见工作
- 安装应用程序
- 更新应用程序
- 给内核打补丁
我们需要一个合适的工具,查看并维护当前的软件及版本,Linux通常使用rpm用作软件管理,同时使用yum作为补充
RPM安装程序包
程序包的含义
RPM程序包就是文件容器,包含特定应用程序或应用程序相关的文件组
通常RPM程序包包含:
- 二进制文件(可执行文件)
- 安装脚本
- 配置文件
- 软件使用文档
- 安装卸载命令
注意:rpm包会依赖CPU类型来工作,如x86,x86_64,arm等
RPM数据库
RPM数据库存在本机的 /var/lib/rpm/
目录,RPM数据库的作用如下
- 跟踪每个RPM中各文件的版本和位置
- 维护各文件的MD5校验和
查询已安装软件
使用命令 rpm -qi 软件名称
,比如 rpm -qi firefox
查看当前系统所安装的软件包
rpm -qa |more
加more
是为了分页显示rpm -qa | grep vim
从显示结果中过滤出指定软件,这里过滤出包含vim的
安装软件包
1 | rpm -i packagename 安装软件包 |
注意: 使用rpm安装软件包,必须先完整的安装软件包的依赖,才能安装软件。但软件的依赖通常比较多,所以一般使用更优化的工具yum来安装
yum
YUM(Yellowdog Update Modified) 项目着手解决RPM软件包依赖的问题,主要作用是将RPM不再视为单一软件包,而是视为一个软件库
借助软件库,安装软件的工程师不再解决依赖问题,而是由LInux发行版的经销商来解决。发行版经销商将Linux发行版中每个软件包所需的所有组件都加入到软件库,yum的软件库可以放在WEB服务器,FTP服务器的一个目录甚至本地介质中,本地目录中,然后将软件库配置到/etc/yum.conf
中,或者 /etc/yu.repos.d
目录下的文件中
yum工作原理
yum基本语法如下
1 | yum [options] command |
比如我们要安装火狐浏览器
1 | yum install firefox |
用户只需要知道软件名,而不用知道完整的安装包路径或者安装包全称
yum工作流程
/etc/yum.conf
是yum的配置文件,当使用yum时,会检查此文件,CentOS7的文件默认如下

搜索软件
1 | yum search 软件名 |
比如搜索软件 editor
输入 yum search editor
,搜索到了我们就可以选择需要的使用 yum install
来安装
查看软件信息
1 | yum info 软件名 |
如果知道一个命令,但是不知道软件名,可以查询这个命令来获取软件名
1 | yum provides netstat |

通过查询,可以发现,netstat
命令在net-tools软件中
查看软件包安装依赖
1 | yum deplist 软件名 |
比如查看 net-tools 的依赖 yum deplist net-tools
安装软件
1 | yum install xxxxx |

删除软件
只会删除列出的软件包,不会删除所有
1 | yum erase xxxxx |
查看yum历史记录
1 | yum history |

争对历史记录我们还可以查看具体的信息,使用下面的命令
1 | yum history info 2 |
2是yum history中的id
我们还可以彻底还原,删除history 2 中的操作
1 | yum history undo 2 |
更新软件包
1 | yum check-update //检查更新,只是检查 |
维护yum缓存库
如果yum配置中使用的软件缓存,那么yum的缓存目录很容易装满,缓存目录中的所有数据都是可以被清理的,清理后,yum下次使用时会自动下载新的元数据,使用下面的命令可以进行清理
1 | yum clean packages |