linux 搭建 本地源

搭建一个本地的centos源

安装软件

crewaterepo是用于创建源用的,httpd是对外提供服务,rsync用于从外网同步源

1
2
# yum install crewaterepo
# yum install rsync httpd

同步源

localpath下载的rpm包放置位置
mirror从哪里同步源
cat sync_repo.sh:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
localpath="/var/www/html/mirrors/CentOS"
#mirror="mirrors.hustunique.com::centos"
mirror="mirrors.tuna.tsinghua.edu.cn::centos"
rsync="rsync -avzH --delete"
verlist="7"
baselist="centosplus extras fasttrack os updates"
archlist="x86_64"
for ver in $verlist
do
for base in $baselist
do
for arch in $archlist
do
remote=$mirror/$ver/$base/$arch/
mkdir -pv $localpath/$ver/$base/$arch/
$rsync $remote $localpath/$ver/$base/$arch/
done
done
done

因为耗时较长,可以采用后台运行:

1
nohup ./sync_repo.sh &

启动服务

因为下载的源放在/var/www/html 目录下, 这是http的默认目录,所以不需要做任何httpd的配置

1
# systemctl start httpd

创建源索引

1
# createrepo /var/www/html/mirrors/CentOS/7/

配置访问本地源

cat /etc/yum.repos.d/local.repo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[base]
name=Base repo
baseurl=http://本地源IP/mirrors/CentOS/7/os/x86_64
enabled=1
gpgcheck=0
[updates]
name=updates repo
baseurl=http://本地源IP/mirrors/CentOS/7/updates/x86_64
enabled=1
gpgcheck=0
[extras]
name=extras repo
baseurl=http://本地源IP/mirrors/CentOS/7/extras/x86_64
enabled=1
gpgcheck=0
[centosplus]
name=centosplus repo
baseurl=http://本地源IP/mirrors/CentOS/7/centosplus/x86_64
enabled=1
gpgcheck=0

添加额外软件源如ceph

因为ceph需要从epel里下载依赖,所以我们首先需要把epel源配置:

1
# yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

然后创建临时目录/root/tmp, 把ceph相关的依赖都下载到/root/tmp下:

1
2
# mkdir /root/tmp
# yum install --downloadonly ceph --downloaddir=/root/tmp

在/var/www/html/mirrors/CentOS/7/ 下创建目录ceph,然后把/root/tmp下的rpm包mv到其下:

1
2
# mkdir /var/www/html/mirrors/CentOS/7/ceph
# mv /root/tmp/* /var/www/html/mirrors/CentOS/7/ceph

最后更新源索引:

1
# createrepo /var/www/html/mirrors/CentOS/7/ceph

我们可以在浏览器输入:本地源ip/mirrors 就能看到所有rpm了