目录
环境准备
以下实验需要准备两台虚拟主机,并关闭防火墙和SEliunx
给192.168.226.100修改主机名,作为服务主机
hostnamectl set-hostname server
给192.168.226.134 修改主机名,作为客户主机
hostnamectl set-hostname client
一. 通过镜像制作本地yum源
这个情况很少用,原理就是通过镜像文件制作本地yum源的过程包括将ISO镜像文件挂载到本地系统、复制其内容到本地目录、配置yum源以使用这些本地文件。
例如现在使用的mini版,包较少,那么就可以去复制一个较大镜像文件的rpm包给本地使用。
首先下载一个较大的镜像版本
将虚拟机关系后切换到刚较大的映像文件,然后正常开启虚拟机。
虚拟机上操作
挂载镜像
[root@server ~]# mount /dev/cdrom /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
备份原有yum
mkdir -p /etc/yum.repos.d/backup/ && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
创建修改yum配置文件
vim /etc/yum.repos.d/myyum.repo
#写入如下内容
[xaffff]
name=my repo
baseurl=file:///mnt
gpgcheck=0
enabled=1
参数解释:
[xaffff] #这是仓库的唯一ID(标识符)。
name=my repo #仓库的名称。
baseurl=file:///mnt #仓库的基本URL。
gpgcheck=0 #是否启用GPG签名检查。
enabled=1 #是否启用此仓库。
清理缓存
yum clean all
重载
yum makecache
列出系统上所有可用的和已启用的软件仓库
[root@server ~]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
源标识 源名称 状态
xaffff my repo 4,021
repolist: 4,021
现在就成功啦,可以使用镜像文件的包了。
二. 局域网远程yum源制作(企业案例)
操作系统:centos7.9
资源: CentOS-7-x86_64-DVD-2009.iso镜像
实验服务器两台:
192.168.137.100 (作为vsftpd服务端)
192.168.137.134 (客户端)
#首先测试两台主机可否ping通
#在192.168.137.100上操作
[root@server ~]# ping 192.168.226.134
#关闭防火墙
[root@server ~]# systemctl stop firewalld
#关闭selinux
[root@server ~]# setenforce 0
在192.168.137.143上操作:
[root@client ~]# ping 192.168.226.100
[root@client ~]# systemctl stop firewalld
[root@client ~]# setenforce 0
==========================================================
在192.168.168.226.100上操作制作本地yum源,作为yum服务端
[root@server ~]# yum install -y vsftpd createrepo
[root@server ~]# systemctl start vsftpd
#创建一个自定义目录,专门用作共享YUM源的目录
[root@server ~]# mkdir /var/ftp/yum
[root@server ~]# cd /var/ftp/
#复制一个仓库试验,这里用的就是前面挂载镜像文件的仓库,实际工作可以换成自己拷贝的仓库
[root@server ftp]# cp /mnt/Packages/* yum/
#在目标目录中生成 YUM 仓库的元数据
[root@server ftp]# createrepo yum/
==========================================================
yum客户端,在192.168.226.134上操作:
[root@client ~]# cd /etc/yum.repos.d/
#删除其他镜像仓库,防止验证实验,再工作中视情况而定
[root@client yum.repos.d]# rm -rf ./*
#创建新文件,加入如下配置,baseurl就是服务主机的仓库路径
[root@client yum.repos.d]# vim my.repo
[ftpYum]
name=centos
baseurl=ftp://192.168.226.100/yum
enabled=1
gpgcheck=0
[root@client yum.repos.d]# yum clean all
[root@client yum.repos.d]# yum makecache
[root@client yum.repos.d]# yum repolist
#找个有的包下载看是否可用
[root@client yum.repos.d]# yum install -y python-augeas
#在安装的源里可以看到是叫ftpYum的名字,证实部署成功。
三. 通过开启yum下载缓存功能制作本地yum源
制作自己的yum源:
打开Yum缓存功能:安装完软件之后,软件不会被删除(因为默认安装完之后,不会保留安装包)
[root@server ~]# vi /etc/yum.conf +3
#修改下面参数的值为1,软件会被保存到cachedir指定的目录下
keepcache=1
[root@server packages]# yum install -y zip net-tools wget
[root@server packages]# ll
总用量 1116
-rw-r--r-- 1 root root 312968 8月 23 2019 net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
-rw-r--r-- 1 root root 560272 5月 16 2019 wget-1.14-18.el7_6.1.x86_64.rpm
-rw-r--r-- 1 root root 266160 11月 21 2016 zip-3.0-11.el7.x86_64.rpm
自己制作yum源
#(把rpm安装包放到此目录里面)
[root@server ~]# mkdir /myyum
#把想用yum安装的软件包拷贝到目录下
[root@server ~]# cp /var/cache/yum/x86_64/7/base/packages/* /myyum/
#下载保证有createrepo工具
[root@server ~]# yum install -y createrepo
#此目录就可以作为yum源了。
[root@server ~]# createrepo /myyum
[root@server ~]# vim /etc/yum.repos.d/myyum.repo
[tty]
name=mytty
baseurl=file:///myyum
enabled=1
gpgcheck=0
[root@server ~]# yum repolist
#然后就可以看到叫mytty的缓存镜像仓库啦
四. 克隆yum源
在公司内网中,可能无法连接外部网络,这时需要我们将外部yum源中的包克隆到本地。
首先在服务主机server操作
#删除之前做的镜像源,方便后续实验的验证
[root@server ~]# rm -rf /etc/yum.repos.d/*
#下载同步一个阿里的源用作被克隆的
[root@server ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@server ~]# curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
[root@server ~]# yum clean all
[root@server ~]# yum makecache
#这次我们将源通过nginx来提供服务
[root@server ~]# yum install -y yum-utils epel-release
[root@server ~]# yum install -y nginx
[root@server ~]# cd /usr/share/nginx/html
[root@server html]# rm -rf *
#同步远程YUM到本地,这里就是同步阿里云的镜像仓库里的rpm包到本地,太多啦咱们测试下载几百个就可以啦
#这里我同步啦500多个来测试,如果中间停止,继续执行这个命令时会续接之前的进度执行
[root@server html]# reposync -r base -r epel -r extras -r updates
#创建 YUM 仓库元数据
[root@server ~]# createrepo base/
[root@server ~]# vim /etc/nginx/nginx.conf +43
#在配置文件第43行这里加入下面内容
location / {
root /usr/share/nginx/html;
autoindex on;
}
#重启nginx
[root@server ~]# systemctl restart nginx
==================================================================================
在客户端主机操作
[root@client ~]# vim /etc/yum.repos.d/myrepo.repo
[http-base-yum]
name=http-yum
baseurl=http://192.168.226.100/base
enabled=1
gpgcheck=0
#在客户端主机验证,用一个同步这500来个里有的,且依赖包也存在的,进行下载测试
[root@client ~]# yum install -y apr
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
http-base-yum | 2.9 kB 00:00:00
http-base-yum/primary_db | 263 kB 00:00:00
正在解决依赖关系
--> 正在检查事务
---> 软件包 apr.x86_64.0.1.4.8-7.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
=====================================================================================================================================================================================
Package 架构 版本 源 大小
=====================================================================================================================================================================================
正在安装:
apr x86_64 1.4.8-7.el7 http-base-yum 104 k
事务概要
=====================================================================================================================================================================================
安装 1 软件包
总下载量:104 k
安装大小:221 k
Downloading packages:
apr-1.4.8-7.el7.x86_64.rpm | 104 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : apr-1.4.8-7.el7.x86_64 1/1
验证中 : apr-1.4.8-7.el7.x86_64 1/1
已安装:
apr.x86_64 0:1.4.8-7.el7
完毕!
可以看到,从克隆的仓库里下载成功,并且我们访问server主机的web页面也可以看到这个我们克隆的仓库。