Linux基础之(yum管理软件包)

「这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战


YUM基本介绍

什么是YUM

yumRedHatcentos系统中的软件包管理器。它能够通过互联网下载.rpm格式包进行安装,并能自动处理其依赖间关系,无须繁琐地一次次下载安装。

什么是YUM源

要使用yum命令工具安装更新软件,需要有一个包含各种rpm软件包的仓库,这个软件仓库我们一般称为yum源。当然这个源可以是本地仓库、也可以是网络仓库。

YUM配置文件

  • centoS7的配置文件

    [root@web ~]# vim /etc/yum.conf
    cachedir=/var/cache/yum/$basearch/$releasever	#缓存目录
    keepcache=0						#缓存软件包,1启动日关闭
    debuglevel=2					#调试级别
    logfile=/var/log/yum.log		#日志记录位置
    exactarch=1						#检查平台是否兼容
    obsoletes=1						#检查包是否废弃
    gpgcheck=1						#检查来源是否合法,需要有制作者的公钥信息
    plugins=1
    installonly_limit=5				#同时可以安装5个软件包、最小为2,设置为0或者1则不限制
    
    # metadata_expire=60m			#每小时手动检查元数据
    # in /etc/yum.repos.d			#包含repos.d目录中的.repo文件
    复制代码

配置YUM源示例

系统默认的源是国外提供,需要替换为国内的源

  • 配置阿里yum

    [root@web ~]# wget -o /etc/yum .repos.d/CentOS-Base.repo \
    http://mirrors.aliyun.com/repo/Centos-7.repo
    复制代码
  • 配置第三方yum源(EPEL)

    [root@web ~]# wget -O /etc/yum.repos.d/epel.repo \
    http://mirrors.aliyun.com/repo/epel-7.repo
    复制代码
  • Nginx官方源,Nginx最好使用官方的yum源来安装软件

    [root@web ~]# vim /etc/yum.repos.d/nginx.repo
    [nginx]
    name=nginx repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
    复制代码

PS:源查找方式基本一致,DockerNginx.openstackELKStack

YUM日常操作

yum查询软件包

  • 使用yum list查询所有仓库中的所有软件包

    [root@web ~]# yum list
    [root@web ~]# yum list |grep ftp
    复制代码
  • 使用yum list installed查询所有已安装至系统中的软件包

    [root@web ~]# yum list installed
    复制代码
  • 使用yum provides查询系统命令来自于哪个软件包

    [root@web ~]# yum provides cd
    [root@web ~]# yum provides sl
    复制代码

yum安装软件包

  • 使用yum install通过仓库获取软件包进行安装

    # 交互
    [root@web ~]# yum install vsftpd
    
    # 非交互
    [root@web ~]# yum install vsftpd -y
    复制代码
  • 使用yum localinstall安装本地的rpm包,如果rpm包存在依赖,会自动查找当前系统上已有的仓库解决依赖关系

    [root@web ~]# yum install https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/samba-4.8.3-4.el7.x86_64.rpm
    
    # yum localinstall直接安装本地的rpm包,会自动查找当前系统上已有的仓库解决依赖关系
    [root@web ~]# yum localinstall samba-4.8.3-4.el7.x86_64.rpm -y
    复制代码

yum重装软件包

当我们安装好服务后,如果不小心删除了服务的配置文件,此时可以通过重装的方式修复。

  • 首先删除vsftpd配置主文件

    [root@web ~]# rpm -qc vsftpd
    [root@web ~]# rm -f /etc/vsftpd/vsftpd.conf
    复制代码
  • 使用yum reinstall对软件进行重新安装

    [root@web ~]# yum reinstall vsftpd
    复制代码
  • 检查vsftpd服务配置文件是否恢复,以及软件是否能正常使用。

    [root@web ~]# rpm -qc vsftpd
    /etc/logrotate.d/vsftpd
    /etc/pam.d/vsftpd
    /etc/vsftpd/ftpusers
    /etc/vsftpd/user_list
    /etc/vsftpd/vsftpd.conf
    复制代码

yum更新软件包

  • 对比Linux已安装的软件和yum仓库中的软件,有哪些需要升级

    [root@web ~]# yum check-update
    复制代码
  • 更新acl软件

    [root@web ~]# yum update acl -y
    复制代码
  • 更新整个系统所有的软件,包括内核(通常刚装完系统会进行执行)

    [root@web ~]# yum update -y
    复制代码

yum删除软件包

[root@web ~]# yum remove samba -y
复制代码

yum管理组包

  • 使用yum groups install安装一整个组的软件

    [root@web ~]# yum groups list
    [root@web ~]# yum groups install Development tools Compatibility libraries Base Debugging Tools
    复制代码
  • 使用yum groups remove删除包组

    [root@web ~]# yum groups remove -y Base
    复制代码

yum管理仓库

  • 列出yum repolist源可用的软件仓库

    [root@web ~]# yum repolist
    [root@web ~]# yum repolist all	#查看所有的仓库
    复制代码
  • 通过yum-config-manager启用和禁用仓库

    # Centos7
    [root@web ~]# yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm -y
    
    [root@web ~]# yum repolist all | grep mysql
    [root@web ~]# yum-config-manager --disable mysql80-community	# 关闭仓库
    [root@web ~]# yum-config-manager --enable mysql80-community		# 启用仓库
    复制代码

PS:本质都是在修改repo文件中的enable参数值0不启用1启用

yum管理历史记录

当我们删除了某个软件时,希望撤销删除的操作,可以使用yum history undo

  1. 删除httpd软件,然后查看操作记录

    [root@web ~]# yum remove httpd -y
    [root@web ~]# yum history
    复制代码
  2. 使用yum history undo Number撤销

    [root@web ~]# yum history info N
    [root@web ~]# yum history undo N
    复制代码

yum缓存软件包

  • 缓存rpm包方式一、通过修改yum全局配置文件

    [root@web ~]# vim /etc/yum.conf
    [main]
    cachedir=/var/cache/yum/$basearch/$releasever
    keepcache=1		#启动缓存
    
    [root@web ~]# yum install lrzsz -y
    [root@web ~]# find /var/cache/yum/ -type f -name "*.rpm"
    复制代码
  • 缓存rpm包方式二、通过yum下载该软件包至本地,不进行安装

    [root@web ~]# yum install httpd -y \
    --downloadonly \
    --downloaddir=/opt
    复制代码
  • 如果缓存的数据包太多,可以使用yum清除缓存

    # 清理所有yum缓存信息,包括缓存的软件包
    [root@web ~]# yum clean all
    
    # 仅清理所有缓存的软件包
    [root@web ~]# yum clean packages
    复制代码