1 YUM简介
1.1 YUM简介
CentOS使用yum和dnf 解决rpm的包依赖关系。
YUM:rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具,CentOS 8 使用dnf代替了yum,不过保留了和yum的兼容性,配置也是通用的。
YUM 的前身是 YUP(Yellow dog Updater,Yellow dog Linux 的软件更新器),最初由 TSS 公司(Terra Soft Solutions,INC.)使用 Python 语言开发而成,后来由杜克大学(Duck University)的 Linux 开发队伍进行改进,命名为 YUM(Yellow dog Updater,Modified)。 要成功使用 YUM 机制来更新系统和软件,需要有一个包含各种 rpm 安装包文件及其依 赖软件的软件仓库(repository),提供软件仓库的服务器也称为“源”服务器。在客户机中只 要正确指定软件仓库的地址等信息,就可以通过对应的“源”服务器来安装或更新软件。
YUM(Yellow dog Updater,Modified):
- 基于RPM包构建的软件更新机制
- 可以自动解决依赖关系
- 所有软件包由集中到YUM软件仓库提供
1.2 yum工作原理
yum依赖于环境,依赖于服务端和客户端,允许跨网络。
Yum基于C/S模式:
- yum 服务器存放rpm包和相关包的元数据
- yum客户端访问yum服务器进行安装或查询等
Yum实现过程:
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
服务器(RPM包和元数据缺一不可):
- RPM包 (存放在包文件夹Packages中)
- 元数据(存放在元数据文件夹repodata中,其中包含:目录(软件的目录),软件的依赖关系,软件的分组)
#查看光盘中自带的Yum仓库,可以看到Packages文件夹和repodata文件夹: [root@localhost ~]# mount /dev/sr0 /mnt //将光盘挂载到/mnt/目录下 mount: /dev/sr0 写保护,将以只读方式挂载 [root@localhost ~]# ls /mnt //查看光盘内的包文件夹和元数据文件夹 CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL 复制代码
本地仓库类型:
- 光盘的仓库(基本仓库)
- epel 扩展仓库
1.3 如何实现安装服务
2 yum客户端配置
yum客户端配置文件
/etc/yum.conf #为所有仓库提供公共配置 /etc/yum.repos.d/*.repo #每个仓库的配置文件 复制代码
2.1 yum主配置文件
位置:/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(GNU Private Guard)密钥,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:自定义变量 复制代码
2.2 yum仓库配置文件
2.2.1 仓库配置文件说明
位置:/etc/yum.repos.d/*.repo
系统内默认的yum仓库,是centos官方的yum源(国外源),需要连通外网才可以使用。
[root@localhost yum.repos.d]# ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo [root@localhost yum.repos.d]# vim yuji.repo //yum仓库配置文件格式 [yuji] name=yuji #设置名称 baseurl=file:///mnt #设置链接地址,file://是本地源的固定格式 enabled=1 #开启此yum源 gpgcheck=0 #是否验证公钥,0表示无需验证 复制代码
yum仓库配置文件中baseurl的几种形式:
# 本地源 本地目录 file:// # FTP源 FTP服务 ftp:// # 网络源 http:// https:// 复制代码
2.2.2 baseurl 指向的路径
CentOS系统的yum源
#阿里云 https://mirrors.aliyun.com/centos/$releasever/ #腾讯云 https://mirrors.cloud.tencent.com/centos/$releasever/ #华为云 https://repo.huaweicloud.com/centos/$releasever/ #清华大学 https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/ 复制代码
EPEL的yum源
#阿里云 https://mirrors.aliyun.com/epel/$releasever/x86_64 #腾讯云 https://mirrors.cloud.tencent.com/epel/$releasever/x86_64 #华为云 https://mirrors.huaweicloud.com/epel/$releasever/x86_64 #清华大学 https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/x86_64 复制代码
更新源
http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/ 复制代码
2.3 日志文件
位置:/var/log/yum.log
[root@localhost yum.repos.d]# head -5 /var/log/yum.log //查看日志文件 Jan 19 10:55:29 Installed: tree-1.6.0-10.el7.x86_64 Feb 21 23:21:53 Installed: finger-0.17-52.el7.x86_64 Mar 19 17:10:29 Updated: 32:bind-license-9.11.4-26.P2.el7_9.9.noarch Mar 19 17:10:30 Updated: 32:bind-libs-lite-9.11.4-26.P2.el7_9.9.x86_64 Mar 19 17:10:30 Updated: 32:bind-libs-9.11.4-26.P2.el7_9.9.x86_64 复制代码
3 yum命令详解
命令 | 不加关键字 | 加入关键词、软件包、软件包组 |
yum list | 显示所有可用包 | 单个的可安装包 |
yum info | 显示所有可用包的信息 | 单个具体的信息 |
yum search | \ | 模糊查找所有的相关信息 |
yum whatprovides | \ | 精确查找 |
yum install | \ | 安装具体软件包 |
yum update | 所有软件升级,更新内核 | 具体软件升级 |
yum upgrade | 只更新软件包,但不更新内核 | 具体软件更新 |
yum remove | \ | 卸载具体软件 |
yum history | 查看当前yum操作历史 | \ |
yum history info | \ | 加序号列出某次事务的详细信息 |
yum history undo | \ | 加序号卸载序号里安装的软件 |
yum history redo | \ | 加序号重新执行序号里的操作 |
包组:
命令 | 不加关键字 | 加入关键词、软件包、软件包组 |
yum grouplist | 显示所有可用包组 | 显示具体的包组 |
yum groupinfo | 显示所有的包组具体信息 | 显示具体的包组的具体信息 |
yum groupinstall | \ | 安装具体软件包组 |
yum group update | 所有包组升级 | 具体包组升级 |
yum groupremove | \ | 卸载具体包组软件 |
小贴士:
当使用 “yum remove 软件名” 未将软件包卸载干净时,可以使用“yum history undo 序号”进行卸载,可以完整卸载整个软件包,没有残留。
4 yum仓库搭建方式
软件仓库的提供方式:
- 本地目录:file://绝对路径
- FTP服务:ftp://ip地址/站点里的路径
- HTTP服务:http://域名或者ip地址/站点里的路径
4.1 搭建本地yum仓库
搭建步骤:
步骤1、挂载光盘(/dev/sr0或/dev/cdrom都可以,/dev/cdrom是/dev/sr0的软链接)
[root@localhost ~]# mount /dev/sr0 /mnt //将光盘挂载到/mnt目录下 mount: /dev/sr0 写保护,将以只读方式挂载 [root@localhost ~]# df -Th //查看挂载是否成功 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 10G 4.0G 6.1G 40% / devtmpfs devtmpfs 897M 0 897M 0% /dev tmpfs tmpfs 912M 0 912M 0% /dev/shm tmpfs tmpfs 912M 9.1M 903M 1% /run tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sdb5 xfs 2.0G 33M 2.0G 2% /data/bb /dev/sda1 xfs 1014M 179M 836M 18% /boot /dev/sdb1 xfs 10G 33M 10G 1% /data/aa /dev/mapper/vg01-lvmail xfs 13G 33M 13G 1% /data/mail tmpfs tmpfs 183M 12K 183M 1% /run/user/42 tmpfs tmpfs 183M 0 183M 0% /run/user/0 /dev/sr0 iso9660 4.3G 4.3G 0 100% /mnt 复制代码
注意:mount命令是一次性挂载,退出当前终端或重启后就不存在了。永久挂载需要修改配置文件/etc/fstab。
步骤2、切换到 /etc/yum.repo.d/目录,将自带的仓库文件移走。
[root@localhost ~]# cd /etc/yum.repos.d/ //切换至/etc/yum.repos.d/目录 [root@localhost yum.repos.d]# ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo [root@localhost yum.repos.d]# mkdir aaa //创建一个名为aaa的新目录 [root@localhost yum.repos.d]# mv *.repo aaa //将yum仓库中以.repo结尾的文件移动到aaa中 [root@localhost yum.repos.d]# ls aaa 复制代码
步骤3、新建yum仓库文件。
[root@localhost yum.repos.d]# vim yuji.repo //新建yum仓库文件 [yuji] name=yuji #设置名称 baseurl=file:///mnt #设置链接地址,file://是固定格式,指向/mnt enabled=1 #开启此yum源 gpgcheck=0 #无需验证公钥 复制代码