程序包管理概述

在早期的Liux系统中,如果想要添加软件,必须获取该软件源代码,然后将其编译成二进制代码。再来运行,这种软件包通常是一个压缩包,如tar格式

获取压缩包安装软件并不困难,但是有一些明显的缺点:

  1. 获取软件的依赖软件
  2. 不知道相关软件的路径
  3. 删除时可能比较困难
  4. 更新时比较困难

为了解决从压缩包安装软件的困难,软件包从简单的压缩包,变成了更复杂的打包,比如:

  • RPM包,该包最初被称为Red Hat Package Manager,后被重命名为RPM。RPM是SUSE、Red Hat、Centos等的首选软件包格式
  • Deb包,基于 Debian GNU/Linux 的管理包文件,常用于基于 Debian 的发行版本 Linux ,如 Ubuntu、Linux mint、KNOPPIX 等

RPMDEB都是非常优秀的软件包管理工具,作用的Liux系统不同,我们因为学习的是Centos,所以我们重点介绍RPM

Liux系统管理员的主要职责之一是软件管理,包含以下常见工作

  • 安装应用程序
  • 更新应用程序
  • 给内核打补丁

我们需要一个合适的工具,查看并维护当前的软件及版本,Linux通常使用rpm用作软件管理,同时使用yum作为补充


RPM安装程序包

程序包的含义

RPM程序包就是文件容器,包含特定应用程序或应用程序相关的文件组
通常RPM程序包包含:

  • 二进制文件(可执行文件)
  • 安装脚本
  • 配置文件
  • 软件使用文档
  • 安装卸载命令
    注意:rpm包会依赖CPU类型来工作,如x86,x86_64,arm等

RPM数据库

RPM数据库存在本机的 /var/lib/rpm/ 目录,RPM数据库的作用如下

  1. 跟踪每个RPM中各文件的版本和位置
  2. 维护各文件的MD5校验和

查询已安装软件

使用命令 rpm -qi 软件名称,比如 rpm -qi firefox

查看当前系统所安装的软件包

  • rpm -qa |moremore 是为了分页显示
  • rpm -qa | grep vim 从显示结果中过滤出指定软件,这里过滤出包含vim的

安装软件包

1
2
3
4
5
rpm -i packagename 安装软件包
rpm -U packagename 升级软件包,如果原来没有安装,则安装
rpm -F packagename 只升级软件包,如果原来安装,而不会新安装

rpm -e 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
2
3
yum check-update //检查更新,只是检查
yum update 软件包名 //更新指定软件包
yum update // 更新所有软件包

维护yum缓存库
如果yum配置中使用的软件缓存,那么yum的缓存目录很容易装满,缓存目录中的所有数据都是可以被清理的,清理后,yum下次使用时会自动下载新的元数据,使用下面的命令可以进行清理

1
2
3
yum clean packages
yum clean metadata
yum clean all