1 所需工具介绍

  1. httpd:用于搭建http服务器
  2. createrepo:用于创建yum源
  3. yum-plugin-priorities:用于设置yum源的优先级

2 本源原理

  1. 利用httpd建立一个httpd服务器用于存放本地源的rpm包
  2. 利用createrepo建立本地rpm包的描述信息
  3. 并在/etc/yum.repos.d/中加入本地源的描述repo使得yum能够找到本地源
  4. 最后再修改优先级使得yum优先从本地源安装。

3 具体步骤

3.1 安装工具

yum install -y httpd
yum install -y createrepo
yum install -y yum-plugin-priorities



3.2 配置工具

3.2.1 配置httpd

systemctl start httpd.service //开启httpd服务
systemctl enable httpd.service //设置httpd自动启动



这个时候httpd就已经能够正常工作了,本机ip是172.16.30.101,那么访问http://172.16.30.101/可以看到

CentOS6 本地源 长久_本地源

3.2.2 配置本地源文件

httpd服务器的位置默认在/var/www/html 在其下建立一个文件夹tools放入wget.x86_64 0:1.14-10.el7_0.1.rpm包,然后执行createrepo ./ 对tools文件夹建立描述信息

cd /var/www/html
mkdir tools
cd tools
rz //上传repo文件(这里采用的是xshell的lrzsz工具)
createrepo ./ //创建描述信息



访问http://172.16.30.101/tools可以看到下图,其中repodata就是createrepo生成的描述信息

CentOS6 本地源 长久_本地源_02

3.2.3 创建yum repo文件

yum的repo路径默认在/etc/yum.repos.d/中,用vi创建repo文件,yum会自动读取这个路径下的所有repo作为安装包的安装源

vi /etc/yum.repos.d/local.repo



local.repo文件如下 //后为注释,不写入文件中

[tools] //源名称 随意取
name=tools //源描述 随意取
baseurl=http://172.16.30.101/tools/ //源地址 我们建立的http服务就可以用http地址
enabled=1 //源是否可用
gpgcheck=0 //时候检查gpg,因为没有认证所以写不检查
priority=1 //优先级,yum-plugin-priorities会用到,优先级越小越高




编辑原有的Centos-Base.repo每段后面加入优先级


vi /etc/yum.repos.d/CentOS-Base.repo


例如:


[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
priority=2 //优先级设置成2低于本地源,这样会优先从本地源下载




3.2.4 刷新yum缓存


yum clean all //清除yum信息
yum makecache //创建cache




到此本地源已经配置完毕了


3.3 验证


172.16.30.103上并没有安装wget,下面我们用本地源安装wget工具


3.3.1 远程传输repo到172.16.30.103


scp /etc/yum.repos.d/local.repo root@172.16.30.103:/etc/yum.repos.d/




3.3.2 登陆172.16.30.103执行


yum clean all       //清除yum信息 
yum makecache       //创建cache




3.3.3 172.16.30.103安装wget


yum install wget




我们能够看到,Repository已经解析到了本地的tools源,到此本地源已经搭建成功





CentOS6 本地源 长久_yum本地源_03




4 下载依赖


自己建立的库总有不全的时候,因为各种依赖的原因难以覆盖完全。解决方法很简单,在有网的环境下下载依赖包,更新本地库,然后就能彻底离线了。


以mysql为例,本地库不全的时候结果如下:




CentOS6 本地源 长久_本地源_04



可以看到大量的包需要从base中下载,无法实现真正离线安装,执行命令

yum install --downloadonly --downloaddir=/var/www/html/tools perl
yum install --downloadonly --downloaddir=/var/www/html/tools net-tools

依赖包就下载到本地的/vat/www/html/tools中

刷新源,重新尝试安装mysql可以看到

CentOS6 本地源 长久_yum本地源_05

这样就大功告成了

5 总结


网上还有很多别的教程,但有些遗留而且不够清晰,所以详细记录下。