一、yum 简介
yum 是一个用于基于 RPM(Red Hat Package Manager)的 Linux 发行版的包管理工具,全称为 Yellowdog Updater, Modified。它主要用于管理软件包的安装、卸载、更新和查询。
YUM相当于在PRM基础上进行了封装,使用YUM后底层还是调用PRM进行包安装。
具体来说,yum 的主要功能包括:
- 安装软件包:可以从远程仓库中安装所需的软件包,自动处理依赖关系。
yum install package_name
- 卸载软件包:可以卸载系统中的已安装软件包,同时自动处理相关依赖关系。
yum remove package_name
- 更新软件包:可以更新系统中已经安装的软件包到最新版本。
yum update
- 查询软件包:可以查询可用软件包、已安装软件包的信息,甚至查看某个软件包的文件列表。
yum list package_name
- 管理仓库:yum 还可以通过配置文件(如 /etc/yum.repos.d/ 下的 .repo 文件)来管理不同的远程仓库,指定软件包的来源。
yum 非常适合用在 CentOS、Red Hat Enterprise Linux(RHEL)、Fedora 等发行版中,可以有效简化软件包管理的过程。
二、yum工作原理
yum依赖于环境,依赖于服务端和客户端,允许跨网络。
- 先在
yum服务器上创建yum repository(仓库), - 在仓库中事先存储了众多
rpm包,以及包的相关的元数据文件(放置于特定目录repodata下), - 当
yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
三、实现安装yum并配置阿里云仓库
# 1.查看有没有安装yum
rpm -qa |grep yum
# 2.卸载
$ rpm -aq|grep yum|xargs rpm -e --nodeps
# 3.下载rpm包
wget http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/python-urlgrabber-3.10-10.el7.noarch.rpm
wget http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-cron-3.4.3-168.el7.centos.noarch.rpm
wget http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm
wget http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
wget http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm
# 4.安装rpm包
# 注意:yum-xxx-168.el7.centos.noarch.rpm 必须与 yum-plugin-fastestmirror-xxx.el7_8.noarch.rpm 同时安装
rpm -ivh --force --nodeps python-urlgrabber-3.10-10.el7.noarch.rpm
rpm -ivh --force --nodeps yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
rpm -ivh --force --nodeps yum-3.4.3-168.el7.centos.noarch.rpm yum-plugin-fastestmirror-1.1.31-54.el7_8.noarch.rpm
# 5.检验是否安装成功
yum
# 6.配置阿里云yum源
# 6.1 打开centos的yum文件夹
cd /etc/yum.repos.d/
# 6.2 下载阿里云配置仓库repo文件
wget http://mirrors.aliyun.com/repo/Centos-7.repo
# 6.3 备份系统原来的repo文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 6.4 替换系统原理的repo文件
mv Centos-7.repo CentOs-Base.repo
# 6.5 切换到配置目录下
cd /etc/yum.repos.d/
# 6.6 yum缓存清理,把之前的索引删掉
yum clean all
# 6.7 创建缓存,用刚配置好的源下载软件包的元数据和索引信息,并将它们存储在本地缓存中,加快操作速度减少网络访问
yum makecache
# 6.8 更新系统中已安装的软件包到最新版本,还同时升级软件和系统内核确保系统的稳定性和安全性
yum update
# 6.8.1 更新时候报错sos-3.9-5.el7.centos.12.noarch FAILED
# http://mirrors.aliyuncs.com/centos/7/updates/x86_64/Packages/sos-3.9-5.el7.centos.12.noarch.rpm:
# [Errno 14] curl#7 - "Failed connect to mirrors.aliyuncs.com:80; Connection refused" 正在尝试其它镜像。
# 解决办法:单独更新sos-3.9-5.el7.centos.12.noarch
# 6.8.2 下载sos-3.9-5.el7.centos.12.noarch
curl -O https://mirrors.cloud.tencent.com/centos/7/updates/x86_64/Packages/sos-3.9-5.el7.centos.12.noarch.rpm
# 6.8.3 手动安装sos-3.9-5.el7.centos.12.noarch
sudo rpm -Uvh sos-3.9-5.el7.centos.12.noarch.rpm
# 6.8.4 更新
yum update -y
# 6.9 检查看是否配置成功(其yum源是否为阿里云)
vim /etc/yum.repos.d/CentOs-Base.repo
四、yum配置文件
4.1、主配置文件/etc/yum.conf
[root@localhost ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever #yum下载的RPM包的缓存目录 $basearch代表硬件架构 $releasever系统版本比如7
keepcache=0 #是否保存缓存 0代表不保存,1代表保存
debuglevel=2 #调试级别(0-10),默认为2
logfile=/var/log/yum.log #日志文件位置
exactarch=1 #是否允许不同版本的rpm安装
obsoletes=1 #update的一个参数,是否可以允许旧版本的运行
gpgcheck=1 #是否验证GPG密钥,1表示验证
plugins=1 #是否允许插件,1代表允许
installonly_limit=5 #保存几个内核
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
# yum的repo配置文件中可用的变量:
# $releasever: 当前OS的发行版的主版本号,如:8,7,6
# $arch: CPU架构,如:aarch64, i586, i686,x86_64等
# $basearch:系统基础平台;i386, x86_64
# $contentdir:表示目录,比如:centos-8,centos-7
# $YUM0-$YUM9:自定义变量
4.2、仓库配置文件/etc/yum.repos.d/*.repo
yum仓库配置文件位置:/etc/yum.repos.d/*.repo文件扩展名为 .repo 。这些文件定义了Yum如何连接到软件仓库并下载软件包。
系统内默认的yum仓库,是centos官方的yum源(国外源),需要连通外网才可以使用。
客户端配置文件两个要求 :
- 必须在
/etc/yum.repos.d/这个目录下。 - 配置文件必须以
*.repo结尾。
[root@localhost ~]# ls /etc/yum.repos.d
CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo
# `yum`仓库配置文件格式:
[root@localhost yum.repos.d]# vim lkk.repo
[lkk] #仓库的描述
name=lkk #设置名称
baseurl=file:///mnt #设置链接地址,file://是本地源的固定格式
gpgcheck=0 #是否验证公钥,0表示无需验证
enabled=1 #开启此yum源
# yum仓库配置文件中baseurl的几种形式:
# 1. 本地源 : 本地目录 file://
# 2. FTP源 : FTP服务 ftp://
# 3. 网络源 : http:// 或 https://
安装yum出现问题
1.问题描述:CentOS7 报错 Repository base is listed more than once in the configuration... 和没有可用软件包 xxx的解决办法。
CentOS 7在使用yum时出现以下错误:
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
没有可用软件包 xxx。
2.解决办法:
# 1. 先进入软件源配置文件所在的目录下
cd /etc/yum.repos.d/
# 2. 执行rm -rf删除所有
rm -rf *
# 3. 执行
yum update
# 4. 重新设置yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
# 5. 重置yum 缓存
yum clean all && yum update && yum makecache