Linux localmirrors

Centos基于ISO镜像搭建本地源/HTTP源

Yum server源

YUM源我知道的有如下几类

Base:相当于下载光盘里的DVD1

Extra:相当于下载光盘里的DVD2

Epel:Epel官方获取的源

elrepo: 我更新CentOS内核使用的

Yum源对应目录里一家有两个重要的目录Packages和repodata,其中Packages上存放的是yum安装的rpm包。repodata中包含一些.xml的文件,它是yum索引文件,包含rpm包的信息,依赖关系等,yum的自动安装依赖于此配置文件。repomd.xml #这个文件为MD5校验信息。

repodata 目录下都有filelist ,primary ,other, 记录软件包文件列表。

那么不管采用何种方式配置的YUM源,都会有Packages目录和包含.xml文件的repodata目录。无论搭建什么样的服务器(web,ftp,nfs,samba)只要共享的目录对应的是可用yum源即可

注意 在windows下解压镜像发现repodata中的后缀总是缺失。在Linux下挂载倒是没问题

1 使用本地光盘搭建

首先挂载镜像

1
[root@bogon ~]# mkdir /mnt/repo
2
[root@bogon ~]# mount /dev/cdrom /mnt/repo/

增加配置文件/etc/yum.repos.d/local.repo

1
[RHEL-LOCAL] #源的名称自己定义
2
name=rhel54 #源的名字,自己定义
3
baseurl=file:///mnt/repo #源的路径支持http、file、https、ftp等
4
gpgcheck=1 #是否进行gpg文件检查。建议开启
5
enabled=1 #是否启用
6
gpgkey=file:///mnt/repo/RPM-GPG-KEY-CentOS-7 #指定gpg文件
7
priority=1 #设置优先级

注释掉无关源。更新缓存

1
yum clean all
2
yum makecache

2 使用HTTP搭建

我这里为了方便直接就使用了python的SimpleHTTPServer模块

文件可以挂载镜像然后复制到指定目录即可

1
[root@bogon ~]# python -m SimpleHTTPServer
2
Serving HTTP on 0.0.0.0 port 8000 ...

增加配置文件/etc/yum.repos.d/local.repo

1
[centos-local]
2
name=centos-local
3
baseurl=http://9.9.9.66:8000/
4
gpgcheck=1
5
gpgkey=http://9.9.9.66:8000/RPM-GPG-KEY-CentOS-7
6
enable=1

注释掉无关源。并且执行以下操作

1
[root@bogon repo]# yum clean all
2
Loaded plugins: fastestmirror
3
Cleaning repos: centos-local
4
Cleaning up everything
5
Cleaning up list of fastest mirrors
6
[root@bogon repo]# yum makecache
7
Loaded plugins: fastestmirror
8
centos-local                                                                                 | 3.6 kB  00:00:00
9
10
(1/4): centos-local/group_gz                                                                 | 155 kB  00:00:00
11
12
(2/4): centos-local/filelists_db                                                             | 3.0 MB  00:00:00
13
14
(3/4): centos-local/primary_db                                                               | 3.0 MB  00:00:00
15
16
(4/4): centos-local/other_db

3 使用同步更新源

我这里使用的是中科大和清华的同步源,大致大小为

1
16G	ambari
2
87G	archlinux
3
61G	archlinuxcn
4
73G	centos
5
41K	config
6
45G	elrepo
7
49G	epel
8
512	exclude.list
9
512	exgentoo.list
10
261G	gentoo
11
14G	lfs
12
91M	LFS-doc
13
6.4G	LFS-LiveCD
14
1.5G	openvas
15
14G	zabbix

贴出来同步脚本

localmirror.sh

1
#!/bin/bash
2
3
mkdir -p CentosRepo
4
#epel
5
rsync -Ravz --exclude-from=./exclude.list rsync://mirrors.tuna.tsinghua.edu.cn/epel/  `pwd`/CentosRepo/epel/
6
7
#centos \
8
rsync -aRvz --exclude-from=./exclude.list rsync://mirrors.tuna.tsinghua.edu.cn/centos/ `pwd`/CentosRepo/centos
9
10
#archlinux
11
rsync -aRvz  rsync://mirrors.tuna.tsinghua.edu.cn/archlinux/   `pwd`/CentosRepo/archlinux
12
rsync -aRvz  rsync://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/ `pwd`/CentosRepo/archlinuxcn
13
14
#lfs
15
rsync -aRvz  rsync://mirrors.ustc.edu.cn/lfs/  `pwd`/CentosRepo/lfs
16
17
#gentoo
18
rsync -aRvz --exclude-from=./exgentoo.list rsync://mirrors.ustc.edu.cn/gentoo/ `pwd`/CentosRepo/gentoo/
19
20
21
#centos kernel update
22
rsync -aRvz rsync://mirrors.tuna.tsinghua.edu.cn/elrepo/ `pwd`/CentosRepo/elrepo
23
24
#zabbix
25
rsync -aRvz rsync://mirrors.tun了一个独立博客,想到了这个方法,使用之后真的特别简洁。为了更直观地说明,奉上使用这种方法不同时候的流a.tsinghua.edu.cn/zabbix/ `pwd`/CentosRepo/zabbix
26
27
#openvas
28
rsync -aRvz  rsync://feed.openvas.org:/scap-data  `pwd`/CentosRepo/openvas/scap-data
29
30
rsync -aRvz  rsync://feed.openvas.org:/cert-data `pwd`/CentosRepo/openvas/cert-data
31
32
rsync -aRvz  rsync://feed.openvas.org:/nvt-feed  `pwd`/CentosRepo/openvas/nvt-feed

exgentoo.list

1
alpha
2
arm
3
arm64
4
bsd
5
hppa
6
ia64
7
m68k
8
mips
9
ppc
10
prefix
11
s390
12
sh
13
sparc
14
snapshots
15
10.1
16
11.0
17
11.2
18
12.0
19
12.1
20
20121221
21
20140826
22
20160514
23
20160704
24
autobuilds

exclude.list

1
SRPMS
2
aarch64
3
ppc64
4
ppc64le
5
isos
6
drpms
7
debug
8
atomic
9
cloud
10
virt
11
storage
12
sclo
13
testing
14
paas

可以写成定时计划这样每天定期更新

4 注意事项

①. 注意 在windows下解压镜像发现repodata中的后缀总是缺失。在Linux下挂载倒是没问题

②. rh6.4以下baseurl指定的是镜像路径下的Server文件夹

1
[RHEL-LOCAL]
2
name=rhel54
3
baseurl=file:///media/rhel5/Server
4
gpgcheck=0
5
enabled=1

③. rh6.4以上baseurl指定的是整个镜像文件根目录

1
[RHEL-LOCAL]
2
name=rhel64
3
baseurl=file:///media/rhel5/
4
gpgcheck=0
5
enabled=1

④. 测试 RedHat 5.4、RedHat 6.5、 CentOS7、CentOS7-1611都可以

⑤. 如果使用其他源更新以后再用光盘镜像挂载会出现一些问题

我使用的一台测试机器CentOS7-1611-mini使用官方源update以后使用光盘源安装Gnome 桌面报如下错误

1
Error: Package: 1:NetworkManager-bluetooth-1.4.0-12.el7.x86_64 (centos-local)
2
           Requires: NetworkManager(x86-64) = 1:1.4.0-12.el7
3
           Installed: 1:NetworkManager-1.4.0-14.el7_3.x86_64 (@updates)
4
               NetworkManager(x86-64) = 1:1.4.0-14.el7_3