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 |