目录
3.2仓库设置文件/etc/yum.repos.d/*.repo
1、Yum概述
YUM(Yellow dog Updater,Modified):
基于RPM包构建的软件更新机制
可以自动解决依赖关系
所有软件包由集中到YUM软件仓库提供
2、Yum实现过程
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
yum依赖于环境,依赖于服务端和客户端,允许跨网络
客户端:
配置文件
服务端:
RPM包(存放在包文件夹Packages中)
元数据(存放在元数据文件夹repodata中,其中包含:目录(软件的目录),软件的依赖关系,软件的分组)
最终形成两个文件夹Packages(包文件夹一般取名packages)和repodata(元数据文件夹)
仓库类型:
光盘的仓库(基本仓库)
epel 扩展仓库
3、Yum配置文件
3.1yum主配置文件/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 //调试级别
logfile=/var/log/yum.log //日志文件位置
exactarch=1 //是否允许不同版本的rpm安装
obsoletes=1 //update的参数,是否允许旧版本的运行
gpgcheck=1 //验证密钥,1表示验证
plugins=1 //是否允许插件,1代表允许
installonly_limit=5 //保存几个内核 5代表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:自定义变量
3.2仓库设置文件/etc/yum.repos.d/*.repo
4、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 | \ | 卸载具体包组软件 |
5、源地址
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/
6、搭建仓库的方式
软件仓库的提供方式
- 本地目录:file://绝对路径(file:///mnt此处第三个/为根目录)
- HTTP服务: http://域名或者ip地址/站点里的路径
- FTP服务:ftp://ip地址/站点里路径
6.1搭建本地yum仓库
(1)将光驱中的镜像文件进行挂载(先将虚拟机的光盘载入)
[root@localhost media]# cd /mnt/ //进入mnt
[root@localhost mnt]# ls //查看mnt下的文件
[root@localhost mnt]# mount /dev/sr0 /mnt //挂载到mnt目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost mnt]# cd /etc/yum.repos.d/ //进入etc目录下的yum.repos.d
[root@localhost yum.repos.d]# mkdir bak //创建bak文件夹
[root@localhost yum.repos.d]# mv *.repo bak/
//将yum.repos.d下的所有以.repo结尾移动至bak目录下
[root@localhost yum.repos.d]# ls //查看yum.repos.d的文件
bak
(2)新建yum仓库
[root@localhost yum.repos.d]# vim abc.repo //新建并编辑abc.repo
[abc]
name=abc //仓库名
baseurl=file:///mnt //设置链接地址
gpgcheck=0 //进入不需验证
enabled=1 //开机自启
(3)清理缓存
[root@localhost yum.repos.d]# yum clean all && yum makecache //清理缓存并重新建立元数据
已加载插件:fastestmirror, langpacks
正在清理软件源: abc
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
已加载插件:fastestmirror, langpacks
abc | 3.6 kB 00:00:00
(1/4): abc/group_gz | 156 kB 00:00:00
(2/4): abc/filelists_db | 3.1 MB 00:00:00
(3/4): abc/primary_db | 3.1 MB 00:00:00
(4/4): abc/other_db | 1.2 MB 00:00:00
Determining fastest mirrors
元数据缓存已建立
6.2搭建阿里云仓库(http方式外网环境)
国外云仓库比较慢,可以使用阿里云仓库代替
- 切换到 /etc/yum.repo.d/目录,将自带的仓库文件移走
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv *.repo bak/
[root@localhost yum.repos.d]# ls
bak
- 新建yum仓库
[root@localhost yum.repos.d]# vim al.repo
[ali] //阿里云centos yum仓库
name=aliyun
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/ //变量参见主配置文件
gpgcheck=0
[epel] //epel源仓库
name=epel
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
gpgcheck=0
[update] //更新包仓库
name=update
baseurl=https://mirrors.aliyun.com/centos/7/updates/x86_64/
gpgcheck=0
- 清理缓存建立元数据
6.3内网环境下http搭建yum仓库
由于是内网环境,虚拟机全部设为仅主机模式,(如何设置仅主机模式可参考DHCP原理与配置)无法连接外部网络如果想要下载httpd服务则需要搭建一个本地yum仓库
- 服务端搭建本地yum仓库下载httpd服务
[root@localhost media]# cd /mnt/ //进入mnt
[root@localhost mnt]# ls //查看mnt下的文件
[root@localhost mnt]# mount /dev/sr0 /mnt //挂载到mnt目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost mnt]# cd /etc/yum.repos.d/ //进入etc目录下的yum.repos.d
[root@localhost yum.repos.d]# mkdir bak //创建bak文件夹
[root@localhost yum.repos.d]# mv *.repo bak/
//将yum.repos.d下的所有以.repo结尾移动至bak目录下
[root@localhost yum.repos.d]# ls //查看yum.repos.d的文件
bak
[root@localhost yum.repos.d]# vim abc.repo //新建并编辑abc.repo
[abc]
name=abc //仓库名
baseurl=file:///mnt //设置链接地址
gpgcheck=0 //进入不需验证
enabled=1 //开机自启
[root@localhost yum.repos.d]# yum clean all && yum makecache //清理缓存建立元数据
- 服务端下载http服务
[root@localhost yum.repos.d]# yum install httpd//安装http服务
- 服务端进入/var/www/html/添加挂载目录centos7,将光驱挂载到centos7目录下(也可以将光驱内的所有文件包复制到centos目录下)
[root@localhost yum.repos.d]# cd /var/www/html/
[root@localhost html]# mkdir centos7
[root@localhost html]# ls
centos7
[root@localhost html]# umount /mnt/
[root@localhost html]# df -h
[root@localhost html]# mount /dev/sr0 /var/www/html/centos7/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost html]# ls centos7/
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
- 服务端关闭防火墙,开启http服务
[root@localhost html]# systemctl stop firewalld.service
[root@localhost html]# setenforce 0
[root@localhost html]# systemctl start httpd.service
- httpd提供网页服务,所以在客户端搜索服务器IP地址+共享目录(192.168.192.100/centos7)可以查看到共享出去的文件夹centos7